Oracle Database
Databasekoppelingen
Zoeken…
Een databasekoppeling maken
CREATE DATABASE LINK dblink_name
CONNECT TO remote_username
IDENTIFIED BY remote_password
USING 'tns_service_name';
De externe DB is dan op de volgende manier toegankelijk:
SELECT * FROM MY_TABLE@dblink_name;
Gebruik de volgende query om een databasekoppeling te testen zonder dat u een van de objectnamen in de gekoppelde database hoeft te kennen:
SELECT * FROM DUAL@dblink_name;
Als u een domein voor de gekoppelde databaseservice expliciet wilt opgeven, wordt de domeinnaam toegevoegd aan de instructie USING
. Bijvoorbeeld:
USING 'tns_service_name.WORLD'
Als er geen expliciete domeinnaam is opgegeven, gebruikt Oracle het domein van de database waarin de koppeling wordt gemaakt.
Oracle-documentatie voor het maken van databasekoppelingen:
- 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
Maak een databasekoppeling
Laten we aannemen dat we twee databases "ORA1" en "ORA2" hebben. We hebben toegang tot de objecten van "ORA2" vanuit de database "ORA1" met behulp van een databasekoppeling.
Vereisten: voor het maken van een koppeling voor een CREATE DATABASE LINK
hebt u de machtiging CREATE DATABASE LINK
nodig. Voor het maken van een privé-databasekoppeling hebt u de machtiging CREATE PUBLIC DATABASE LINK
.
* Oracle Net moet aanwezig zijn op beide instanties.
Een databasekoppeling maken:
Van ORA1:
SQL> create <public> database link ora2 connect to user1 identified by pass1 using <tns name of ora2>;
Databasekoppeling gemaakt.
Nu we de DB-link hebben ingesteld, kunnen we dat bewijzen door het volgende uit te voeren vanaf ORA1:
SQL> Select name from V$DATABASE@ORA2; -- should return ORA2
U kunt ook toegang krijgen tot de DB-objecten van "ORA2" vanuit "ORA1", op voorwaarde dat de gebruiker user1
de SELECT
machtiging heeft voor die objecten op ORA2 (zoals TABLE1 hieronder):
SELECT COUNT(*) FROM TABLE1@ORA2;
Pre-requistes:
- Beide databases moeten actief zijn (geopend).
- Beide database-luisteraars moeten actief zijn.
- TNS moet correct zijn geconfigureerd.
- Gebruiker user1 moet aanwezig zijn in de ORA2-database, het wachtwoord moet worden gecontroleerd en geverifieerd.
- Gebruiker user1 moet ten minste het
SELECT
privilege hebben of een andere vereiste om toegang te krijgen tot de objecten op ORA2.