欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle SQL中使用正则表达式 执行报ORA-07445 [_intel_fast_memcpy.A()+10]

程序员文章站 2022-05-14 21:40:12
...

Oracle SQL中使用正则表达式 执行报ORA-07445 [_intel_fast_memcpy.A()+10] 错误,这里导致这个错误是Oracle 的 bug:4440681,不

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,在测试一下。

Oracle SQL中使用正则表达式 执行报ORA-07445 [_intel_fast_memcpy.A()+10]