Oracle ORA-07445 [0000000000000000] 错误分析

1. OS 和DB 版本

DB Version: 9.2.0.6

OS Version:HP-UXiasd5_pb B.11.23 U ia64 0515426764 unlimited-user license

2.alert log

Thu Oct11 18:14:17 2012

Errors infile /Oracle/product/9.2.0/rdbms/log/ingwdb_ora_17366.trc:

ORA-07445: exception encountered: core dump [0000000000000000][SIGSEGV] [Invalid permissions for mapped object] [0x000000000] [] []

Thu Oct11 18:15:10 2012

Errors infile /oracle/product/9.2.0/rdbms/log/ingwdb_ora_17665.trc:

ORA-07445:exception encountered: core dump [0000000000000000] [SIGSEGV] [Invalidpermissions for mapped object] [0x000000000] [] []

Thu Oct11 18:15:33 2012

Errors infile /oracle/product/9.2.0/rdbms/log/ingwdb_ora_18405.trc:

ORA-07445:exception encountered: core dump [9fffffff7f79e8b0] [SIGILL] [Illegal opcode][0x9FFFFFFF7F79E8B0] [] []

Fri Oct12 10:08:25 2012

Errors infile /oracle/product/9.2.0/rdbms/log/ingwdb_ora_6934.trc:

ORA-07445:exception encountered: core dump [0000000000000000] [SIGSEGV] [Invalidpermissions for mapped object] [0x000000000] [] []

Fri Oct12 10:08:53 2012

Errors infile /oracle/product/9.2.0/rdbms/log/ingwdb_ora_7134.trc:

ORA-07445:exception encountered: core dump [0000000000000000] [SIGSEGV] [Invalidpermissions for mapped object] [0x000000000] [] []

Fri Oct12 10:10:42 2012

Errors infile /oracle/product/9.2.0/rdbms/log/ingwdb_ora_8290.trc:

ORA-07445:exception encountered: core dump [9fffffff7f79e8b0] [SIGILL] [Illegal opcode][0x9FFFFFFF7F79E8B0] [] []

Fri Oct12 10:11:46 2012

Errors infile /oracle/product/9.2.0/rdbms/log/ingwdb_ora_9434.trc:

ORA-07445:exception encountered: core dump [0000000000000000] [SIGSEGV] [Invalidpermissions for mapped object] [0x000000000] [] []

Fri Oct12 10:45:00 2012

Errors infile /oracle/product/9.2.0/rdbms/log/ingwdb_ora_23859.trc:

ORA-07445:exception encountered: core dump [0000000000000000] [SIGSEGV] [Invalidpermissions for mapped object] [0x000000000] [] []

Fri Oct12 10:45:26 2012

Errors infile /oracle/product/9.2.0/rdbms/log/ingwdb_ora_25087.trc:

ORA-07445:exception encountered: core dump [0000000000000000] [SIGSEGV] [Invalidpermissions for mapped object] [0x000000000] [] []

Fri Oct12 10:47:14 2012

Errors infile /oracle/product/9.2.0/rdbms/log/ingwdb_ora_25149.trc:

ORA-07445:exception encountered: core dump [0000000000000000] [SIGSEGV] [Invalidpermissions for mapped object] [0x000000000] [] []

Fri Oct12 11:04:11 2012

Errors infile /oracle/product/9.2.0/rdbms/log/ingwdb_ora_4122.trc:

ORA-07445:exception encountered: core dump [0000000000000000] [SIGSEGV] [Invalidpermissions for mapped object] [0x000000000] [] []

3.Trace file

*** 2012-10-12 11:04:11.922

*** SESSION ID:(14.6203) 2012-10-1211:04:11.922

Exception signal: 11 (SIGSEGV), code: 2(Invalid permissions for mapped object), addr: 0x0, PC: [0x0, Cannot findsymbol in ?锜?

0000000000000000]

  r1:9fffffff7f79f668      r20:40000000008d5170      br5:                0

  r2:c0000000cb643000      r21:9fffffff7f5082a0      br6:                0

 r3:            851b      r22:                8      br7: e0000000015917e0

  r4:9fffffff7f508d68      r23:656e71756575655f        ip:                0

  r5:9fffffffffff1dd8      r24:                8     iipa:                0

  r6:9fffffffffff1dd4      r25:                8      cfm:                3

  r7:9fffffffffff1de4      r26:40000000008d5178        um:              3a

 r8:                0      r27: 9fffffff7f5082a8      rsc:              1f

  r9:9fffffff7f740600      r28:40000000008d5170      bsp:9fffffff7f801938

 r10:                0      r29: 9fffffff7f5082a0  bspstore: 9fffffff7f801938

 r11:60000000003fdc30      r30:                0      rnat:                0

 r12:9fffffffffff1150      r31:                0      ccv:                1

 r13:9fffffff7f7cd420      NaTs:                0      unat:                0

 r14:7265736f75726365      PRs:            cc5b      fpsr:   9804c8a74433f

 r15:656e71756575655f      br0:4000000002835ec0      pfs:c00000000000060f

 r16:                2      br1:                0        lc:                0

 r17:c0000000919d2800      br2:                0        ec:                0

 r18:60000000003ec990      br3:               0      isr: 9fffffff7f801938

 r19:              73      br4:                0      ifa:                0

Reason code: 0052

*** 2012-10-12 11:04:11.923

ksedmp: internal or fatal error

ORA-07445: exception encountered: core dump[0000000000000000] [SIGSEGV] [Invalid permissions for mapped object][0x000000000] [] []

Current SQL statement for this session:

INSERT INTOSTATS$RESOURCE_LIMIT ( SNAP_ID , DBID , INSTANCE_NUMBER , RESOURCE_NAME ,CURRENT_UTILIZATION , MAX_UTILIZATION , INITIAL_ALLOCATION , LIMIT_VALUE )SELECT :B3 , :B2 , :B1 , RESOURCE_NAME , CURRENT_UTILIZATION , MAX_UTILIZATION, INITIAL_ALLOCATION , LIMIT_VALUE FROM V$RESOURCE_LIMIT WHERE LIMIT_VALUE != 'UNLIMITED' AND MAX_UTILIZATION > 0

----- PL/SQL Call Stack -----

 object      line  object

 handle    number  name

c00000009284ced8      2235 package body PERFSTAT.STATSPACK

c00000009284ced8        91 package body PERFSTAT.STATSPACK

c000000093a2f120        1 anonymous block

4.定位问题与解决方案

在Oracle 9.2.0.6 下的bug 3628622 引起。 当对V$RESOURCE_LIMIT 进行select 和 insert时有2个相关的bug:

Bug 4171822 : SELECT * FROM V$RESOURCE_LIMIT FAILS WITH ORA-07445:

ORA-7445[Qerfxfetch] On Insert Into STATS$RESOURCE_LIMIT [ID 742723.1](bug 3628622)

根据trace 文件中的信息,我们这里的是insert时触发的ORA-7445。所以对应bug:3628622。

该bug不会对数据库产生影响,Oracle 对该bug 并没有提供one-off的patch,所以要解决该bug就必须将数据库升级到更高的版本。 建议升级到11.2.0.3.4.

5.导致该问题的本质原因

触发该bug的本质原因在MOS的另一篇文章里有说明:

ORA-7445 Errors on Itanium Platforms due toItanium Symbol Preemption [ID 302172.1]

Cause

Due to Intel's ELF ABI Architecture onItanium Platforms code constructs like:

(*function_pointer)(<list ofparameters>)

i.e. dereferencing a function pointervariable allows for symbol preemption.

On Itanium global variables are adressedindirectly through a global offset process table. The offsets are relative tothe global pointer address (gp).

At runtime due to symbol preemption thefunction pointer address may end up at a location where it cannot be directlyaddressed from the gp value.

This was seen to happen with Oraclefunction pointer variables which were stored in and later reread from the SGA.

As a result the process could not find theexecutable code address and terminated with SIGSEGV.

相关推荐