ORA-07445 [evaopn3()+135] [SIGSEGV] [ADDR:0x4] [PC:0x96A535B] [Address not mapp ed to object]

环境
Linux: x86_64
DB: Oracle 单机 11.2.0.4

开发反映执行如下查询时报异常:无法从套接字获取更多数据。

select count(0)
from table_xxx
where col1='123'
and col2 in (select abc from test where test.a=table_xxx.a)
and starttime>sysdate-10
and starttime<sysdate;

检查数据库日志,存在如下报错
ORA-07445 [evaopn3()+135] [SIGSEGV] [ADDR:0x4] [PC:0x96A535B] [Address not mapp ed to object]

在Mos ORA-7445 [evaopn3] (文档 ID 860969.1) 找了下该报错的原因,在11.2.0.4中可能有如下Bug导致该问题

NB Prob Bug Fixed Description
III 13973434 12.1.0.2, 12.2.0.1 ORA-7445 [evaopn3] from SYS_CONNECT_BY_PATH
II 22611354 12.2.0.1 query with table, xmlsequence, extract, with fails with ORA-7445 [evaopn3()+135
III 21602931 12.2.0.1 ORA-7445[evaopn3] / ORA-7445 [evaopn3rset] using "_fix_control" = '14008590:off' or optimizer_features_enable<=11.2.0.3 in 11.2.0.4 or 12.1
I 20366844 12.2.0.1 ORA-07445 [evaopn3] Error on Query With Viirtual Column Based on Conversion Operators (TO_NUMBER(), TO_CHAR(), TO_DATE(), etc.)
III 19583063 12.2.0.1 ORA-7445 [evaopn3] from sub-query coalescing
III 19372080 12.2.0.1 ORA-7445 [evaopn3] from query with XMLTable evaluation
IIII 19031341 11.2.0.4.BP16, 12.1.0.2.DBBP07, 12.2.0.1 Wrong results / ORA-7445 [evaopn3] / ORA-600 from query with windows function with PARTITION BY and functional index
IIII 18621513 12.2.0.1 ORA-7445 [evaopn3()+125] running SELECT statement using REGEXP_REPLACE
III 17780863 12.2.0.1 ORA-7445 [evaopn3] from query with index join and functional index
II 17414008 12.1.0.2.160719, 12.2.0.1 Wrong results/ORA-7445 for functions returning object types
IIII 16520547 12.1.0.2, 12.2.0.1 A query with a table expression, GROUP BY and WITH fails with ORA-7445 [evaopn3]
IIII 14275161 11.2.0.4.BP16, 12.1.0.1 ORA-600 [rwoirw: check ret val] on CTAS with predicate move around
III 14174467 12.1.0.1 ORA-600 / ORA-7445 from query on hash clustered table with FGA
II 18453926 12.1.0.2, 12.2.0.1 ORA-7445 [evaopn3] with fix for bug 17935420 (affects CONNECT BY)
I 13391200 12.1.0.1 Queries with ANSI join using lateral view may fail with ora-7445 [evaopn3] or ora-7445 [kkoppjt]

经过测试发现只有在执行count(),且条件包含starttime列时才报错。
检查建表语句该字段的所以显示为函数索引 FUNCTION-BASED NORMAL
语句如下:

CREATE INDEX IDX_XXX_STARTTIME ON TABLE_XXX(STARTTIME,STARTTIME DESC);

很奇怪的建索引语句,删除重建后问题就解决了。
DROP INDEX IDX_XXX_STARTTIME;
CREATE INDEX IDX_XXX_STARTTIME ON TABLE_XXX(STARTTIME);
这是一个特别的案例,平时很难遇到。但上述的可能的Bug触发方式倒是可以借鉴。

学习如茶,需细细品味。
原文地址:https://www.cnblogs.com/plluoye/p/15166148.html