この2つのDBの間にデータベースリンクを作成しようとしています。
私のローカルDBは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を作成します。
my tnsnames(mydb's machine)を次のように構成しました:
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 [email protected]@MYUSER;
select * from [email protected]@MYUSER
*
ERROR en línea 1:
ORA-02085: database link MYREMOTEDB.DOMAINNAME@MYUSER connects to MYREMOTEDB
このシナリオでこのデータベースリンクを作成するにはどうすればよいですか?
リモートdbにはdb_domainがありません。ドメイン名のないDBLINKをOracleに作成させるにはどうすればよいですか?
よろしく!
単にローカルdbセットで
alter system set global_Names = FALSE;
その後、DBリンクが機能します。
sqlnet.oraファイルの内容を教えていただけますか?
ドメイン名がそこにリストされている必要があります:
NAMES.DEFAULT_DOMAIN = domain.com.xxx
ない場合は、netcaツールを使用して新しいsqlnet.oraファイルを作成します。 -そのファイルを作成したら、それを編集して、ドメイン名を含むエントリを追加します。
すばらしい...はい、それはglobal_name=FALSE
。
OnprimからAWS RDSへのexpdpダンプファイルのアップロードをテストしています。
**** 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 ****
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^