ORA-00600: 内部错误代码, 参数: [qkacon:NFswrwo]

今天在调试一个存储过程中碰到一个ORA-00600内部错误,错误内容如下:

<!--more-->

ORA-00600: 内部错误代码, 参数: [qkacon:NFswrwo], [9], [], [], [], [], [], []
ORA-06512: 在 "CRMII.PCX_YYBXCJSZT", line 13
ORA-06512: 在 line 13
使用的环境是: linux 64+oracle 10.2.0.3 64
[oracle@crmdb2 ~]$ cat /etc/issue | grep Linux
Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
[oracle@crmdb2 ~]$ uname -a
Linux crmdb2 2.6.9-55.ELlargesmp #1 SMP Fri Apr 20 16:46:56 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
[oracle@crmdb2 ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.3.0 - Production on Wed Jan 19 13:54:49 2011

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

SQL> conn /as sysdba
Connected.
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

相关错误信息记录在了alert_sid.log
Errors in file /oracle/admin/CRMII/udump/crmii_ora_9875.trc:
ORA-00600: 内部错误代码, 参数: [qkacon:NFswrwo], [9], [], [], [], [], [], []
同时检查trc文件,里面详细记录的错误信息和相关的sql语句.
通过查询相关Oracle Database List of Bugs Fixed得知是个oracle Bug,bug信息:
5089217 OERI:[qkacon:NFswrwo] when using CONNECT BY with ORDER SIBLINGS
[oracle@crmdb2 ~]$ oerr ora 06512
06512, 00000, "at %sline %s"
// *Cause: Backtrace message as the stack is unwound by unhandled
// exceptions.
// *Action: Fix the problem causing the exception or write an exception
// handler for this condition. Or you may need to contact your
// application administrator or DBA.
解决办法是修改oracle隐含参数"_optimizer_connect_by_cost_based"为false. 有相同环境的同学可以测试下:
set linesize 132
column name format a30
column value format a25
select x.ksppinm name, y.ksppstvl value, y.ksppstdf isdefault,
decode(bitand(y.ksppstvf,7),1,'MODIFIED',
4,'SYSTEM_MOD','FALSE') ismod,
decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj
from sys.x$ksppi x, sys.x$ksppcv y
where x.inst_id = userenv('Instance')
and y.inst_id = userenv('Instance')
and x.indx = y.indx
and x.ksppinm like '%_&par%'
order by translate(x.ksppinm, ' _', ' ') /

alter system set "_optimizer_connect_by_cost_based"=false scope=memory;
alter system set "_optimizer_connect_by_cost_based"=true scope=memory;
原因是使用了CONNECT BY with语句,在特定环境出发了该bug。
-The End-

你可能感兴趣的:(ORA-00600)