===== Einen DB Link in einem anderem 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 ==== http://oraganism.wordpress.com/2009/12/02/how-to-create-a-database-link-in-another-users-schema/