Oracle Database
Link al database
Ricerca…
Creazione di un collegamento al database
CREATE DATABASE LINK dblink_name
CONNECT TO remote_username
IDENTIFIED BY remote_password
USING 'tns_service_name';
Il DB remoto sarà quindi accessibile nel modo seguente:
SELECT * FROM MY_TABLE@dblink_name;
Per verificare una connessione al collegamento del database senza dover conoscere nessuno dei nomi oggetto nel database collegato, utilizzare la seguente query:
SELECT * FROM DUAL@dblink_name;
Per specificare esplicitamente un dominio per il servizio di database collegato, il nome di dominio viene aggiunto all'istruzione USING
. Per esempio:
USING 'tns_service_name.WORLD'
Se non viene specificato alcun nome di dominio, Oracle utilizza il dominio del database in cui viene creato il collegamento.
Documentazione Oracle per la creazione di collegamenti al database:
- 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
Crea collegamento al database
Supponiamo di avere due database "ORA1" e "ORA2". Possiamo accedere agli oggetti di "ORA2" dal database "ORA1" utilizzando un collegamento al database.
Prerequisiti: per creare un collegamento a un database privato è necessario un privilegio CREATE DATABASE LINK
. Per creare un collegamento a un database privato è necessario un privilegio CREATE PUBLIC DATABASE LINK
.
* Oracle Net deve essere presente su entrambe le istanze.
Come creare un collegamento al database:
Da ORA1:
SQL> create <public> database link ora2 connect to user1 identified by pass1 using <tns name of ora2>;
Collegamento al database creato.
Ora che abbiamo impostato il collegamento DB, possiamo provarlo eseguendo quanto segue da ORA1:
SQL> Select name from V$DATABASE@ORA2; -- should return ORA2
È inoltre possibile accedere agli oggetti DB di "ORA2" da "ORA1", dato l'utente user1
ha il privilegio SELECT
su quegli oggetti su ORA2 (come TABELLA1 di seguito):
SELECT COUNT(*) FROM TABLE1@ORA2;
Pre-requistes:
- Entrambi i database devono essere attivi e in esecuzione (aperti).
- Entrambi i listener di database devono essere attivi e in esecuzione.
- TNS deve essere configurato correttamente.
- L'utente utente1 deve essere presente nel database ORA2, la password deve essere verificata e verificata.
- L'utente utente1 deve avere almeno il privilegio
SELECT
o qualsiasi altro richiesto per accedere agli oggetti su ORA2.