我申请这个blog是为了督促自己,把自己平时的一些想法和思考结果保留下来。 本博客所有内容均为原创,如有转载请注明作者和出处

ORACLE817上对同义词执行DESC出现CORE DUMP

上一篇 / 下一篇  2008-06-16 23:58:49 / 个人分类:Bug

这个bug比较有纪念意义,这是我碰到的第一个Oraclebug,如果说的比较严谨一些,这个bug是我碰到且意识到自己碰到bug的第一个bug

 

 

当时接触Oracle的时间不太长,对Oracle的基本概念有了一定了解,但是很少上METALINK,所以还不知道如何查询bug的相关信息,因此并不清楚引发这个错误的原因,也不清楚如何避免这个问题。不过错误现象记得十分的清楚,因为当时的场面比较“丢人”。

当时是在做一个ORACLESYBASE移植的项目,有SYBASE公司的人配合进行。为了这个项目,刚刚看完SYBASE的文档,对SYBASE的读锁机制印象比较深刻,而且又是做Oracle出身的,难免将ORACLESYBASE在锁机制方面进行比较,而这种比较的结果可想而知,以此一直对SYBASE没有太好的印象。

这种印象直接导致在和SYBASE的技术人员沟通过程中,总是会有意无意的提到Oracle的优点,比如锁机制,比如稳定性,等等。

有一天和SYBASE人员一起处理一个问题的时候,在Oracle中对一个同义词执行DESC,结果sqlplus直接出现CORE DUMP,而我刚刚还在说Oracle如何如何稳定。当时SYBASE的技术人员也对这个错误表示不可思议。而我更是第一次深刻认识了BUG这个东西。

如文章开头提到的,当时还不知道如何去进一步诊断问题,所以这个bug就一直没有下文了。虽然此后再没有碰到过这个bug,不过这个bug的现象一直深刻的留在我的脑海里面,直到前几天,在METALINK中查询其他的BUG时,无意间看到了这个bug的相关描述,当时就将这个bug的描述地址记录了下来。打算在空闲的时候,重现这个问题。

这两天有点时间,于是在网上寻找Oracle817的资源,准备重现并记录在Oracle职业生涯中碰到的第一个bug

首先重现一下bug

SQL>CONNTEST/TESTITPUB个人空间4Sy/|(Td1TJ
Connected.ITPUB个人空间7{$u@7V,K
SQL> SELECT * FROM V$VERSION;

BANNERITPUB个人空间{MHa|E2nO2EK
----------------------------------------------------------------ITPUB个人空间P)w/RVm5?
Oracle8i Enterprise Edition Release 8.1.7.0.0 - 64bitProductionITPUB个人空间&I3_ z[B1b
PL
/SQL Release 8.1.7.0.0 - Production
Ft0qbn fC2B0CORE    8.1.7.0.0       Production
bZXZI|0q| y~Q0TNS for Solaris: Version 8.1.7.0.0 - ProductionITPUB个人空间nN jhG[3\ d"]^3Dn
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个人空间 we4R3mr7N/Gx
 Name                                      Null?    Type
u'b5o7HFC-\.\7l4S0 ----------------------------------------- -------- ----------------------------
]Y)I1g4n^!U.}Q K/Q0 ID                                                 NUMBER

SQL> DROP TABLE T;

Table dropped.

SQL> DESC T
,J pY'W~W0Segmentation Fault (core dumped)
(i[^;Z N+@#yA+[P0bash-2.03$

错误发生的前提是同名的PUBLIC同义词指向的目标对象被删除。如果是普通同义词,或者PUBLIC同义词和原对象不同名,都不会导致这个错误的发生:

SQL>CONNTEST/TESTITPUB个人空间5q(Bmd%D6i
Connected.ITPUB个人空间sX(Zoa
SQL> CREATE TABLE TEST (ID NUMBER);

Table created.

SQL> CREATE SYNONYM S_TEST FOR TEST;

Synonym created.

SQL> DESC S_TEST
;y;Z Lw \)l5I:IU[5]c0 Name                                      Null?    Type
isZ._8EGutH0 ----------------------------------------- -------- -------------------ITPUB个人空间$K5s;g,A.nb;u
 ID                                                 NUMBER

SQL> DROP TABLE TEST;

Table dropped.

SQL> DESC S_TESTITPUB个人空间%HE1|%G:L7N(?g
ERROR:
n6{{0e$Y(e-r}L0ORA-04043: object TEST.TEST does not exist


9x X#}u:@yo s0SQL> 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_TESTITPUB个人空间K#{R!V v6\)n$x
 Name                                      Null?    Type
+} w^'q~W0 ----------------------------------------- -------- ------------------ITPUB个人空间.\V)aj&t;s,l
 ID                                                 NUMBER

SQL> DROP TABLE TEST;

Table dropped.

SQL> DESC S_TEST
,n)o1E,e Kkv h0ERROR:ITPUB个人空间%z#N'w_z ~+pP
ORA-04043: object TEST.TEST does not exist


J r&g,Z-eoyN0 

METALINK在文档Doc ID: Note:271217.1详细描述了这个bug,这个bug影响整个817版本,在90149201版本中被FIXED

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar