DBLink

DBLink

Dans un Système de Gestion de Base de Données (SGBD) tel qu'Oracle, un DBLink, ou database link est un objet d'une base de données permettant d'exécuter des requêtes sur une autre base de données, qu'elle se trouve physiquement sur la même machine ou qu'elle soit distante.

Sommaire

Généralités sur les liens entre bases de données

Un dblink est un objet de schéma qui fait qu'Oracle se connecte à une base de données distante pour y accéder. Pour faire court, nous dirons qu'un dblink est un pointeur local qui permet à l'utilisateur d'accéder aux objets d'une base de données distante.

On distingue trois types de dblink :

  • Les dblink privés ; c'est le type de dblink qui est créé par défaut lorsque l'utilisateur ne donne aucune précision sur le type, en particulier quand il ne précise pas le mot-clé PUBLIC lors de la création. Seul l'utilisateur qui a créé ce lien peut alors l'utiliser ;
  • Les dblink publics ; créé lorsque l'utilisateur précise le type par le mot-clé PUBLIC. Dans ce cas, ce lien sera utilisable par d'autres utilisateurs  ;
  • Les dblink globaux ;

Identification des dblink de la base

La syntaxe de visionnement des dblink déjà existant dans une base est comme suit :

SQL> select * from dba_db_links;
SQL> select owner, db_link, username from dba_db_links;

Création d'un dblink

La syntaxe SQL de création d'un dblink se présente comme suit :

SQL> CREATE [PUBLIC] DATABASE LINK <nom de lien de base de données> 
[CONNECT TO <utilisateur oracle> IDENTIFIED BY <mot de passe utilisateur oracle distant>] 
USING '<chaîne de base de données>' ;

Où :

  • On utilise l'option CONNECT TO si on veut accéder à la base distante avec un nom d'utilisateur différent de celui en cours dans la session de la base locale.
  • <nom de lien de base de données> correspond au nom de la base de données à laquelle le dblink se réfère, si le paramètre GLOBAL_NAMES vaut 'true'. Sinon, un identifiant quelconque peut être utilisé.
  • <chaîne de base de données> est une chaîne de connexion SQL*NET valide (par exemple, sous Oracle, trouvée dans le fichier tnsnames.ora).

Contraintes sur le nom de la base

Le nom du lien créé peut ne pas être libre : dans un système distribué de base de données, chaque base devrait avoir un nom global unique, qui l'identifie dans le système. Le nom du lien doit alors être le nom global de la base distante.

Dans ce cas, sur la base de données distante, le paramètre d'initialisation dynamique global_names, de type booléen, doit être positionné à 'true' (sa valeur par défaut est 'false').

Le nom global de la base distante se trouve dans la vue du dictionnaire de données GLOBAL_NAME, qui ne contient en général qu'une seule ligne et une seule colonne du même nom. Ce nom global comprend deux composants : le nom de la base et le nom du domaine, déterminés respectivement par les paramètres  :

  • DB_NAME: nom de la base , doit comporter huit caractères au plus (exemple : stocksDB);
  • DB_DOMAIN: nom du domaine, doit suivre les conventions standard d'internet (exemple : magasin-truc.fr).

Note : le paramètre DB_DOMAIN est utilisé seulement lors de la création de la base de données, avec le paramètre DB_NAME. À partir de ce moment le nom global de la base est stocké dans le dictionnaire de données. Après la création, le changement du paramètre d'initialisation DB_DOMAIN n'a aucun effet sur le nom global de la base ou sur la résolution des noms de dblink. C'est pourquoi, pour changer le domaine dans un nom global de base de données, il faut changer le nom global lui-même, avec la commande :

SQL> ALTER DATABASE RENAME GLOBAL_NAME TO <database>.<domain> ;

Bien sûr, après un tel changement, il est souhaitable de modifier le paramètre DB_DOMAIN pour qu'il reflète le changement du nom de domaine avant le prochain redémarrage de la base.

Pour déterminer si le nommage global est "forcé" sur une base de données, on peut, soit examiner le fichier de paramètres d'initialisation de la base, soit lancer la commande sql 'show parameter <nom_du_paramètre>', soit interroger la vue de dynamique v$parameter comme indiqué dans la requête qui suit :

SQL> select name, value from v$parameter where name='global_names' ;

Pour visualiser un nom global de base de données, on utilise la vue du dictionnaire de données GLOBAL_NAME avec la requête suivante:

SQL> select * from GLOBAL_NAME ;

Exemple

Disposant d'une base locale appelée locale_db et souhaitant pouvoir se connecter, depuis cette base locale, à la base distante distante_db. La définition du nom de service (alias) de la base distante dans le fichier tnsnames.ora de la machine locale se présente comme suit :

db2=
    (DESCRIPTION=
           (ADDRESS_LIST=
                   (ADDRESS=(PROTOCOL=TCP)(HOST=adresse distante)(PORT=port distant) 
                    )
            )
           (CONNECT_DATA=
                  (SID=distante_db)
            )
     )

Les analyses sur la base distante donnant :

db_name global_names global_name
nomdb true ailleurs.world

Pour créer un dblink dans ce contexte, l'utilisateur pourra utiliser l'une des deux syntaxes suivantes:

SQL> CREATE [PUBLIC] DATABASE LINK nomdb CONNECT TO scott IDENTIFIED BY tiger USING 'db2' ;

Ou

SQL> CREATE [PUBLIC] DATABASE LINK nomdb CONNECT TO scott IDENTIFIED BY tiger USING 'db2.world' ;

Utilisation après création

Pour ensuite utiliser un lien de base de données, il suffit de préciser le lien utilisé, précédé du symbole '@', avant l'identifiant de l'objet distant.

Exemple

Par exemple, souhaitant obtenir la liste des codes clients (CLIENT_CODE de schéma MYSCHEMA) de la table CLIENTS se trouvant sur une autre instance (accessible par le lien nommé MY_DB_LINK):

SQL> select CLIENT_CODE from MYSCHEMA.CLIENTS@MY_DB_LINK;

Lien externe



Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article DBLink de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • PostgreSQL — Developer(s) PostgreSQL Global Development Group Stable release 9.1.1[1] / 9.0.5 …   Wikipedia

  • Liste chinesischer Vulkane — Dies ist eine Liste chinesischer Vulkane. Sie enthält aktive und erloschene Vulkane. Vulkane sind in China überwiegend im Nordosten, Südwesten und Südosten anzutreffen. Auf chinesischem Gebiet gibt es ca. 660 Vulkane, davon ist die größte Zahl… …   Deutsch Wikipedia

  • Tashan yan — Das Tashan Wehr (chin. 它山堰, Tashan yan, engl. Tashan Weir) am Tashan Gebirge (chin. 它山, Ta Shan)[1] im Westen der Großgemeinde Yinjiang (鄞江镇) des StadtbezirksYinzhou[2] im Süden von Ningbo in der ostchinesischen Provinz Zhejiang wurde im Jahr 833 …   Deutsch Wikipedia

  • Oracle (base de donnees) — Oracle Database Pour les articles homonymes, voir oracle. Oracle …   Wikipédia en Français

  • Oracle (base de données) — Oracle Database Pour les articles homonymes, voir oracle. Oracle …   Wikipédia en Français

  • Oracle Database — Pour les articles homonymes, voir oracle. Développeur Oracle C …   Wikipédia en Français

  • Oracle Database 10g Express Edition — Oracle Database Pour les articles homonymes, voir oracle. Oracle …   Wikipédia en Français

  • PostGreSQL — Développeur Michael Stonebraker Première version 1985 Derniè …   Wikipédia en Français

  • PostgreSQL — Développeur Michael Stonebraker Première version 1995 Dernière version …   Wikipédia en Français

  • Postgresql — Développeur Michael Stonebraker Première version 1985 Derniè …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”