和第一次碰到这个错误不同,这次是在10.2环境中出现的。
ORA-600(17281)(1001)错误:http://yangtingkun.itpub.net/post/468/514806
告警日志中错误信息为:
Tue Jan 31 15:55:55 2012
Errors in file /oracle/admin/ORCL/udump/orcl_ora_6225970.trc:
ORA-00600: internal error code, arguments: [17281], [1001],
[0x70000059AB9BE38], [], [], [], [], []
ORA-01001: invalid cursor
详细TRACE信息如下:
Dump file /oracle/admin/ORCL/udump/orcl_ora_6225970.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
ORACLE_HOME = /oracle/orcl/10.2.0
System name: AIX
Node name: porcl2
Release: 1
Version: 6
Machine: 00F67AD94C00
Instance name: ORCL
Redo thread mounted by this instance: 1
Oracle process number: 503
Unix process pid: 6225970, image: oracleORCL@porcl2
*** SERVICE NAME:(SYS$USERS) 2012-01-31 15:55:55.419
*** SESSION ID:(4136.11880) 2012-01-31 15:55:55.419
*** 2012-01-31 15:55:55.419
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [17281], [1001],
[0x70000059AB9BE38], [], [], [], [], []
ORA-01001: invalid cursor
Current SQL statement for this session:
declare cursor NlsParamsCursor is SELECT * FROM
nls_session_parameters;begin SELECT
Nvl(Lengthb(Chr(65536)), Nvl(Lengthb(Chr(256)), 1)) INTO :CharLength FROM dual; for NlsRecord in NlsParamsCursor loop if NlsRecord.parameter =
'NLS_DATE_LANGUAGE' then
:NlsDateLanguage := NlsRecord.value; elsif NlsRecord.parameter =
'NLS_DATE_FORMAT' then
:NlsDateFormat := NlsRecord.value;
elsif NlsRecord.parameter = 'NLS_NUMERIC_CHARACTERS' then :NlsNumericCharacters :=
NlsRecord.value; elsif
NlsRecord.parameter = 'NLS_TIMESTAMP_FORMAT' then :NlsTimeStampFormat :=
NlsRecord.value; elsif
NlsRecord.parameter = 'NLS_TIMESTAMP_TZ_FORMAT' then :NlsTimeStampTZFormat :=
NlsRecord.value; end if; end loop;end;
----- Call Stack Trace -----
calling call entry
argument values in
hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedst+001c bl ksedst1 000000008 ? 000000000 ?
ksedmp+0290 bl ksedst 1048E2120 ?
ksfdmp+0018 bl 03F34B6C
kgeriv+0108 bl _ptrgl
kgeasi+0118 bl kgeriv 11046CD88 ? 1101B37C0 ?
104A364BC ? 7000000100067F8 ?
000000000 ?
kgicli+0188 bl kgeasi 110190630 ? 1104AE040 ?
438100004381 ? 200000002 ?
200000002 ? 000000000 ?
0000003E9 ? 000000002 ?
kgidlt+0398 bl kgicli 000000800 ? 000000001 ?
kgidel+0018 bl kgidlt FFFFFFFFFFF91A8 ? 000000000 ?
000000001 ? 000000000 ?
FFFFFFFFFFF9558
?
perabo+00ac bl kgidel FFFFFFFFFFF90E8 ? 1102247F0 ?
perdcs+0034 bl perabo FFFFFFFFFFF9440 ? 110190630 ?
FFFFFFFFFFF91A0 ?
peidcs+01dc bl perdcs FFFFFFFFFFF92F0 ? 110190630 ?
kkxcls+00a4 bl peidcs FFFFFFFFFFF9558 ? 11046A640 ?
kxsClean+0044 bl kkxcls 1100C99F8 ?
kxsCloseXsc+0444 bl kxsClean FFFFFFFFFFF9850 ?
kksCloseCursor+031c bl kxsCloseXsc 11046D038 ? 000000000 ?
opicca+00c4 bl kksCloseCursor 104A503C0 ?
opiclo+0098 bl opicca 1001376F0 ?
kpoclsa+0050 bl 03F35D58
opiodr+0adc bl _ptrgl
ttcpip+1020 bl _ptrgl
opitsk+10b0 bl ttcpip 1100C99F8 ? 90000000063A614 ?
FFFFFFFFFFFB680
?
2842288400000001 ?
9000000007307A8 ? 000000001 ?
11062EAF8 ? FFFFFFFFFFFB820 ?
opiino+0990 bl opitsk 000010860 ? 000000000 ?
opiodr+0adc bl _ptrgl
opidrv+0474 bl opiodr 3C1028E590 ? 4102909B0 ?
FFFFFFFFFFFF490 ? 0A0082608 ?
sou2o+0090 bl opidrv 3C02AB579C ? 4A0071248 ?
FFFFFFFFFFFF490 ?
opimai_real+01bc bl 01FA4A34
main+0098 bl opimai_real 000000000 ? 000000000 ?
__start+0070 bl main 000000000 ? 000000000 ?
--------------------- Binary Stack Dump ---------------------
查询MOS发现这是JDBC THIN CLIENT导致的,具体文档参考Intermittent ORA-600 [17281], ORA[1001] With JDBC Thin Client [ID 436914.1],这个问题与Bug 4359111非常类似,但是这个bug已经在10.2.0.2中被FIXED,而当前数据库的版本是10.2.0.3,而当前的问题影响的版本就包含10.2.0.3,且堆栈中的错误函数可以完全对应到文档给出的错误信息。
这个问题在10.2.0.4以后被修正,11g中同样修正了这个问题。如果短期数据库不会升级,且错误频繁发生,可以考虑替换客户端的ojdbc14.jar文件为10.2.0.4版,因为这个问题的解决是在JDBC客户端,因此客户端的驱动更新后,这个问题就可以被修正,而不需要升级数据库本身的版本。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-715590/ ,如需转载,请注明出处,否则将追究法律责任。