Errors in file /trace/xxx_pmon_27900.trc:
ORA-00600: internal error code, arguments: [17147], [0x069A35000], [], [], [], [], [], [], [], [], [], []
pmon 核心进程ora-600 17147 报错然后实例宕机,可能还会伴随其他错误比如
RA-07445: exception encountered: core dump [opiaba()+639] [SIGSEGV] [ADDR:0x0] [PC:0x186016B] [SI_KERNEL(general_protection)] []
ORA-00600: internal error code, arguments: [qcscbndv1], [65535], [], [], [], [], [], [], [], [], [], []
and
ORA-00600: internal error code, arguments: [17112], [0x4E34006F8], [], [], [], [], [], [], [], [], [], []
And other ORA-600[17nnn] or ORA-600[kghxxxx] errors.

问题原因

ora-600 [17147]引起实例crash是由于sql或pl/sql语句中绑定变量数据超过65535,Call Stack trace包含opiaba opiprs rpiswu2 kksLoadChild kxsGetRuntimeLock kksfbc命中bug 13973845。

这个 ORA-600[qcscbndv1] 错误是由于超出了 SQL 语句中允许的绑定变量65535数量的限制。当达到限制时,会引发 ORA-600[qcscbndv1],终止进程并启动清理。清理本身会受到影响,并导致伴内存损坏的错误。

解决方案

1、应用修改语句,避免同个sql出现超过65535的绑定变量数量。

2、数据库层面可以应用patch 12578873,以避免实例重启,但不能解决sql变量超过65535时引起的错误,sql变量超过65535仍然会报错,但不会引起实例重启。-- ora-600 [17147]

3、在 11.2(或 10.2.0.5)之前,此错误将报告为 ORA-7445[opiaba]。

如果将bug:6614936的修复应用于这些早期版本,则错误将是 ORA-600[qcscbndv1]。