web-dev-qa-db-fra.com

Créez un lien de base de données sur Oracle Database avec 2 bases de données sur différentes machines.

J'ai 2 bases de données Oracle (db1 et db2) sur différentes machines, supposons: db1 sur 192.168.1.1 et db2 sur 192.168.1.2

Ce que je veux réaliser, c'est créer un lien sur db1 qui me permettra d'effectuer des requêtes sur db2.

Voici comment j'ai créé le lien sur db1:

create public database link db2Link connect to db2username identified by db2password
using 'db2';

Je pense que cela devrait fonctionner si les deux bases sont sur la même machine, mais comme je veux me connecter à une base de données qui se trouve sur une machine différente, comment puis-je faire ce lien?

Merci et meilleures salutations

4

Vous pouvez définir la chaîne de connexion via tnsnames.ora puis référencer l'alias

remotedb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(Host = remotedb.fqdn.com)(PORT = 1521))
    (CONNECT_DATA = (SERVICE_NAME = ORCL))
  )

Créez ensuite un dblink référençant cet alias:

CREATE DATABASE LINK remotedb
    CONNECT TO SYSTEM IDENTIFIED BY <password>
    USING 'remotedb';

Ou facilitez le même inline avec:

CREATE DATABASE LINK remotedb
CONNECT TO SYSTEM IDENTIFIED BY <password>
USING'(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(Host = remotedb.fqdn.com)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL)))';

Pour plus de détails sur la syntaxe, consultez http://docs.Oracle.com/cd/B28359_01/server.111/b28286/statements_5005.htm

Si vous souhaitez éviter la résolution DNS, remplacez simplement l'adresse IP par remotedb.fqdn.com à la place. Bien sûr, vous voudrez vérifier que la source peut initier des connexions TCP avec le port distant 1521:

nc -zv remotedb.fqdn.com 1521
4
sqlreader