ORACLE817上对同义词执行DESC出现CORE DUMP
上一篇 / 下一篇 2008-06-16 23:58:49 / 个人分类:Bug
这个bug比较有纪念意义,这是我碰到的第一个Oracle的bug,如果说的比较严谨一些,这个bug是我碰到且意识到自己碰到bug的第一个bug。
当时接触Oracle的时间不太长,对Oracle的基本概念有了一定了解,但是很少上METALINK,所以还不知道如何查询bug的相关信息,因此并不清楚引发这个错误的原因,也不清楚如何避免这个问题。不过错误现象记得十分的清楚,因为当时的场面比较“丢人”。
当时是在做一个ORACLE向SYBASE移植的项目,有SYBASE公司的人配合进行。为了这个项目,刚刚看完SYBASE的文档,对SYBASE的读锁机制印象比较深刻,而且又是做Oracle出身的,难免将ORACLE和SYBASE在锁机制方面进行比较,而这种比较的结果可想而知,以此一直对SYBASE没有太好的印象。
这种印象直接导致在和SYBASE的技术人员沟通过程中,总是会有意无意的提到Oracle的优点,比如锁机制,比如稳定性,等等。
有一天和SYBASE人员一起处理一个问题的时候,在Oracle中对一个同义词执行DESC,结果sqlplus直接出现CORE DUMP,而我刚刚还在说Oracle如何如何稳定。当时SYBASE的技术人员也对这个错误表示不可思议。而我更是第一次深刻认识了BUG这个东西。
如文章开头提到的,当时还不知道如何去进一步诊断问题,所以这个bug就一直没有下文了。虽然此后再没有碰到过这个bug,不过这个bug的现象一直深刻的留在我的脑海里面,直到前几天,在METALINK中查询其他的BUG时,无意间看到了这个bug的相关描述,当时就将这个bug的描述地址记录了下来。打算在空闲的时候,重现这个问题。
这两天有点时间,于是在网上寻找Oracle817的资源,准备重现并记录在Oracle职业生涯中碰到的第一个bug。
首先重现一下bug:
SQL>
Connected.ITPUB个人空间vv$d
M
p+nUN.R
SQL> SELECT * FROM V$VERSION;
BANNER
k+B [K2eT_-b1k,M1M0----------------------------------------------------------------ITPUB个人空间*xa.`"p)Cw
Oracle8i Enterprise Edition Release 8.1.7.0.0 - 64bit
2ZicHsh1V0PL
.I_ zrol0CORE 8.1.7.0.0 Production
/IB/Jxo0TNS for Solaris: Version 8.1.7.0.0 - ProductionITPUB个人空间]:n$J,j+S
NLSRTL Version 3.4.1.0.0 - Production
SQL> CREATE TABLE T (ID NUMBER);
Table created.
SQL> CREATE PUBLIC SYNONYM T FOR T;
Synonym created.
SQL> DESC TITPUB个人空间k6L hd vC
L
Name Null? TypeITPUB个人空间IGb||$t)F
----------------------------------------- -------- ----------------------------
"j+` o3uvl0 ID NUMBER
SQL> DROP TABLE T;
Table dropped.
SQL> DESC T
oF/|Wq;p0Segmentation Fault (core dumped)ITPUB个人空间
B(L6|+XSvE0A+s
bash-2.03$
错误发生的前提是同名的PUBLIC同义词指向的目标对象被删除。如果是普通同义词,或者PUBLIC同义词和原对象不同名,都不会导致这个错误的发生:
SQL>
]!W+?'?A3?2k*j0Connected.
XE1m| J"B&f0SQL> CREATE TABLE TEST (ID NUMBER);
Table created.
SQL> CREATE SYNONYM S_TEST FOR TEST;
Synonym created.
SQL> DESC S_TESTITPUB个人空间D)ueV6}[V
y
Name Null? TypeITPUB个人空间N6k
Sb3_b
M
----------------------------------------- -------- -------------------ITPUB个人空间L;ZM
HMKi
ID NUMBER
SQL> DROP TABLE TEST;
Table dropped.
SQL> DESC S_TESTITPUB个人空间3iC+mcP:R/`
ERROR:ITPUB个人空间
sN.L$eiLAtp6t
ORA-04043: object TEST.TEST does not exist
`K;wFYSur$|-E0SQL> DROP SYNONYM S_TEST;
Synonym dropped.
SQL> CREATE TABLE TEST (ID NUMBER);
Table created.
SQL> CREATE PUBLIC SYNONYM S_TEST FOR TEST;
Synonym created.
SQL> DESC S_TEST
gplA_|,j0 Name Null? TypeITPUB个人空间Y_W2]0}|9[;pI3j
----------------------------------------- -------- ------------------ITPUB个人空间+q9?}_o@D0YH
ID NUMBER
SQL> DROP TABLE TEST;
Table dropped.
SQL> DESC S_TESTITPUB个人空间y2~V+n??R:J
ERROR:
+B$C z}.vQ?0ORA-04043: object TEST.TEST does not exist
A2l$H|Pb O&@)P0
METALINK在文档Doc ID: Note:271217.1详细描述了这个bug,这个bug影响整个817版本,在9014和9201版本中被FIXED。
导入论坛 引用链接 收藏 分享给好友 推荐到圈子 管理 举报
TAG: