客户的10.2.0.2环境在告警日志中出现这个错误。
错误信息为:
Thu Oct 27 21:18:03 2011 Errors IN file /oracleapp/oracle10g/admin/ora10/udump/ora10_ora_27896.trc: ORA-00600: internal error code, arguments: [kgscLogOff-notempty], [1], [], [], [], [], [], [] Thu Oct 27 21:18:05 2011 Errors IN file /oracleapp/oracle10g/admin/ora10/udump/ora10_ora_27896.trc: ORA-00600: internal error code, arguments: [kgscLogOff-notempty], [1], [], [], [], [], [], [] ORA-00081: address range [0x6000000000127430, 0x6000000000127434) IS NOT readable ORA-00600: internal error code, arguments: [kgscLogOff-notempty], [1], [], [], [], [], [], [] |
查询MOS发现这个bug是在会话LOG OFF的时候报错。其实从错误信息中也可以看到这一点。
*** SERVICE NAME:(SYS$USERS) 2011-10-27 21:18:03.874 *** SESSION ID:(488.65460) 2011-10-27 21:18:03.874 *** 2011-10-27 21:18:03.874 ksedmp: internal OR fatal error ORA-00600: internal error code, arguments: [kgscLogOff-notempty], [1], [], [], [], [], [], [] ----- Call Stack Trace ----- calling CALL entry argument VALUES IN hex location TYPE point (? means dubious VALUE) -------------------- -------- -------------------- ---------------------------- ksedst()+64 CALL _etext_f()+23058430 000000000 ? 000000001 ? 09017162224 ksedmp()+1680 CALL _etext_f()+23058430 000000000 ? 09017162224 C000000000000D20 ? 40000000052B0470 ? 000000000 ? 000000000 ? 000000000 ? ksfdmp()+48 CALL _etext_f()+23058430 000000003 ? 09017162224 kgerinv()+400 CALL _etext_f()+23058430 400000000944F6F0 ? 09017162224 000000003 ? C000000000000612 ? 000008F07 ? 000000000 ? 000000000 ? kgeasnmierr()+144 CALL _etext_f()+23058430 6000000000015C50 ? 09017162224 6000000000016D08 ? 6000000000014240 ? 600000000011C078 ? 6000000000017070 ? $cold_kgscLogOff()+ CALL _etext_f()+23058430 6000000000015C50 ? 144 09017162224 6000000000268350 ? 6000000000268360 ? 6000000000017080 ? 000000000 ? 000000001 ? kkslof()+320 CALL _etext_f()+23058430 6000000000015C50 ? 09017162224 opifcs()+592 CALL _etext_f()+23058430 C0000001E8158788 ? 09017162224 C000000000000E21 ? 4000000002DB9C40 ? 000000000 ? 000000000 ? ksuxds()+1504 CALL _etext_f()+23058430 C0000001E8158788 ? 09017162224 4000000002E57DE0 ? 000008F9F ? 9FFFFFFFBF56BFC4 ? 9FFFFFFFBF56BFC6 ? C0000001E8158788 ? 00000003F ? 9FFFFFFFBF56BFBC ? ksudel()+128 CALL 0000000000000006 C0000001E8159B78 ? 60000000001274D4 ? 9FFFFFFFFFFF6A90 ? 600000000011D1C0 ? opilof()+2624 CALL 0000000000000006 C0000001E8158788 ? 6000000000127678 ? 4000000003D0C7E0 ? C0000000000011A9 ? 00000810D ? 60000000001274D4 ? opiodr()+2064 CALL <kernel> 9FFFFFFFFFFF80B0 ? 400000000304FDD0 ? 00000820F ? 9FFFFFFFFFFF7020 ? 600000000011D1C0 ? C000000000001836 ? Cannot find symbol IN . Cannot find symbol IN . ttcpip()+1824 CALL __text_start_f()+22 6000000000129A70 ? 765064 6000000000015DD0 ? 9FFFFFFFFFFFA790 ? 6000000000015DD0 ? 9FFFFFFFFFFF80C0 ? 600000000011D1C0 ? 000000000 ? 6000000000021838 ? opitsk()+2224 CALL 0000000000000000 6000000000021830 ? 000000000 ? 9FFFFFFFFFFFA790 ? 000000000 ? 9FFFFFFFFFFFA900 ? 9FFFFFFFFFFFA6F4 ? 4000000001EA0780 ? 9FFFFFFFFFFFA6E8 ? opiino()+1920 CALL _etext_f()+23058430 000000000 ? 000000000 ? 09016090072 600000000011D1C0 ? 40000000023A45D0 ? 000008001 ? 9FFFFFFFFFFFA6E4 ? opiodr()+2064 CALL _etext_f()+23058430 00000003C ? 09016090072 9FFFFFFFFFFFF0D0 ? 9FFFFFFFFFFFF0C0 ? 9FFFFFFFFFFFBE00 ? 000000084 ? 600000000010EC20 ? opidrv()+1104 CALL __text_start_f()+22 6000000000129A70 ? 767104 6000000000015DD0 ? 9FFFFFFFFFFFF0C0 ? 6000000000015DD0 ? 9FFFFFFFFFFFC950 ? 600000000011D1C0 ? sou2o()+240 CALL _etext_f()+23058430 00000003C ? 000000004 ? 09017120608 9FFFFFFFFFFFF0C0 ? opimai_real()+240 CALL _etext_f()+23058430 9FFFFFFFFFFFF0E0 ? 09017120608 00000003C ? 000000004 ? 9FFFFFFFFFFFF0C0 ? main()+352 CALL _etext_f()+23058430 000000000 ? 09017120608 9FFFFFFFFFFFF110 ? main_opd_entry()+80 CALL _etext_f()+23058430 000000002 ? 09017120608 9FFFFFFFFFFFF5C0 ? C000000000033910 ? 000000000 ? --------------------- Binary Stack Dump --------------------- |
MOS中没有记录进一步的信息,不过根据后面的ORA-81错误,可以判断,应该是会话进行退出登录的清理动作时,发现了内存中有部分地址不可读,造成了这个错误的产生。
检查trace还可以发现下面的信息:
Memory dump OF process state object: Dump OF memory FROM 0xC0000001E804BEE8 TO 0xC0000001E804C6D8 C0000001E804BEE0 ******** ******** [********] C0000001E804BEF0 ******** ******** ******** ******** [****************] Repeat 125 times C0000001E804C6D0 ******** ******** [********] Symbolic dump OF process state object: kqfdumpvar: address 0xC0000001E804BEE8 cannot be dumped AS TYPE 'ksupr' (8 bytes are unreadable) KSFD PGA DUMPS NUMBER OF completed I/O requests=0 flags=0 END OF PROCESS STATE |
显然在处理PGA的时候,处理8个字节的地址不可读,导致了这个ORA-600错误。根据MOS中的记录,由于错误发生在LOG OFF的时候,可以简单的忽略这个问题,并不会对系统造成影响,而这个错误在10.2.0.4和11.1.0.6中被fixed。
One Response to ORA-600(kgscLogOff-notempty)错误