PUBLIC数据库链无法删除的问题(二)
上一篇 / 下一篇 2007-02-02 00:00:00 / 个人分类:ORACLE
今天在一个二线数据库中发现了一个奇怪的问题。有几个已经存在的PUBLIC数据库链无法正常删除。
这篇文章给出解决的具体方法。
PUBLIC数据库链无法删除的问题(一):http://yangtingkun.itpub.net/post/468/259496
ITPUB个人空间&_TX7dq9f(c$F-J操作之前再次说明,处理这个问题的最好的方法是不去处理,如果一定要删除的话,最好先做好备份。
问题的描述和产生原因在上面一篇文章中。这里直接描述解决步骤。
第一种方法比较简单:就是利用SYS用户产生LINK$表中的记录。
SQL> COL NAME FORMAT A30ITPUB个人空间0l9nyP6gYhH
SQL> SELECT * FROM DBA_DB_LINKS;
OWNER DB_LINK USERNAME HOST CREATED
9u"T"sK/Y
t!t7590422-------- ---------------------- ------------- ----------- ---------------------
O9ZOg[M#n&t7590422PUBLIC DATA NDMAIN DATADB 2004-5月 -14 18:44:07
5X+fFZKr-^#H7590422PUBLIC DATA.EMEDCHINA.NET SELE DATADB 2007-2月 -01 16:40:23
9Q.s+X0wb%M!YOK0q7590422PUBLIC DATADB DNMAIN DATADB 2004-5月 -14 18:41:35
_AwB9Kr7590422PUBLIC MAINDB LOG MAINDB 2004-2月 -19 18:27:30
-N2RWY&HDw7590422PUBLIC MAINDB.EMEDCHINA.NET LOG MAINDB 2004-6月 -04 14:03:37ITPUB个人空间1Sl&T3k8_UZDq
LAS REPDB02.EMEDCHINA.NET REPORT report2_90 2006-2月 -28 14:46:29ITPUB个人空间
l&rf\:FI?AfM(r
LAS_NEW GPODB.EMEDCHINA.NET SELE_LAS_NEW gpodb 2007-1月 -19 09:52:01
-_]nu"z7590422LAS_NEW SSISS.EMEDCHINA.NET USERTSP ssiss 2007-1月 -22 10:03:29
已选择8行。
SQL> DROP PUBLIC DATABASE LINK DATADB;ITPUB个人空间Y-?2q-u5H
C H
DROP PUBLIC DATABASE LINK DATADBITPUB个人空间b-\U8e(}SP!b
*ITPUB个人空间Y$YK@'zZ
U?
ERROR 位于第 1 行:
9f q5}4c4J3G7590422ORA-02024: 未找到数据库链接
ITPUB个人空间4yWI)Z_?o5sN
A
SQL> SELECT OWNER#, NAME FROM LINK$;
OWNER# NAMEITPUB个人空间|{N
X+ivu,_ A
---------- ------------------------------ITPUB个人空间3x&~5s0M1@u"N
1 DATAITPUB个人空间p$z8n~'zGg
1 MAINDB
$f4Zw8u'B]Rh%C7590422 1 DATADBITPUB个人空间e0sqWS t
67 SSISS.EMEDCHINA.NET
"?]u6M#N{z7590422 61 REPDB02.EMEDCHINA.NETITPUB个人空间J$h
_"j)o7B
1 MAINDB.EMEDCHINA.NET
'o6BH`+o4i6D7590422 67 GPODB.EMEDCHINA.NET
xy2AV*XP%G
Q|C7590422 1 DATA.EMEDCHINA.NET
已选择8行。
SQL> DELETE LINK$ WHERE OWNER# = 1 AND NAME = 'DATADB';
已删除 1 行。
SQL> COMMIT;
提交完成。
SQL> SELECT * FROM DBA_DB_LINKS;
OWNER DB_LINK USERNAME HOST CREATED
UA,g d;FG7590422-------- ---------------------- ------------- ----------- ---------------------
(rWkizBYAT7590422PUBLIC DATA NDMAIN DATADB 2004-5月 -14 18:44:07ITPUB个人空间&|\P&oM)e#HH
PUBLIC DATA.EMEDCHINA.NET SELE DATADB 2007-2月 -01 16:40:23ITPUB个人空间"C6B]*m3Ts3hABa6k
PUBLIC MAINDB LOG MAINDB 2004-2月 -19 18:27:30
"~A M+UA(k5Ef7590422PUBLIC MAINDB.EMEDCHINA.NET LOG MAINDB 2004-6月 -04 14:03:37
cxW/T t-O
p7590422LAS REPDB02.EMEDCHINA.NET REPORT report2_90 2006-2月 -28 14:46:29
+j Zw2Y/Q4`6f7590422LAS_NEW GPODB.EMEDCHINA.NET SELE_LAS_NEW gpodb 2007-1月 -19 09:52:01ITPUB个人空间
n DQzl@.Fa
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 CREATEDITPUB个人空间q$d'D!e0c$]"XX
v
-------- ---------------------- ------------- ----------- ---------------------
!^9bg0y%T^(W2a7590422PUBLIC DATA NDMAIN DATADB 2004-5月 -14 18:44:07
$YV'Z[lE7590422PUBLIC DATA.EMEDCHINA.NET SELE DATADB 2007-2月 -01 16:40:23ITPUB个人空间.gU!@-j!ex#e
PUBLIC MAINDB LOG MAINDB 2004-2月 -19 18:27:30ITPUB个人空间|qb:GU
l
PUBLIC MAINDB.EMEDCHINA.NET LOG MAINDB 2004-6月 -04 14:03:37
s7| bM"LcV7590422LAS REPDB02.EMEDCHINA.NET REPORT report2_90 2006-2月 -28 14:46:29
;s.\/h/^ O3GX"Re}7590422LAS_NEW GPODB.EMEDCHINA.NET SELE_LAS_NEW gpodb 2007-1月 -19 09:52:01
d#_k,pJ'a%N&h;l
Z7590422LAS_NEW SSISS.EMEDCHINA.NET USERTSP ssiss 2007-1月 -22 10:03:29
已选择7行。
SQL> DROP PUBLIC DATABASE LINK DATA;
数据库链接已丢弃。
SQL> SELECT * FROM DBA_DB_LINKS;
OWNER DB_LINK USERNAME HOST CREATEDITPUB个人空间L0b;VfH
I O1Q(i
-------- ---------------------- ------------- ----------- ---------------------
:P;lhlh7590422PUBLIC DATA NDMAIN DATADB 2004-5月 -14 18:44:07ITPUB个人空间WaAp'V9{L_
PUBLIC MAINDB LOG MAINDB 2004-2月 -19 18:27:30
*XK)Z
H,L0N La7590422PUBLIC MAINDB.EMEDCHINA.NET LOG MAINDB 2004-6月 -04 14:03:37
|P vL8N9K7590422LAS REPDB02.EMEDCHINA.NET REPORT report2_90 2006-2月 -28 14:46:29
p/pfX
PHE]7590422LAS_NEW GPODB.EMEDCHINA.NET SELE_LAS_NEW gpodb 2007-1月 -19 09:52:01ITPUB个人空间P"|'Gv|"g4FT@
LAS_NEW SSISS.EMEDCHINA.NET USERTSP ssiss 2007-1月 -22 10:03:29
已选择6行。
SQL> DROP PUBLIC DATABASE LINK DATA;
%p(S)Bn)jP7590422DROP PUBLIC DATABASE LINK DATA
wv7WR.cp2W%P7590422 *ITPUB个人空间2~} A'`l|9SM(E[
ERROR 位于第 1 行:ITPUB个人空间e\vn1O2xM*e]:Ye
ORA-02024: 未找到数据库链接
由于GLOBAL_NAME的原因,删掉的并非是希望删掉的DBLINK,而希望删掉的却无法删除。
SQL> SELECT * FROM GLOBAL_NAME;
GLOBAL_NAME
#H?I
f,Mw}D7590422------------------------------------------------------------------------------ITPUB个人空间2NK{]P,X
ORCL.EMEDCHINA.NET
SQL> SHOW USER
"L*Z)zY%}'Y:DF @8Y7590422USER 为"SYS"
:Q4qSmV7?5qf,j3f7590422SQL> UPDATE PROPS$ SET VALUE$ = 'ORCL' WHERE NAME = 'GLOBAL_DB_NAME';
已更新 1 行。
SQL> SELECT * FROM GLOBAL_NAME;
GLOBAL_NAMEITPUB个人空间Y1Uf:eS&P-C"hve
-----------------------------------------------------------------------------ITPUB个人空间t7PQF3]+w
ORCL
SQL> COMMIT;
提交完成。
SQL> DROP PUBLIC DATABASE LINK DATA;
xU g/m ~7590422DROP PUBLIC DATABASE LINK DATA
K3d|(?%N ~ q7590422 *ITPUB个人空间u0sA3||;y&]5~F
ERROR 位于第 1 行: