web-dev-qa-db-fra.com

Créer Oracle DB Lien vers une base de données sans db_domain

J'essaie de créer un lien de base de données entre ces deux DBS.

Ma DB locale est 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

La DB distante est 11.2.0.2 configurée comme suit :

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

Je souhaite créer un Dblink dans la base de données locale à la base de données distante.

J'ai My TnsNames (Machine de MyDB) configuré comme suit :

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

Ensuite, lorsque j'essaie de créer un lien de base de données dans ma base de données locale, car Global_Names Paramètre est défini sur True, Oracle ajoute le nom de domaine local sur le nom de la liaison de base de données.

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

et si j'essaie de l'utiliser, Ça échoue

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

Comment créer ce lien de base de données dans ce scénario?

La télécommande n'a pas de db_domain. Comment puis-je forcer Oracle à créer un Dblink sans nom de domaine?

Salutations!

3
vegatripy

Simplement au jeu de dB local

alter system set global_Names = FALSE;

Ensuite, votre lien DB fonctionne.

1
Anıl Akduygu

Pouvez-vous nous montrer le contenu de votre fichier sqlnet.ora fichier?
[.____] le nom de domaine doit être répertorié ici :

NAMES.DEFAULT_DOMAIN = domain.com.xxx

Si vous n'en avez pas un, créez un nouveau fichier sqlnet.ora à l'aide de l'outil NETCA. - Après avoir créé ce fichier l'éditez et ajoutez l'entrée avec votre nom de domaine!

0
Up_One

Excellent ... oui ça marche après global_name=FALSE.

Je teste le téléchargement du fichier de vidage de FEDPDP de Onprim vers 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 ****
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0
NAM KIM