Oracle SQL中使用正则表达式 执行报ORA-07445 [_intel_fast_

Oracle 版本:10.2.0.1

OS: Linux 64位

在SQL中使用了正则:

SELECT COUNT(*)

FROM  T

WHERE REGEXP_LIKE(T.NOTE, '^(.|+)*(\(二种同时存在一种\))+', 'i')

第一次可以执行,第二次执行报ORA-7445,session 中断。

Trace 文件中的记录如下:

Exception signal: 11 (SIGSEGV), code: 1(Address not mapped to object), addr: 0x5e, PC: [0x2a95574358,_intel_fast_memcpy.A()+10]

*** 2012-07-25 17:01:42.331

ksedmp: internal or fatal error

ORA-07445: exceptionencountered: core dump [_intel_fast_memcpy.A()+10] [SIGSEGV] [Address notmapped to object] [0x00000005E] [] []

MOS上有篇文档说明:

Ora-7445 [Kghalp] using REGEXP or TABLEfunctions [ID 415567.1]

在Oracle 10.1.0.4 到10.2.0.2 版本,在SQL 中使用正则表达式或者TABLE()函数。可能会触发ORA-7445的错误。MOS中提到的是:

ORA-07445: exception encountered: core dump[kghalp()+53]

这里的core dump 与我这里的有所不同,根据MOS的说明,在使用正则或者表函数导致的ORA-7445错误,core dump 还应该包含:kghalp evarxalc lxreggenpblxregcomp lxkRegexpComp  ...

这里导致这个错误是Oracle 的 bug:4440681,不过我这里的现象和这个bug 有一定出入,但也排除了其他的几个可能的原因。还是怀疑和这个bug有关,该Bug 在oracle 10.2.0.3以后的版本中已经修复,让朋友将DB 升级到10.2.0.4,在测试一下。

相关推荐