这是在11.2上碰到的第一个ORA-600错误。
执行树形查询时,出现了这个错误:
SQL> SELECT A.*, CONNECT_BY_ISCYCLE FLAG
2 FROM T_TREE
3 START WITH ID = 1
4 CONNECT BY NOCYCLE PRIOR ID = FATHER_ID;
FROM T_TREE
*
第 2 行出现错误:
ORA-00600: 内部错误代码, 参数: [qcscbpcbua], [], [], [], [], [], [], [], [], [], [], []
SQL> SELECT A.*, CONNECT_BY_ISCYCLE FLAG
2 FROM T_TREE
3 CONNECT BY NOCYCLE PRIOR ID = FATHER_ID;
SELECT A.*, CONNECT_BY_ISCYCLE FLAG
*
第 1 行出现错误:
ORA-00904: "A": 标识符无效
SQL> SELECT A.*, CONNECT_BY_ISCYCLE FLAG
2 FROM T_TREE A
3 START WITH ID = 1
4 CONNECT BY NOCYCLE PRIOR ID = FATHER_ID;
ID FATHER_ID NAME FLAG
---------- ---------- ------------------------------ ----------
1 1 A 1
2 1 BC 0
5 2 HIJ 0
8 5 RSTU 0
3 1 DE 0
4 1 FG 0
6 4 KLM 0
7 6 NOPQ 0
已选择8行。
其实这个SQL本身写错了,在表名T_TREE后面忘了添加A作为别名。可以看到,随后的SQL去掉了START WITH语句,这时错误信息是正常的ORA-904:标识符无效。而如果加上别名A,则查询正常执行。
检查一下alert文件:
Errors in file /data/oracle/diag/rdbms/test112/test112/trace/test112_ora_6409.trc (incident=9824):
ORA-00600: 内部错误代码, 参数: [qcscbpcbua], [], [], [], [], [], [], [], [], [], [], []
Incident details in: /data/oracle/diag/rdbms/test112/test112/incident/incdir_9824/test112_ora_6409_i9824.trc
对应的trace文件中也看不到太多有用的信息:
[oracle@bjtest trace]$ more /data/oracle/diag/rdbms/test112/test112/incident/incdir_9824/test112_ora_6409_i9824.trc
Dump file /data/oracle/diag/rdbms/test112/test112/incident/incdir_9824/test112_ora_6409_i9824.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /data/oracle/product/11.2
System name: Linux
Node name: bjtest
Release: 2.6.18-8.el5xen
Version: #1 SMP Tue Jun 5 23:53:34 EDT 2007
Machine: x86_64
Instance name: test112
Redo thread mounted by this instance: 1
Oracle process number: 25
Unix process pid: 6409, image: oracle@bjtest (TNS V1-V3)
*** 2010-01-14 02:40:04.318
*** SESSION ID:(146.1225) 2010-01-14 02:40:04.318
*** CLIENT ID:() 2010-01-14 02:40:04.318
*** SERVICE NAME:(SYS$USERS) 2010-01-14 02:40:04.318
*** MODULE NAME:(SQL*Plus) 2010-01-14 02:40:04.318
*** ACTION NAME:() 2010-01-14 02:40:04.318
Dump continued from file: /data/oracle/diag/rdbms/test112/test112/trace/test112_ora_6409.trc
ORA-00600: 内部错误代码, 参数: [qcscbpcbua], [], [], [], [], [], [], [], [], [], [], []
========= Dump for incident 9824 (ORA 600 [qcscbpcbua]) ========
*** 2010-01-14 02:40:04.336
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=bgcxjm2snz7zb) -----
SELECT A.*, CONNECT_BY_ISCYCLE FLAG
FROM T_TREE
START WITH ID = 1
CONNECT BY NOCYCLE PRIOR ID = FATHER_ID
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
skdstdst()+36 call kgdsdst() 000000000 ? 000000000 ?
7FFFDFDABF08 ? 000000001 ?
7FFFDFDB0408 ? 000000000 ?
ksedst1()+98 call skdstdst() 000000000 ? 000000000 ?
7FFFDFDABF08 ? 000000001 ?
000000000 ? 000000000 ?
ksedst()+34 call ksedst1() 000000000 ? 000000001 ?
7FFFDFDABF08 ? 000000001 ?
000000000 ? 000000000 ?
dbkedDefDump()+2736 call ksedst() 000000000 ? 000000001 ?
7FFFDFDABF08 ? 000000001 ?
000000000 ? 000000000 ?
ksedmp()+36 call dbkedDefDump() 000000003 ? 000000002 ?
7FFFDFDABF08 ? 000000001 ?
000000000 ? 000000000 ?
ksfdmp()+64 call ksedmp() 000000003 ? 000000002 ?
7FFFDFDABF08 ? 000000001 ?
000000000 ? 000000000 ?
dbgexPhaseII()+1764 call ksfdmp() 000000003 ? 000000002 ?
7FFFDFDABF08 ? 000000001 ?
000000000 ? 000000000 ?
dbgexProcessError() call dbgexPhaseII() 2AAAAC2EF6F0 ? 2AAAAC2F03F0 ?
+2279 7FFFDFDB81F8 ? 000000001 ?
000000000 ? 000000000 ?
dbgeExecuteForError call dbgexProcessError() 2AAAAC2EF6F0 ? 2AAAAC2F03F0 ?
()+83 000000001 ? 000000000 ?
7FFF00000000 ? 000000000 ?
dbgePostErrorKGE()+ call dbgeExecuteForError 2AAAAC2EF6F0 ? 2AAAAC2F03F0 ?
1615 () 000000001 ? 000000001 ?
000000000 ? 000000000 ?
dbkePostKGE_kgsf()+ call dbgePostErrorKGE() 000000000 ? 2AAAAC831168 ?
63 000000258 ? 2AAAAC2F03F0 ?
000000000 ? 000000000 ?
kgeadse()+383 call dbkePostKGE_kgsf() 00A99D520 ? 2AAAAC831168 ?
000000258 ? 2AAAAC2F03F0 ?
000000000 ? 000000000 ?
kgerinv_internal()+ call kgeadse() 00A99D520 ? 2AAAAC831168 ?
45 000000258 ? 000000000 ?
000000000 ? 000000000 ?
kgerinv()+33 call kgerinv_internal() 00A99D520 ? 2AAAAC831168 ?
DFDB079000000000 ?
000000258 ? 000000000 ?
000000000 ?
kgeasnmierr()+143 call kgerinv() 00A99D520 ? 2AAAAC831168 ?
DFDB079000000000 ?
000000000 ? 000000000 ?
000000000 ?
qcspcbua()+541 call kgeasnmierr() 00A99D520 ? 2AAAAC831168 ?
DFDB079000000000 ?
000000000 ? 0086F3390 ?
0000001A0 ?
qcspqbDescendents() call qcspcbua() 000000000 ? 00A99D520 ?
+3073 2AAAAC828288 ? 000000000 ?
0086F3390 ? 0000001A0 ?
qcspqb()+195 call qcspqbDescendents() 7FFFDFDB95C0 ? 2AAAAC823090 ?
2AAAAC825820 ? 000000000 ?
0086F3390 ? 0000001A0 ?
qcsevw()+401 call qcspqb() 7FFFDFDB95C0 ? 2AAAAC823090 ?
2AAAAC825820 ? 000000000 ?
0086F3390 ? 0000001A0 ?
qcsfpsq()+111 call qcsevw() 7FFFDFDB95C0 ? 00A99D520 ?
2AAAAC825250 ? 2AAAAC825820 ?
0086F3390 ? 0000001A0 ?
kkmfcbsq()+236 call qcsfpsq() 7FFFDFDB95C0 ? 00A99D520 ?
2AAAAC825250 ? 2AAAAC825820 ?
0086F3390 ? 0000001A0 ?
__PGOSF154_kkmpfcbk call kkmfcbsq() 7FFFDFDB95C0 ? 2AAAAC825250 ?
()+970 1CEEB8808 ? 7FFFDFDB95C0 ?
000000000 ? 0000001A0 ?
qcsprfro()+597 call __PGOSF154_kkmpfcbk 7FFFDFDB95C0 ? 00A99D520 ?
() 2AAAAC825250 ? 000000002 ?
000000000 ? 0000001A0 ?
最后查询了metalink,没想到这么新的bug也有记录:Bug 9182312: SELECT RETURNS ORA-0600 [QCSCBPCBUA]。简单的说就是Oracle在应该返回ORA-904错误的地方返回了ORA-600这个内部错误。至于引发的原因Oracle没有提,不过根据上面的错误判断,至少问题与树形查询的START WITH有关。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-625261/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4227/viewspace-625261/