1 问题描述
告警日志报错 : ORA-00600: internal error code, arguments: [13013], [5001], [29041], [506300], [40], [506300], [17], []
2 问题分析
(1) 分析日志中的trace文件
可以发现报错的sql语句是一个merge语句 ,按照某个条件查找,如果找到就update,找不到insert
-
MERGE INTO 表 CR
-
USING (SELECT 1 FROM DUAL)
-
ON (条件 )
-
WHEN MATCHED THEN
-
UPDATE
-
WHEN NOT MATCHED THEN
-
INSERT
(2)尝试处理
重新分析了这个表,没有坏块,索引页重建,但是程序依然报错
(3) oracle关于 这个错误,有一个单独的文档 【oracle文档 430365.1】,详细描述了信息
导致这个问题的原因
This is due to unpublished bug 5085288 fixed in 11.1 where the ORA-600 [13013] [5001] error can occur on a MERGE command if the DELETE pass encounters a consistent read (CR) error due to the update pass having updated the same row and column previously.
ORA-600[13013] can occur when executing a MERGE statement with an update branch if there is a hiden column either updated by a trigger
or used for supplemental logging.
我们的数据库由于某些特殊原因,所有的表均开了 supplemental logging 选项。
3 解决问题
要求开放改写这一段代码,不用merge , 问题解决
Rewrite the MERGE statement to either use different columns in the UPDATE and DELETE clauses, or as separate commands.
Alternatively, download and apply a version of Patch 5085288 suitable for your Oracle version and platform, if available.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/617982/viewspace-1411105/
,如需转载,请注明出处,否则将追究法律责任。