在10.2.0.4 RAC for X86-64环境上出现了ORA-7445[_intel_fast_memcpy.A]的错误。
以前碰到过几次的memcpy有关的错误,但是这个错误函数是第一次碰到:
Sat Apr 7 17:27:11 2012 Errors IN file /opt/app/oracle/admin/orcl/bdump/orcl1_j002_16579.trc: ORA-07445: exception encountered: core dump [_intel_fast_memcpy.A()+10] [SIGSEGV] [Address NOT mapped TO object] [0x2A9734C000] [] [] |
本以为这个错误不是太常见,结果查询MOS采发现,原来类似的错误还是很常见的,于是进一步比对详细的TRACE信息:
*** 2012-04-07 17:27:11.099 *** ACTION NAME:() 2012-04-07 17:27:11.099 *** MODULE NAME:() 2012-04-07 17:27:11.099 *** SERVICE NAME:(SYS$USERS) 2012-04-07 17:27:11.099 *** CLIENT ID:() 2012-04-07 17:27:11.099 *** SESSION ID:(4124.53396) 2012-04-07 17:27:11.099 Exception signal: 11 (SIGSEGV), code: 1 (Address NOT mapped TO object), addr: 0x2a9734c000, PC: [0x2a95575608, _intel_fast_memcpy.A()+10] *** 2012-04-07 17:27:11.129 ksedmp: internal OR fatal error ORA-07445: exception encountered: core dump [_intel_fast_memcpy.A()+10] [SIGSEGV] [Address NOT mapped TO object] [0x2A9734C000] [] [] CURRENT SQL statement FOR this SESSION: UPDATE E_INVENTORY SET FREEZN_SIZE = FREEZN_SIZE + (:B2 ) WHERE ID = :B1 ----- PL/SQL Call Stack ----- object line object handle NUMBER name 0x223a947d8 15 PROCEDURE ECOMMERCE.FREEZEN_UPDATE_JOB 0x3e6922098 1 anonymous block ----- Call Stack Trace ----- calling CALL entry argument VALUES IN hex location TYPE point (? means dubious VALUE) -------------------- -------- -------------------- ---------------------------- ksedst()+31 CALL ksedst1() 000000000 ? 000000001 ? 2A97153D50 ? 2A97153DB0 ? 2A97153CF0 ? 000000000 ? ksedmp()+610 CALL ksedst() 000000000 ? 000000001 ? 2A97153D50 ? 2A97153DB0 ? 2A97153CF0 ? 000000000 ? ssexhd()+629 CALL ksedmp() 000000003 ? 000000001 ? 2A97153D50 ? 2A97153DB0 ? 2A97153CF0 ? 000000000 ? __funlockfile()+64 CALL ssexhd() 00000000B ? 2A97154D70 ? 2A97154C40 ? 2A97153DB0 ? 2A97153CF0 ? 000000000 ? _intel_fast_memcpy. signal __funlockfile() 2A9734C000 ? 2A9734C000 ? A()+10 FFFFFFFFFFFFF82E ? 1FFFFFFFFFFFE12C ? 2A9733D130 ? 2A9733A430 ? updgrh()+2927 CALL _intel_fast_memcpy. 2A9733D138 ? 2A9734C000 ? A() 1FFFFFFFFFFFE12C ? 1FFFFFFFFFFFE12C ? 2A9733D130 ? 2A9733A430 ? upduaw()+115 CALL updgrh() 3AB891A30 ? 2A97339F10 ? 3AB891A30 ? 1FFFFFFFFFFFE12C ? 400000001 ? 401C1F878 ? kdusru()+528 CALL upduaw() 2A9733B1F8 ? 000000000 ? 2A9733A1E8 ? 24A9A9EF0 ? 400000001 ? 401C1F878 ? kauupd()+450 CALL kdusru() 2A9733CFA4 ? 000000000 ? 2A97339F10 ? 000000000 ? E1E797900000000 ? 401C1F878 ? updrow()+1658 CALL kauupd() 2A9733CFA0 ? 000000000 ? 2A97339F10 ? 000000000 ? 3D5FAA0A0 ? 000000007 ? qerupRowProcedure() CALL updrow() 3B3C43ED0 ? 000007FFF ? +80 2A97339F10 ? 000000000 ? 3D5FAA0A0 ? 000000007 ? qerupFetch()+667 CALL qerupRowProcedure() 3B3C43ED0 ? 000007FFF ? 2A97339F10 ? 000000000 ? 3D5FAA0A0 ? 000000007 ? updaul()+1065 CALL qerupFetch() 000000007 ? 000000000 ? 226024078 ? 000007FFF ? 3D5FAA0A0 ? 2260242A8 ? updThreePhaseExe()+ CALL updaul() 3B3C43ED0 ? 7FBFFF7290 ? 379 000000000 ? 2A9733AF40 ? 3D5FAA0A0 ? 2260242A8 ? updexe()+600 CALL updThreePhaseExe() 3B3C43ED0 ? 000000000 ? 2A97339F10 ? 7FBFFF73B0 ? 3D5FAA0A0 ? 2260242A8 ? opiexe()+4577 CALL updexe() 3B3C43ED0 ? 000000000 ? 2A97339F10 ? 7FBFFF73B0 ? 000000000 ? 2260242A8 ? opipls()+2025 CALL opiexe() 000000004 ? 000000005 ? 7FBFFF89BC ? 00000000D ? 000000000 ? 2260242A8 ? opiodr()+984 CALL opipls() 000000066 ? 000000006 ? 7FBFFFA0B0 ? 000000000 ? 2A9769E410 ? 400000000 ? rpidrus()+198 CALL opiodr() 000000066 ? 000000006 ? 7FBFFFA0B0 ? 00000000D ? 0059DF890 ? 400000000 ? skgmstack()+158 CALL rpidrus() 7FBFFF96F8 ? 000000006 ? 7FBFFFA0B0 ? 00000000D ? 0059DF890 ? 400000000 ? rpidru()+116 CALL skgmstack() 7FBFFF96D0 ? 0067B42E0 ? 00000F618 ? 0022F61B8 ? 7FBFFF96F8 ? 400000000 ? rpiswu2()+420 CALL rpidru() 7FBFFF9D90 ? 0067B42E0 ? 00000F618 ? 0022F61B8 ? 7FBFFF96F8 ? 400000000 ? rpidrv()+1519 CALL rpiswu2() 42167D498 ? 000000044 ? 7FBFFF9D70 ? 000000002 ? 7FBFFF9DD8 ? 000000044 ? psddr0()+438 CALL rpidrv() 00000000D ? 000000066 ? 7FBFFFA0B0 ? 000000038 ? 7FBFFF9DD8 ? 000000044 ? psdnal()+386 CALL psddr0() 00000000D ? 000000066 ? 7FBFFFA0B0 ? 000000030 ? 7FBFFF9DD8 ? 000000044 ? pevm_EXECC()+376 CALL psdnal() 7FBFFFABF0 ? 7FBFFFADE0 ? 7FBFFFA0B0 ? 2A97332EE8 ? 00000000F ? 000000044 ? pfrinstr_EXECC()+80 CALL pevm_EXECC() 2A97335640 ? 7FBFFFADE0 ? 000000020 ? 2A97332EE8 ? 00000000F ? 000000044 ? pfrrun_no_tool()+65 CALL pfrinstr_EXECC() 2A97335640 ? 18DD12140 ? 2A973356A8 ? 2A97332EE8 ? 00000000F ? 7F00000020 ? pfrrun()+906 CALL pfrrun_no_tool() 2A97335640 ? 18DD12140 ? 2A973356A8 ? 2A97332EE8 ? 00000000F ? 7F00000020 ? plsql_run()+841 CALL pfrrun() 2A97335640 ? 000000000 ? 2A973356A8 ? 7FBFFFABF0 ? 00000000F ? 3CA6A9264 ? peicnt()+298 CALL plsql_run() 2A97335640 ? 000000001 ? 000000000 ? 7FBFFFABF0 ? 00000000F ? 900000000 ? kkxexe()+503 CALL peicnt() 7FBFFFABF0 ? 2A97335640 ? 2A97308830 ? 7FBFFFABF0 ? 2A973067D8 ? 900000000 ? opiexe()+4691 CALL kkxexe() 2A97336890 ? 2A97335640 ? 2A97308830 ? 4095E69F0 ? 0040F066F ? 900000000 ? opiodr()+984 CALL opiexe() 000000004 ? 000000004 ? 7FBFFFCFB0 ? 000000005 ? 0040F066F ? 900000000 ? rpidrus()+198 CALL opiodr() 000000004 ? 000000004 ? 7FBFFFCFB0 ? 000000005 ? 0059DE940 ? 900000000 ? skgmstack()+158 CALL rpidrus() 7FBFFFC808 ? 000000004 ? 7FBFFFCFB0 ? 000000005 ? 0059DE940 ? 900000000 ? rpidru()+116 CALL skgmstack() 7FBFFFC7E0 ? 0067B42E0 ? 00000F618 ? 0022F61B8 ? 7FBFFFC808 ? 900000000 ? rpiswu2()+420 CALL rpidru() 7FBFFFCEA0 ? 0067B42E0 ? 00000F618 ? 0022F61B8 ? 7FBFFFC808 ? 900000000 ? rpidrv()+1519 CALL rpiswu2() 42167D498 ? 000000044 ? 7FBFFFCE80 ? 000000002 ? 7FBFFFCEE8 ? 100000044 ? rpiexe()+65 CALL rpidrv() 000000005 ? 000000004 ? 7FBFFFCFB0 ? 00000000A ? 7FBFFFCEE8 ? 100000044 ? kkjex1e()+7155 CALL rpiexe() 000000005 ? 000000004 ? 7FBFFFCFB0 ? 00000000A ? 7FBFFFCEE8 ? 100000044 ? kkjsexe()+339 CALL kkjex1e() 7FBFFFDD4C ? 0000001B9 ? 000000000 ? 7FBFFFDD30 ? 4285C8110 ? BFFF000700000001 ? kkjrdp()+892 CALL kkjsexe() 7FBFFFDD4C ? 0000001B9 ? 000000000 ? 000000001 ? 4285C8110 ? BFFF000700000001 ? opirip()+1140 CALL kkjrdp() 7FBFFFDD4C ? 0000001B9 ? 000000000 ? 000000001 ? 4285C8110 ? BFFF000700000001 ? opidrv()+582 CALL opirip() 000000032 ? 000000004 ? 7FBFFFF438 ? 000000001 ? 4285C8110 ? BFFF000700000001 ? sou2o()+114 CALL opidrv() 000000032 ? 000000004 ? 7FBFFFF438 ? 000000001 ? 4285C8110 ? BFFF000700000001 ? opimai_real()+317 CALL sou2o() 7FBFFFF410 ? 000000032 ? 000000004 ? 7FBFFFF438 ? 4285C8110 ? BFFF000700000001 ? main()+116 CALL opimai_real() 000000003 ? 7FBFFFF4A0 ? 000000004 ? 7FBFFFF438 ? 4285C8110 ? BFFF000700000001 ? __libc_start_main() CALL main() 000000003 ? 7FBFFFF4A0 ? +219 000000004 ? 7FBFFFF438 ? 4285C8110 ? BFFF000700000001 ? _start()+42 CALL __libc_start_main() 0007139F8 ? 000000001 ? 7FBFFFF5E8 ? 0052B4BD0 ? 000000000 ? 000000003 ? --------------------- Binary Stack Dump --------------------- |
根据错误堆栈对比,确认属于ORA-07445 [_memcpy] And/Or [_memmove] And/Or ORA-07445 [kgidum] And/Or [kgscDump]during updates in 9.2.0.8 or 10.2.0.4 [ID 729206.1]描述的未发布BUG 5868257。
这个错误是在进行UPDATE操作时导致了内存结构损坏,这个错误发生在9.2.0.8和10.2.0.4环境下,是由于解决了Bug 4549673而引入的。
解决方法包括升级到10.2.0.5或11.1.0.6,或者针对特定的平台打Patch 5868257。除了这些方法外,由于问题和行迁移有关,对出现错误的表进行MOVE来消除行迁移,也可以避免错误的产生。