且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

报错:ORA-07445: exception encountered: core dump [kkqtnloCbk()+111] [SIGSEGV]

更新时间:2022-02-25 13:31:31

今天QQ有问个问题,说有个应用报错3113,按照常规,让其检查了:

1、用户profile是否设置了idle_time参数,没有。

2、应用与数据库之间有防火墙超时设置,没有。


于是又问他是所有应用都报错,还是某个报错,反馈说是一个SQL,用到了full join。我觉得这个是SQL语法问题,和3113连接断开应该没有关系啊?于是又让他看alert文件有什么记录,反馈说有个报错:“ORA-07445: exception encountered: core dump [kkqtnloCbk()+111] [SIGSEGV] [unknown code] [0x000000000] [] []”。


没见过这种错误,于是搜索MOS,有两篇文章:

ORA-7445 (kkqtnlocbk) (文档 ID 406737.1)

说明kkqtnlocbk和4204383这个bug相关,Dump [kkqtnlocbk] optimizing ANSI OUTER JOINs with subqueries

在10.2.0.4, 11.1.0.6, 10.2.0.2.P08, 10.2.0.3.P05中修复。


ORA-07445: exception encountered: core dump [kkqtnloCbk()+111] [SIGSEGV] [unknown code] [0x000000000] [] []

说明在使用子查询的ANSI外连接语法时产生一个dump(但这只是一个总体的描述,实际现象可能不同)。临时的解决方法是设置_optimizer_cost_based_transformation值改为off。

描述这个bug在以下版本已经修复:

10.2.0.2 Patch 8 on Windows Platforms

10.2.0.3 Patch 5 on Windows Platforms

10.2.0.4 (Server Patch Set)

11.1.0.6 (Base Release)

他的错误数据库版本正是10.2.0.1,因此有理由怀疑这是由于数据库的bug导致的。解决方法就是上述要么临时设置参数值,要么只能通过打补丁修复。