在客户的10.2.0.3环境中发现这个错误。
告警日志中错误为:
Mon Sep 20 10:21:04 2010 Errors IN file /home/oracle/admin/ARIC/udump/aric_ora_3776.trc: ORA-07445: exception encountered: core dump [SIGSEGV] [Address NOT mapped TO object] [4294967377] [] [] [] |
对应的trace信息中的详细错误为:
*** 2010-09-20 10:21:04.190 *** ACTION NAME:() 2010-09-20 10:21:04.160 *** MODULE NAME:(TOAD 8.6.1.0) 2010-09-20 10:21:04.160 *** SERVICE NAME:(ARIC) 2010-09-20 10:21:04.160 *** SESSION ID:(97.27478) 2010-09-20 10:21:04.160 Exception signal: 11 (SIGSEGV), code: 1 (Address NOT mapped TO object), addr: 0x100000051 *** 2010-09-20 10:21:04.190 ksedmp: internal OR fatal error ORA-07445: exception encountered: core dump [SIGSEGV] [Address NOT mapped TO object] [4294967377] [] [] [] CURRENT SQL statement FOR this SESSION: SELECT sid, owner, TYPE, object FROM v$access WHERE sid = '769' OR sid = '204' OR sid = '655' OR sid = '431' ----- 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 kglLockIterator()+3 ? 0000000000000001 0FFFFFFFF 0FFFFFFFF 00000000B 80 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 --------------------- |
这是一个TOAD客户端在访问动态视图时出现的问题。
这个错误对应的bug信息为:ORA-07445 KGLLOCKITERATOR, _INTEL_FAST_MEMCPY, KGLNAO and Other Errors Selecting From V$ Views [ID 403163.1],影响版本从9.2.0.1到10.2.0.3。
导致问题的原因是访问了某些参考了X$KGLLK对象的V$动态视图。
当前的SQL访问了V$ACCESS,检查V$FIXED_VIEW_DEFINITION视图:
SQL> SELECT VIEW_DEFINITION 2 FROM V$FIXED_VIEW_DEFINITION 3 WHERE VIEW_NAME = 'V$ACCESS'; VIEW_DEFINITION ------------------------------------------------------------------------------------------- SELECT SID , OWNER , OBJECT , TYPE FROM GV$ACCESS WHERE inst_id = USERENV('Instance') SQL> SELECT VIEW_DEFINITION 2 FROM V$FIXED_VIEW_DEFINITION 3 WHERE VIEW_NAME = 'GV$ACCESS'; VIEW_DEFINITION ------------------------------------------------------------------------------------------- SELECT DISTINCT s.inst_id,s.ksusenum,o.kglnaown,o.kglnaobj,o.kglobtyd FROM x$ksuse s,x$kglob o,x$kgldp d,x$kgllk l WHERE l.kgllkuse=s.addr AND l.kgllkhdl=d.kglhdadr AND l.kglnahsh=d.kglnahsh AND o.kglnahsh=d.kglrfhsh AND o.kglhdadr=d.kglrfhdl |
可以看到,V$ACCESS视图会访问x$kgllk内部视图。
这个bug在11.1和10.2.0.4中被fixed。