华创信科oracle培训:数据库ORA-600[kcbchg1_6]解决。
1.背景描述
从2008年12月31日开始,数据库在执行大的update语句是出现ORA-600[kcbchg1_6]报错,导致部分业务无法正常完成。
2.原因分析
从metalink找到文档Doc ID: 745188.1(ORA-600 [kcbchg1_6] And ORA_600 [13011 After Installtion of Patch 5868257),在这个问题的描述中,和辽宁省电信出的问题非象吻合,以下是Metalink的原文:
Applies to:
Oracle Server - Enterprise Edition - Version: 10.2.0.4
HP-UX Itanium
HP IA64 HPUNIX
Symptoms
After installation of Patch 5868257, it's possible to get the ORA-00600: [kcbchg1_6]
errors during update and ORA-600 [13011] errors on some occasions.
----- Call Stack Trace -----
ksedst
Changes
After installation of Patch 5868257.
Cause
The first version of Patch 5868257 has been created with a wrong compiler optimization.
Solution
A new version of Patch 5868257 has been done.
Simply backout the original fix and download the new version of OCT-23-2008.
在ARDB数据库的报错trace文件中,产生的call stack trace如下:
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedst()+64 call ksedst1() 000000000 ? 000000001 ?
ksedmp()+2176 call ksedst() 000000000 ?
C000000000000C9F ?
4000000003F956E0 ?
000000000 ? 000000000 ?
000000000 ?
ksfdmp()+48 call ksedmp() 000000003 ?
kgerinv()+304 call ksfdmp() C000000000000612 ?
000000003 ?
400000000942D5D0 ?
00002E90B ? 000000000 ?
000000000 ?
kgeasnmierr()+144 call kgerinv() 6000000000031340 ?
40000000019C1B80 ?
60000000000323F8 ?
40000000019C1B80 ?
9FFFFFFFFFFF27E0 ?
$cold_kcbchg1_main( call kgeasnmierr() 6000000000031340 ?
)+2096 60000000001FAD20 ?
60000000001FAD30 ?
6000000000032770 ?
000000010 ? 000000000 ?
C0000000000023CF ?
4000000002DD7810 ?
kcbchg1()+272 call $cold_kcbchg1_main( 000000000 ? 000000002 ?
) 9FFFFFFFFFFF32A8 ?
9FFFFFFFFFFF32D8 ?
000000000 ? 000000000 ?
ktuchg()+2000 call kcbchg1() 000000000 ? 000000002 ?
9FFFFFFFFFFF32A8 ?
9FFFFFFFFFFF32D8 ?
000000000 ? 000000000 ?
9FFFFFFFFFFF2C00 ?
60000000000B5D40 ?
ktbchg2()+704 call ktuchg() 000000002 ? 000000000 ?
000000001 ? 000000000 ?
000000001 ?
60000000001E9070 ?
60000000000C6188 ?
60000000000C29F0 ?
kdu_array_flush()+4 call ktbchg2() 60000000000C29E0 ?
816 C0000003836D2DE8 ?
000000000 ?
60000000001EB938 ?
60000000001E9070 ?
9FFFFFFF7FBCA5A8 ?
60000000001EB870 ?
9FFFFFFFFFFF35F8 ?
qerupFetch()+2512 call kdu_array_flush() 9FFFFFFFFFFF3F20 ?
4000000002C25BD0 ?
9FFFFFFFFFFF36F0 ?
60000000000B5D40 ?
0000284DD ?
9FFFFFFFFFFF39F8 ?
updaul()+3552 call qerupFetch() C0000003836D3218 ?
000000000 ?
9FFFFFFFFFFF3F38 ?
000007FFF ?
9FFFFFFFFFFF3F30 ?
60000000000B5D40 ?
9FFFFFFFFFFF46C0 ?
C00000000000193A ?
updThreePhaseExe()+ call updaul() 9FFFFFFF7FBC9B2C ?
2928 9FFFFFFFFFFF4C2C ?
600000000003B7D0 ?
9FFFFFFFFFFF4700 ?
60000000000B5D40 ?
9FFFFFFFFFFF5150 ?
4000000002FD0D60 ?
0000282D1 ?
updexe()+736 call updThreePhaseExe() C0000003A45AC448 ?
000000000 ?
9FFFFFFF7FBCA560 ?
9FFFFFFFFFFF5200 ?
opiexe()+7872 call updexe() C0000003A45AC448 ?
C0000003836D2E7C ?
C0000003836D2E50 ?
9FFFFFFF7FBCA560 ?
9FFFFFFF7FBC9B40 ?
9FFFFFFF7FBC9B2C ?
C0000003836D318C ?
9FFFFFFF7FBC9B20 ?
kpoal8()+3872 call opiexe() 9FFFFFFFFFFF70A0 ?
4000000002A511E0 ?
00001E815 ?
9FFFFFFFFFFF5420 ?
60000000000B5D40 ?
C0000000000012AD ?
60000000000C27C8 ?
60000000000314C0 ?
opiodr()+2128 call kpoal8() 9FFFFFFFFFFF77D0 ?
C000000000001530 ?
9FFFFFFFFFFF9EB0 ?
9FFFFFFFFFFF70F0 ?
60000000000B5D40 ?
9FFFFFFF7FBC7F90 ?
ttcpip()+1680 call opiodr() 00000005E ? 000000017 ?
4000000001AD5D80 ?
0000046B0 ?
9FFFFFFFFFFF77E0 ?
opitsk()+2336 call ttcpip() 600000000003D0C0 ?
000000001 ?
9FFFFFFFFFFF9EB0 ?
000000001 ?
9FFFFFFFFFFFA020 ?
9FFFFFFFFFFF9E14 ?
4000000001BBBD60 ?
000000000 ?
opiino()+1840 call opitsk() 000000000 ? 000000000 ?
60000000000B5D40 ?
40000000027C7430 ?
0000180CD ?
4000000001AD5D98 ?
opiodr()+2128 call opiino() 00000003C ?
9FFFFFFFFFFFC870 ?
9FFFFFFFFFFFF010 ?
9FFFFFFFFFFFBD30 ?
60000000000B5D40 ?
C000000000001530 ?
opidrv()+1088 call opiodr() 00000003C ? 000000004 ?
4000000001AD5830 ?
0000046B0 ?
9FFFFFFFFFFFC880 ?
60000000000B5D40 ?
sou2o()+336 call opidrv() 00000003C ?
9FFFFFFFFFFFF010 ?
60000000000C27C0 ?
opimai_real()+224 call sou2o() 9FFFFFFFFFFFF030 ?
00000003C ? 000000004 ?
9FFFFFFFFFFFF010 ?
main()+368 call opimai_real() 000000000 ?
9FFFFFFFFFFFF060 ?
main_opd_entry()+80 call main() 000000002 ?
9FFFFFFFFFFFF4F8 ?
60000000000B5D40 ?
C000000000000004 ?
--------------------- Binary Stack Dump ---------------------
和文档描述的call stack trace一致,说明是同样的问题。
3.需要确认的问题
从数据库的install_xxx.log中确认是否存在补丁5868257已被安装,也可以通过RDA收集opatch的安装记录确定是否存在补丁5868257,并确定补丁安装的日期是在OCT-23-2008之前。
4.解决办法
通过更新OCT-23-2008后新版的补丁5868257。补丁文件名为p5868257_10204_HPUX-IA64.zip。
在更新补丁之前请备份现有的Oracle软件。
5.忠告
更件补丁存在一定的风险,请在有丰富经验的工程师的指导下更新补丁。