也來談談無法刪除db link的問題

space6212發表於2019-06-08

今天看到yangtingkun在blog上遇到無法刪除 db link的問題(http://yangtingkun.itpub.net/post/468/259496),我在半年前也遇到類似的問題,當時也作了簡單的記錄,現在貼出來,希望大家一起分析原因。


今天遇到一個很奇怪的問題

在linux as3+oracle9204配置高階複製時,新建了一個dblink,後來不知道做過什麼操作,怎麼也不能刪除這個dblink

查詢資料字典知道這個dblink是使用者suk下的,非public型別。

--刪除public 型別的db link失敗
SQL> drop public database link link_new_suk;

drop public database link link_new_suk

ORA-02024:database link not found

--刪除私有的db link失敗
SQL> drop database link link_new_suk;

drop database link link_new_suk

ORA-02024:database link not found

--建立私有db link,也報錯
SQL> create database link LINK_NEW_SUK
2 connect to "A" identified by "1"
3 using '1'
4 /

ORA-02011: duplicate database link name!

--查詢資料字典,發現該db link的確存在
SQL> select * from link$;

OWNER# NAME CTIME HOST USERID PASSWORD FLAG AUTHUSR AUTHPWD
---------- -------------------------------------------------------------------------------- ----------- -------------------------------------------------------------------------------- ------------------------------ ------------------------------ ---------- ------------------------------ ------------------------------
1 ORANEW 2006-4-10 ? new SYSTEM SPACE6212 0
23 LINK_NEW_SUK 2006-4-11 é new SUK SUK 0

--從資料字典中刪除db link
SQL> delete from link$ where owner#=23;

1 row deleted

SQL> commit;

--但建立時讓人報錯,看來db link的資訊不只是在link$中存在
SQL> create database link LINK_NEW_SUK
2 connect to "A" identified by "1"
3 using '1'
4 /

ORA-02011: duplicate database link name!

--沒辦法,試試查詢手工往link$插入一條db link的資訊
SQL> insert into link$ values(23,'LINK_NEW_SUK',sysdate,'new','SUK','SUK',0,null,null);

1 row inserted

SQL> commit;

Commit complete

--此時刪除成功
SQL> drop database link link_new_suk;

Database link dropped

--再次建立同名的db link也成功了
SQL>
SQL> create database link LINK_NEW_SUK
2 connect to "A" identified by "1"
3 using '1'
4 /

Database link created

SQL>



總結:
最後透過刪除,然後再重新插入LINK$表的方式實現了刪除資料庫連結。

造成這種現象的原因現在也沒有搞清楚,不排除BUG的可能。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63782/,如需轉載,請註明出處,否則將追究法律責任。

相關文章