Oracle Database
Liens de base de données
Recherche…
Création d'un lien de base de données
CREATE DATABASE LINK dblink_name
CONNECT TO remote_username
IDENTIFIED BY remote_password
USING 'tns_service_name';
La base de données distante sera alors accessible de la manière suivante:
SELECT * FROM MY_TABLE@dblink_name;
Pour tester une connexion de liaison de base de données sans avoir à connaître aucun des noms d'objet de la base de données liée, utilisez la requête suivante:
SELECT * FROM DUAL@dblink_name;
Pour spécifier explicitement un domaine pour le service de base de données lié, le nom de domaine est ajouté à l'instruction USING
. Par exemple:
USING 'tns_service_name.WORLD'
Si aucun nom de domaine n'est explicitement spécifié, Oracle utilise le domaine de la base de données dans laquelle le lien est créé.
Documentation Oracle pour la création de liens de bases de données:
- 10g: https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5005.htm
- 11g: https://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm
- 12g: https://docs.oracle.com/database/121/SQLRF/statements_5006.htm#SQLRF01205
Créer un lien de base de données
Supposons que nous ayons deux bases de données "ORA1" et "ORA2". Nous pouvons accéder aux objets de "ORA2" à partir de la base de données "ORA1" en utilisant un lien de base de données.
Conditions préalables: Pour créer un lien de base de données privée, vous devez disposer d'un privilège CREATE DATABASE LINK
. Pour créer un lien de base de données privée, vous devez disposer d'un privilège CREATE PUBLIC DATABASE LINK
.
* Oracle Net doit être présent sur les deux instances.
Comment créer un lien de base de données:
De ORA1:
SQL> create <public> database link ora2 connect to user1 identified by pass1 using <tns name of ora2>;
Lien de base de données créé.
Maintenant que le lien de la base de données est configuré, nous pouvons le prouver en exécutant les opérations suivantes depuis ORA1:
SQL> Select name from V$DATABASE@ORA2; -- should return ORA2
Vous pouvez également accéder aux objets de base de données de "ORA2" à partir de "ORA1", étant donné que l'utilisateur user1
a le privilège SELECT
sur ces objets sur ORA2 (comme TABLE1 ci-dessous):
SELECT COUNT(*) FROM TABLE1@ORA2;
Pré-requistes:
- Les deux bases de données doivent être opérationnelles (ouvertes).
- Les deux écouteurs de base de données doivent être opérationnels.
- TNS doit être configuré correctement.
- L'utilisateur user1 doit être présent dans la base de données ORA2, le mot de passe doit être vérifié et vérifié.
- L'utilisateur user1 doit avoir au moins le privilège
SELECT
ou tout autre moyen requis pour accéder aux objets sur ORA2.