Db links

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Objet Oracle
Rôle Lien entre plusieurs bases de données
Voir aussi Oracle · Client oracle · Directory

Un database link (db link) permet à une session connectée sur une base de référencer directement des objets d'une autre base, locale ou distante, via une connexion Oracle Net.

Afficher

SELECT * FROM dba_db_links;

Créer

CREATE DATABASE LINK DBSTAR CONNECT TO ADMIN IDENTIFIED BY pwd USING 'DBSTAR.world';

Supprimer

DROP DATABASE LINK "DB_link_name";

En cas de suppression nécessaire depuis un autre schéma que le propriétaire :

CREATE PROCEDURE user.drop_db_link AS
BEGIN
  EXECUTE IMMEDIATE 'DROP DATABASE LINK MTOR';
END drop_db_link;
/
-- le / sur sa propre ligne referme le bloc PL/SQL
exec user.drop_db_link;

Générer les requêtes de suppression pour tous les liens d'un propriétaire donné :

SELECT 'DROP DATABASE LINK "'||db_link||'";' FROM dba_db_links WHERE owner = 'OWNER';

Utile lors d'une migration de schéma : recréer un lien identique sans connaître le mot de passe en clair, à partir du hash déjà connu par Oracle (IDENTIFIED BY VALUES) :

CREATE PUBLIC DATABASE LINK "DATAB.PRD"
  CONNECT TO "INTER" IDENTIFIED BY VALUES '<hash_du_mot_de_passe>'
  USING 'DATAB.WORLD';

SELECT * FROM dual@DATAB.PRD;
SELECT * FROM dba_db_links;

Voir aussi

Notes

  • Procédure de suppression cross-schéma inspirée d'un article publié sur dbaoracletips.blogspot.fr (« How to drop/create database link from... »).