客户数据库中出现ORA-7445错误,导致错误的SQL在访问V$ACCESS视图。
错误信息如下:
Sun Sep 19 17:15:17 2010 Errors IN file /home/oracle/admin/ARIC/udump/aric_ora_26489.trc: ORA-07445: exception encountered: core dump [SIGSEGV] [Address NOT mapped TO object] [0] [] [] [] |
对应的详细TRACE:
/home/oracle/admin/ARIC/udump/aric_ora_26489.trc Oracle DATABASE 10g Enterprise Edition Release 10.2.0.3.0 - Production WITH the Partitioning, OLAP AND DATA Mining options ORACLE_HOME = /home/oracle/product/10.2.0 System name: SunOS Node name: aric Release: 5.10 Version: Generic_127128-11 Machine: i86pc Instance name: ARIC Redo thread mounted BY this instance: 1 Oracle process NUMBER: 51 Unix process pid: 26489, image: oracleARIC@aric *** 2010-09-19 17:15:17.370 *** ACTION NAME:() 2010-09-19 17:15:17.339 *** MODULE NAME:(TOAD 8.6.1.0) 2010-09-19 17:15:17.339 *** SERVICE NAME:(ARIC) 2010-09-19 17:15:17.339 *** SESSION ID:(202.3926) 2010-09-19 17:15:17.339 Exception signal: 11 (SIGSEGV), code: 1 (Address NOT mapped TO object), addr: 0x0 *** 2010-09-19 17:15:17.371 ksedmp: internal OR fatal error ORA-07445: exception encountered: core dump [SIGSEGV] [Address NOT mapped TO object] [0] [] [] [] CURRENT SQL statement FOR this SESSION: SELECT sid, owner, TYPE, object FROM v$access WHERE sid = '651' ----- Call Stack Trace ----- calling CALL entry argument VALUES IN hex location TYPE point (? means dubious VALUE) -------------------- -------- -------------------- ---------------------------- ksedst()+23 ? 0000000000000001 0017B341C 000000000 0062E5A60 000000000 ksedmp()+636 ? 0000000000000001 0017B1EB1 000000000 00000000B 000000000 ssexhd()+729 ? 0000000000000001 000E90E7E 000000000 0062E5B90 000000000 sigsetjmp()+25 ? 0000000000000001 0FDDC00B6 0FFFFFD7F 0062E5B50 000000000 call_user_handler() ? 0000000000000001 0FDDB53A2 0FFFFFD7F 0062E5EF0 +589 000000000 sigacthandler()+163 ? 0000000000000001 0FDDB5588 0FFFFFD7F 0FF3FB2F0 0FFFFFD7F _memcpy()+245 ? 0000000000000001 0FFFFFFFF 0FFFFFFFF 00000000B 000000000 kglLockIterator()+5 ? 0000000000000001 003E36CE1 000000000 0C582FDCC 96 000000000 kqlftl()+194 ? 0000000000000001 001F2A4B7 000000000 000000000 000000000 qerfxFetch()+4999 ? 0000000000000001 00340E894 000000000 000000000 000000000 qerjotFetch()+214 ? 0000000000000001 0033BEBA3 000000000 0060B9478 000000000 qerjotFetch()+280 ? 0000000000000001 0033BEBE5 000000000 0000001F4 000000000 qerghFetch()+293 ? 0000000000000001 0034C19B2 000000000 0000001F4 000000000 qervwFetch()+158 ? 0000000000000001 0033BCFBB 000000000 0000001F4 000000000 opifch2()+2608 ? 0000000000000001 002932E8D 000000000 000000000 000000000 kpoal8()+3638 ? 0000000000000001 0028CF6BB 000000000 000000000 000000000 opiodr()+1087 ? 0000000000000001 000E97C5C 000000000 000000000 000000000 ttcpip()+1165 ? 0000000000000001 003D9F6CA 000000000 005F663F8 000000000 opitsk()+1278 ? 0000000000000001 000E939C3 000000000 000E97840 000000000 opiino()+931 ? 0000000000000001 000E96F08 000000000 005F5D840 000000000 opiodr()+1087 ? 0000000000000001 000E97C5C 000000000 000000000 000000000 opidrv()+748 ? 0000000000000001 000E924C1 000000000 0FFDFF8C8 0FFFFFD7F sou2o()+86 ? 0000000000000001 000E8F8FB 000000000 000000000 000000000 opimai_real()+127 ? 0000000000000001 000E552D4 000000000 000000000 000000000 main()+95 ? 0000000000000001 000E551A4 000000000 000000000 000000000 0000000000E54FE7 ? 0000000000000001 000E54FEC 000000000 000000000 000000000 --------------------- Binary Stack Dump --------------------- |
导致错误产生的语句很简单,就是一个简单的单表查询,只不过访问的是Oracle的动态性能视图表。而这种情况下出现的错误,基本上可以确定是bug。
根据错误号sigsetjmp检查MOS信息,发现包括堆栈信息在内的各方面信息都与Bug 7149072: ORA-7445 OCCURS WHEN SELECTING FROM V$ACCESS描述的一致,只不过这个bug描述并不是一个基本BUG,而这个问题对应的基本bug是:Bug 4969005 Dump [kglLockIterator] querying V$ views,而这个bug描述中对应的kglLockIterator和memcpy错误函数在当前错误中同样存在,而且当前数据库版本的也是受影响的10.2.0.3,基本上可以确定bug了。
这个BUG在11.2.0.4和11.1.0.6中被fixed。