Oracle Database
Datenbank-Links
Suche…
Datenbanklink erstellen
CREATE DATABASE LINK dblink_name
CONNECT TO remote_username
IDENTIFIED BY remote_password
USING 'tns_service_name';
Auf die entfernte Datenbank kann dann folgendermaßen zugegriffen werden:
SELECT * FROM MY_TABLE@dblink_name;
Um eine Datenbankverknüpfungsverbindung zu testen, ohne einen der Objektnamen in der verknüpften Datenbank zu kennen, verwenden Sie die folgende Abfrage:
SELECT * FROM DUAL@dblink_name;
Um eine Domäne explizit für den verknüpften Datenbankdienst anzugeben, wird der Domänenname der USING
Anweisung hinzugefügt. Zum Beispiel:
USING 'tns_service_name.WORLD'
Wenn kein Domänenname explizit angegeben ist, verwendet Oracle die Domäne der Datenbank, in der die Verknüpfung erstellt wird.
Oracle-Dokumentation zur Erstellung von Datenbanklinks:
- 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
Datenbanklink erstellen
Nehmen wir an, wir haben zwei Datenbanken "ORA1" und "ORA2". Auf die Objekte von "ORA2" können wir über die Datenbank "ORA1" über eine Datenbankverbindung zugreifen.
Voraussetzungen: Zum Erstellen einer privaten Datenbankverbindung benötigen Sie ein CREATE DATABASE LINK
Privileg. Zum Erstellen einer privaten Datenbankverbindung benötigen Sie ein CREATE PUBLIC DATABASE LINK
Privileg.
* Oracle Net muss in beiden Instanzen vorhanden sein.
So erstellen Sie eine Datenbankverknüpfung:
Von ORA1:
SQL> create <public> database link ora2 connect to user1 identified by pass1 using <tns name of ora2>;
Datenbanklink erstellt
Nun, da wir die DB-Verbindung eingerichtet haben, können wir dies durch Ausführen von ORA1 beweisen:
SQL> Select name from V$DATABASE@ORA2; -- should return ORA2
Sie können auch auf die DB-Objekte von "ORA2" von "ORA1" aus zugreifen, vorausgesetzt der Benutzer user1
verfügt über das SELECT
Privileg für diese Objekte in ORA2 (z. B. TABLE1 unten):
SELECT COUNT(*) FROM TABLE1@ORA2;
Pre-Requistes:
- Beide Datenbanken müssen in Betrieb sein (geöffnet).
- Beide Datenbank-Listener müssen aktiv sein.
- TNS muss korrekt konfiguriert sein.
- Benutzer user1 muss in der ORA2-Datenbank vorhanden sein, das Passwort muss überprüft und überprüft werden.
- Benutzer user1 muss mindestens über das
SELECT
Privileg verfügen oder über ein anderes Zugriffsrecht auf die Objekte in ORA2 verfügen.