Oracle

為沒有 DB_DOMAIN 的數據庫創建 Oracle DB LINK

  • January 3, 2022

我正在嘗試在這兩個數據庫之間創建一個數據庫連結。

我的本地數據庫是 11.2.0.3。

SQL> select * from global_name;


GLOBAL_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MYDB.DOMAINNAME


SQL> select name, value from v$parameter where name in ('db_name', 'db_domain', 'global_names');
NAME                 VALUE
-------------------- ----------------------------------------
db_domain
global_names         TRUE
db_name              mydb

遠端 DB 為 11.2.0.2,配置如下:

SQL> select * from global_name;


GLOBAL_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
myremotedb

SQL> select name, value from v$parameter where name in ('db_name', 'db_domain', 'global_names');

NAME                 VALUE
-------------------- ----------
db_domain
global_names         FALSE
db_name              myremotedb

我想在本地數據庫中創建一個 DBLINK 到遠端數據庫。

的 tnsnames(mydb 的機器)配置如下:

REMOTE-DATABASE =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = 192.168.1.2)(Port = 1521))
   )
   (CONNECT_DATA =
     (SID = myremotedb)
   )
 )

然後,當我嘗試在本地數據庫中創建數據庫連結時,由於 global_names 參數設置為 true,oracle 將本地域名附加到數據庫連結名稱

SQL> create database link myremotedb@myuser connect to myuser identified by mypasswd using 'REMOTE-DATABASE';


Enlace con la base de datos creado.


SQL> select db_link from user_db_links;


DB_LINK
------------------------------
MYREMOTEDB.DOMAINNAME@MYUSER

如果我嘗試使用它,它會失敗

SQL> select * from dual@MYREMOTEDB@MYUSER;
select * from dual@MYREMOTEDB@MYUSER
                  *
ERROR en línea 1:
ORA-02085: database link MYREMOTEDB.DOMAINNAME@MYUSER connects to MYREMOTEDB




SQL> select * from dual@MYREMOTEDB.DOMAINNAME@MYUSER;
select * from dual@MYREMOTEDB.DOMAINNAME@MYUSER
                  *
ERROR en línea 1:
ORA-02085: database link MYREMOTEDB.DOMAINNAME@MYUSER connects to MYREMOTEDB

在這種情況下如何創建此數據庫連結?

遠端數據庫沒有 db_domain。如何強制 oracle 創建一個沒有域名的 DBLINK?

問候!

你能告訴我們你的sqlnet.ora文件的內容嗎?

域名應在此處列出:

NAMES.DEFAULT_DOMAIN = domain.com.xxx

如果您沒有,請使用 netca 工具創建一個新的 sqlnet.ora 文件。- 創建該文件後,編輯它並使用您的域名添加條目!

太好了……是的,它正在工作global_name=FALSE

我正在測試將 expdp 轉儲文件從 onprim 上傳到 AWS RDS ..

**** SCRIPT STARTED Session: NKIM3@LIMSDEV3(3) 4/1/2019 4:18:41 PM ****
BEGIN
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object       => 'DATA_PUMP_DIR',
source_file_name              => 'expdp_msrt_md_201904011535_file01.dmp',
destination_directory_object  => 'DATA_PUMP_DIR',
destination_file_name         => 'expdp_msrt_md_201904011535_file01.dmp', 
destination_database          => 'to_rds2' 
);
END;
==>
PL/SQL block executed
--------------------------------------------------------------------------------
**** SCRIPT ENDED 4/1/2019 4:19:48 PM ****
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

引用自:https://dba.stackexchange.com/questions/60219