环境
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触发方式倒是可以借鉴。