web-dev-qa-db-ja.com

DB_DOMAINのないデータベースへのOracle DB LINKを作成します

この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に作成させるにはどうすればよいですか?

よろしく!

3
vegatripy

単にローカルdbセットで

alter system set global_Names = FALSE;

その後、DBリンクが機能します。

1
Anıl Akduygu

sqlnet.oraファイルの内容を教えていただけますか?
ドメイン名がそこにリストされている必要があります:

NAMES.DEFAULT_DOMAIN = domain.com.xxx

ない場合は、netcaツールを使用して新しいsqlnet.oraファイルを作成します。 -そのファイルを作成したら、それを編集して、ドメイン名を含むエントリを追加します。

0
Up_One

すばらしい...はい、それは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 ****
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0
NAM KIM