今天,生产环境出现一个错误。错误信息如下:
运维人员将错误信息里的SQL语句提取出来,并单独放到PL/SQL里执行。执行出现以下错误:
这个SQL语句之前跑都没有问题,为什么在这个环境执行会有问题。于是我们放到公司的测试环境跑,问题不会重现。这两个环境只有版本差异,没有其他特殊差异。
生产环境是11.2.0.1版本,测试环境是11.2.0.4版本。
通过查看alert警告日志,发现数据库出现严重的ORA-07445,看到这个错误就直接联想到ORA-600和ORA-700错误。看来问题有点严重。
具体的错误信息如下:
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x68] [PC:0x105A4CA, kkestGetColGroupNdv()+20] [flags: 0x0, count: 1]
Errors in file /data/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_8278.trc (incident=10024):
ORA-07445: exception encountered: core dump [kkestGetColGroupNdv()+20] [SIGSEGV] [ADDR:0x68] [PC:0x105A4CA] [Address not mapped to object] []
Wed Mar 08 18:03:06 2017
Sweep [inc][10024]: completed
登录MOS,将错误代码输入进行查询。查询结果告诉我们,这个是11.2.0.1版本中的一个bug问题。
查询错误参考:ORA-600/ORA-7445/ORA-700 Error Look-up Tool (文档 ID 153788.1)
具体bug描述参考:Bug 9474259 - Dump[kkestGetColGroupNdv] optimizing query (文档 ID 9474259.8)
SQL> alter system set "_optimizer_enable_extended_stats" = false scope=both;
System altered.
通过调整隐式参数,现已经将问题解决。