Dacă dorim să ștergem un database link aparținând unui alt utilizator decât cel cu care suntem logați, nu vom reuși:
SQL> select db_link,owner from dba_db_links; DB_LINK OWNER -------------------------------------------------------------------------------- TEST_LNK AUREL SQL> show user USER is "SYS" SQL> drop database link aurel.TEST_LNK; drop database link aurel.TEST_LNK * ERROR at line 1: ORA-02024: database link not found SQL> drop database link TEST_LNK; drop database link TEST_LNK * ERROR at line 1: ORA-02024: database link not found SQL> ALTER SESSION SET CURRENT_SCHEMA = aurel; Session altered. SQL> drop database link TEST_LNK; drop database link TEST_LNK * ERROR at line 1: ORA-01031: insufficient privileges
Soluția este sa creăm și să executăm o procedură în schema utilizatorului aurel care va șterge database link-ul:
SQL> show user; USER is "SYS" SQL> CREATE PROCEDURE aurel.drop_db_link as 2 begin 3 execute immediate 'drop database link TEST_LNK'; 4 end drop_db_link; 5 / Procedure created. SQL> exec aurel.drop_db_link; PL/SQL procedure successfully completed. SQL> select db_link,owner from dba_db_links; no rows selected