dba:create_db_link_other_schema
Dies ist eine alte Version des Dokuments!
Einen DB Link in einem anderen Schema anlegen
Ein privater DB kann NICHT direkt in einem anderen als den eigenen Schema angelegt werde.
Aufgabe:
Es soll aber ein DB Link auf die Produktion unter dem Schema ANWENDER_A angelegt werden. Das Passwort vom User ANWENDER_A ist aber nicht bekannt.
Workaround:
Ausnützen der PL/SQL Eigenschaft, dass ein unter einem User erzeugte Procedure unter dem Account das User ausgeführt wird der die Procedure besitzt!
- DB Link Eigenschaften, User / Password und Connectstring definieren und validieren
- wie auf der DB Maschine per SQL*Plus mit den gleichen Verbindungsparameter anmelden
- Anlegen einer Procedure im Schema des Users, der den privaten DB Link benötigt
- Recht zum Anlegen eines DB Links erteilen
- Procedure ausführen
- Prüfen ob der Link existiert
- Rechte entfernen und Procedure wieder löschen
DB Link Eigenschaften, User / Password und Connectstring definieren
DB Link normal erstellen und im eigenen Schema testen
CREATE DATABASE link temp_test CONNECT TO prod_user IDENTIFIED BY "prodpwdkomplex" USING 'prd_db_alias'; SELECT * FROM dual@TEMP_TEST;
Hilfsfunktion erstellen
CREATE OR REPLACE PROCEDURE ANWENDER_A.create_a_db_link AS BEGIN EXECUTE IMMEDIATE 'create database link temp_test connect to prod_user identified by "prodpwdkomplex" using ''prd_db_alias'''; END create_a_db_link; /
Rechte vergeben
GRANT CREATE DATABASE link TO ANWENDER_A;
Procedure aufrufen
EXEC ANWENDER_A.create_a_db_link # testen mit SELECT owner,db_link FROM dba_db_links;
Aufräumen
# Rechte wieder entfernen REVOKE CREATE DATABASE link FROM ANWENDER_A; #Procedure löschen DROP PROCEDURE ANWENDER_A.create_a_db_link
Quellen
dba/create_db_link_other_schema.1396942573.txt.gz · Zuletzt geändert: 2014/04/08 09:36 von gpipperr