CREATE DATABASE LINK

Il Database Link è uno schema object in un db, che permette ad un utente di accedere ad un altro db.
Il db link permette di accedere a tabelle e viste di un altro db aggiungendo la stringa @<nome_dblink>.

Supponiamo di avere due db uno locale S11TEST e uno remoto con service name IAT11F.
Vogliamo accedere da S11TEST allo schema pippo del db IAT11F.
Verificare che le due macchine si pingano tra loro e inserire nel tnsname.ora della macchina locale S11TEST  la connessione al db remoto.

IAT11F.WORLD =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = lab02.dominio.it)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = IAT11F.WORLD)
    )
  )

Testare da macchina locale
ping <ip macchina remota oppure alias>
tnsping IAT11F.WOLRD


Sul db S11TEST assicurarsi che l'utenza che deve creare il dblink abbia i seguenti privilegi di sistema:
- CREATE SESSION
- CREATE DATABASE LINK per creare un dblink privato
- CREATE PUBLIC DATABASE LINK per creare un dblink pubblico cioè disponibile a tutti gli utenti.

Con la  seguente istruzione si crea un Fixed-User Database Link cioè un utente qualsiasi del db locale S11TEST  può accedere ad un solo schema "pluto "del db remoto IAT11F.

CREATE PUBLIC DATABASE LINK <dblik_name>
CONNECT TO <schema_name> 
IDENTIFIED BY <pwd dello shema>
USING  '<alias del tnsname del db remoto>';

CREATE  PUBLIC DATABASE LINK dblpluto
CONNECT TO pluto
IDENTIFIED BY pluto
USING 'IAT11F.WORLD';


Con questa istruzione un utenza qualsiasi del db S11TEST  può accedere ad una tabella del db remoto con la seguente query.
select * from <nome_tabella>@<dblik_name>;

Per verificare la creazione del dblink usare la query
select * from dba_db_links

Per testare la connessione
select * from dual@DBLPLUTO

Per creare un dblink privato da un utente occorre connettersi con quell'utente e non come sys altrimenti non funziona.

SQL> conn pept/pept

CREATE DATABASE LINK dblpeptpluto
CONNECT TO pluto
IDENTIFIED BY pluto
USING 'IAT11F.WORLD';

L'utente pept deve avere le grant create database link e create session.

Query di riferimento.
select * from USER_DB_LINKS

SQL> select * from dba_db_links;

OWNER      DB_LINK           USERNAME   HOST                         CREATED
---------- ---------- ---------- ---------- ----------------------------------------------------
PUBLIC    DBLPLUTO           PLUTO           IAT11F.WORLS     04-FEB-19
PEPT        DBLPEPTPLUTO  PLUTO           IAT11F.WORLD    06-FEB-19



Per droppare un dblink

drop public database link <nome dblink>;

Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database