今天在一个二线数据库中发现了一个奇怪的问题。有几个已经存在的PUBLIC数据库链无法正常删除。
这篇文章给出解决的具体方法。
PUBLIC数据库链无法删除的问题(一):http://yangtingkun.itpub.net/post/468/259496
操作之前再次说明,处理这个问题的最好的方法是不去处理,如果一定要删除的话,最好先做好备份。
问题的描述和产生原因在上面一篇文章中。这里直接描述解决步骤。
第一种方法比较简单:就是利用SYS用户产生LINK$表中的记录。
SQL> COL NAME FORMAT A30
SQL> SELECT * FROM DBA_DB_LINKS;
OWNER DB_LINK USERNAME HOST CREATED
-------- ---------------------- ------------- ----------- ---------------------
PUBLIC DATA NDMAIN DATADB 2004-5月 -14 18:44:07
PUBLIC DATA.EMEDCHINA.NET SELE DATADB 2007-2月 -01 16:40:23
PUBLIC DATADB DNMAIN DATADB 2004-5月 -14 18:41:35
PUBLIC MAINDB LOG MAINDB 2004-2月 -19 18:27:30
PUBLIC MAINDB.EMEDCHINA.NET LOG MAINDB 2004-6月 -04 14:03:37
LAS REPDB02.EMEDCHINA.NET REPORT report2_90 2006-2月 -28 14:46:29
LAS_NEW GPODB.EMEDCHINA.NET SELE_LAS_NEW gpodb 2007-1月 -19 09:52:01
LAS_NEW SSISS.EMEDCHINA.NET USERTSP ssiss 2007-1月 -22 10:03:29
已选择8行。
SQL> DROP PUBLIC DATABASE LINK DATADB;
DROP PUBLIC DATABASE LINK DATADB
*
ERROR 位于第 1 行:
ORA-02024: 未找到数据库链接
SQL> SELECT OWNER#, NAME FROM LINK$;
OWNER# NAME
---------- ------------------------------
1 DATA
1 MAINDB
1 DATADB
67 SSISS.EMEDCHINA.NET
61 REPDB02.EMEDCHINA.NET
1 MAINDB.EMEDCHINA.NET
67 GPODB.EMEDCHINA.NET
1 DATA.EMEDCHINA.NET
已选择8行。
SQL> DELETE LINK$ WHERE OWNER# = 1 AND NAME = 'DATADB';
已删除 1 行。
SQL> COMMIT;
IXDBA.NET技术社区提交完成。
SQL> SELECT * FROM DBA_DB_LINKS;
OWNER DB_LINK USERNAME HOST CREATED
-------- ---------------------- ------------- ----------- ---------------------
PUBLIC DATA NDMAIN DATADB 2004-5月 -14 18:44:07
PUBLIC DATA.EMEDCHINA.NET SELE DATADB 2007-2月 -01 16:40:23
PUBLIC MAINDB LOG MAINDB 2004-2月 -19 18:27:30
PUBLIC MAINDB.EMEDCHINA.NET LOG MAINDB 2004-6月 -04 14:03:37
LAS REPDB02.EMEDCHINA.NET REPORT report2_90 2006-2月 -28 14:46:29
LAS_NEW GPODB.EMEDCHINA.NET SELE_LAS_NEW gpodb 2007-1月 -19 09:52:01
LAS_NEW SSISS.EMEDCHINA.NET USERTSP ssiss 2007-1月 -22 10:03:29
已选择7行。
通过测试发现,第二种方式似乎对Oracle920版本无效:
SQL> SELECT * FROM DBA_DB_LINKS;
OWNER DB_LINK USERNAME HOST CREATED
-------- ---------------------- ------------- ----------- ---------------------
PUBLIC DATA NDMAIN DATADB 2004-5月 -14 18:44:07
PUBLIC DATA.EMEDCHINA.NET SELE DATADB 2007-2月 -01 16:40:23
PUBLIC MAINDB LOG MAINDB 2004-2月 -19 18:27:30
PUBLIC MAINDB.EMEDCHINA.NET LOG MAINDB 2004-6