ORA-00600错误一例

来源:互联网 发布:富士康java工程师 编辑:程序博客网 时间:2024/05/16 11:17
ORA-00600错误一例,一个SQL运行时报ORA-00600的错误。

英文错误信息: ORA-00600: internal error code, arguments: [qkeAddDependentExpr1],[],[],[],[],[],[],[],[],[],[],[]
中文错误信息: ORA-00600 内部错误代码,参数:[qkeAddDependentExpr1],[],[],[],[],[],[],[],[],[],[],[]

SQL
SELECT c1, c2, c3
  FROM T1
WHERE EXISTS
(SELECT c4 FROM T2 WHERE .... 
  UNION
  SELECT c4 FROM T2 WHERE .. .);

数据库版本:11.2.0.2.0

分析
ORA-600错误是Oracle数据库内部错误,单从600这个错误号是没有办法定位问题的,ORA-00600可能由多种原因造成,包括软件漏洞、Bug、程序运行异常、内存讹误和数据讹误造成,具体需要结合错误信息中所提供的参数及日志来定位问题。
Error:  ORA 600Text:   internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s]-------------------------------------------------------------------------------Cause:  This is the generic internal error number for Oracle program exceptions. This indicates that a process has encountered an exceptional condition.Action: Report as a bug - the first argument is the internal error number *** Important: The notes below are for experienced users - See Note:22080.1Explanation:Any ORA-600 error indicates Oracle has detected an internal inconsistency or a problem which it doesnt know how best to address. These are *NOT* necessarily bugs and can occur for reasons such as Operating System IO problems, running out of some resource etc..

我们这个ORA-600问题奇怪之处在于那个Union,如果把Union换成Union All,就不会再报错了。

解决方法
其实我们没有找到根本的解决方案,我们的解决方法就是调整SQL来避过问题的,可能这个也只有Oracle内部才方便定位把。

BTW:有一个非常类似Note:ORA-07445 [kokmrwo()] When Executing Compound Queries (Doc ID 1422733.1),问题和我们的很接近,最终的解决方法也是调整SQL来避过问题的。

遇到ORA-600的错误,可以查阅下以下几个Note,看看能不能找到类似的情况。

关于ORA-600的参数,实际600 Internal Error的参数分成2种(copy from link):
a.第一位是数字类型的Argument ,例如之前说的2662 和 4000 , 不同的数字代表不同的错误含义。数字类型的argument所代表的内部错误相对更为普遍、常见。实际这些数字Argument也是来源于不同的Oracle Kernel Function内核函数,如kddummy_blkchk、kclchkinteg_2等; 

b.函数名形式的Argument。这类Argument 代表的Internal Error 相对于前一种要出现的频率低一些, Oracle开发部门尚来没有在相关版本中将这些Internal Error 编码。这样我们就可以看到出现问题的完整Kernel Function Name,可以使用ORA-600 + 第一位 Argument 在Metalink 上搜索来找到一些相关的Note,但是函数名形式的Argument往往不能精确定位到问题,因为不同的错误原因 可能在同一个内核函数中引发不同的异常,而这个时候我们只能看到 函数名的Argument 信息。
 

0 0
原创粉丝点击