Farklı şemaya ait database link’in drop işlemi
Oracle veritabanlarında public olmayan , bir şemaya ait db link drop edilirken, ilgili db link’i drop eden kullanıcı şeması altında arar. Eğer farklı bir şemadaki db link drop ediliyorsa , db link bulunamadı şeklinde hata alınacaktır. Bu hatanın alınmaması için db link sahibi olan şemada basit bir prosedür oluşturularak , herhangi bir şemaya execute yetkisi verilirse , sorunsuz şeklide db link drop işlemi gerçekleşecektir.
Gerekli prosedürü aşaşğıdaki gibi oluşturabiliriz. DBA yetkisi olan yada SYS kullanıcısı ile oluşturulmalıdır. Prosedür , db link hangi şemada ise aynı şemada oluşturulmalıdır.
Aşağıdaki örnekte ahmet kullanıcısındaki ahmet_dblink isimli db linkin farklı bir kullanıcı ile drop edilebilmesi için gerekli prosedür oluşturulmuştur.
CREATE PROCEDURE ahmet.drop_db_link AS BEGIN EXECUTE IMMEDIATE 'drop database link ahmet_dblink'; END drop_db_link;
Aşağıdaki gibi gibi prosedürü çalıştıracak kullanıcıya execute yetkisi tanımlanmalıdır.
SQL> grant execute on ahmet.drop_db_link to KULLANICI;
İlgili kullanıcı ile aşağıdaki gibi prosedürü çalıştırdığımızda ilgili db link drop edilecektir.
SQL> exec ahmet.drop_db_link;
DB link sorgulandığında , drop edildiğini görebiliriz.
SQL> select * from dba_db_links where db_link='ahmet_dblink'; no rows selected