devstory

Le Tutoriel de Oracle Database et Synonym

  1. Qu'est-ce que Database Link ?
  2. Créer Database Link
  3. Accéder des objets par Database Link
  4. Oracle Synonym
  5. Database Link à la base de données de Oracle non prise en charge

1. Qu'est-ce que Database Link ?

Database Link est un objet dans SCHEMA de Oracle, il fonctionne comme un pont pour se connecter à d'autres bases de données qui vous aideront à accéder aux objets de l'autre base de données.
Vous pouvez également créer un Database Link afin de se connecter Oracle à une autre base de données, telles que MySQL, SQL Server, ... dans ce cas, vous avez besoin d'utilise le service Oracle Heterogeneous (Oracle Heterogeneous Service)

2. Créer Database Link

Ici, je illustre la connexion de 2 systèmes de bases de données Oracle situés sur deux ordinateurs différents.
tnsname.ora
Tout d'abord, vous devriez comprendre du fichier tnsnames.ora de Oracle.

tnsname.ora est un fichier décrit la base de données de Oracle, vous pouvez le trouver dans le dossier d'installation de Oracle.
  • <ORACLE_HOME>\product\12.1.0\dbhome_1\NETWORK\ADMIN
Le contenu du fichier tnsname.ora est décrit comme l'illustration ci-dessous.
Voici les images illustrant les deux systèmes de la base de données de Oracle situés sur 2 ordinateurs différents.
Créez un Database Link baptisé mydblink pour se connecter PROD1 avec PROD2.
Create Database Link
-- On Prod1 schema.
-- Create a Database Link named mydblink
-- Connect to Prod2 schema on myserver2.

CREATE DATABASE LINK mydblink
CONNECT TO PROD2 IDENTIFIED BY "Prod2Password"
USING '(DESCRIPTION =
(ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = myserver2)(PORT = 1521))
)
(CONNECT_DATA =
  (SERVICE_NAME = db12c)
)
)';
Sur PROD1,vous pouvez tester le Database Link que vous venez de créer par la commande :
Select * from Dual@mydblink;
Il y a quelques VIEW qui vous aide à requêter une liste des Database Link sur la base de données :
-- All DB links defined in the database
Select * from DBA_DB_LINKS ;

-- All DB links the current user has access to
Select * from ALL_DB_LINKS ;

-- All DB links owned by current user
Select * from USER_DB_LINKS ;
Exemple :
-- Format column length.

column OWNER format a10
column DB_LINK format a10
column USERNAME format a10
column HOST format a10
column CREATED format a10

-- Query view: ALL_DB_LINKS:

Select * from ALL_DB_LINKS;
Créer Database Link (Continue)
Si la description de la base de Database2 a été déclarée dans le fichier tnsname.ora de Database1, vous pouvez créer un Database Link de Database1 au Database2 avec une syntaxe plus concise.
-- Create Database Link from prod1 schema of Database1 to prod2 schema of Database2.

create database link mydblink connect to
   prod2 identified by prod2password using 'PROD2_DB';

3. Accéder des objets par Database Link

Une fois que vous avez le Database Link, vous pouvez accéder aux objets dans la Database2 via Database Link.
-- Query table of Database2:

Select * from My_Table@mydblink;

Select * from My_View@mydblink;

-- And Insert, Update, Delete,..

Insert into My_Table@mydblink .....;

Update My_Table@mydblink .. ;
 

4. Oracle Synonym

Synonym peut être traduit comme "Objet synonyme" avec un autre objet. Si vous ne voulez pas ajouter @dblinkName lorsque vous accédez à un objet via un Database link, vous pouvez créer un Synonym pour ce ledit objet.
Créer Synonym:
-- Create Synonym:

create or replace Synonym  My_Table_Syn for My_Table@mydblink;
Remarque: Vous pouvez également créer Synonym pour des fonctions, des procédures.

5. Database Link à la base de données de Oracle non prise en charge

  • TODO: