在客户的告警日志中发现这个错误信息。
这个错误信息是第一次看到,而且在metalink中也没有找到任何相关的描述,详细的错误信息如下:
Fri Nov 19 11:47:47 2010
<krvrd.c:krvrdqgov>: Invalid dictionary process cntxt.
Fri Nov 19 11:47:47 2010
Errors in file /oracle/db/admin/B1MODDB/udump/b1moddb1_ora_4488.trc:
ORA-00600: internal error code, arguments: [krvxdds: duplicated session not ], [], [], [], [], [], [], []
ORA-01334: invalid or missing logminer dictionary processes context
Fri Nov 19 11:48:05 2010
Trace dumping is performing id=[cdmp_20101119114805]
Fri Nov 19 11:48:05 2010
Errors in file /oracle/db/admin/B1MODDB/udump/b1moddb1_ora_4488.trc:
ORA-07445: exception encountered: core dump [lsfcln()+49] [SIGSEGV] [Address not mapped to object] [0x4200757400696D65] [] []
ORA-00600: internal error code, arguments: [krvxdds: duplicated session not ], [], [], [], [], [], [], []
ORA-01334: invalid or missing logminer dictionary processes context
在ORA-600错误出现之前,报了一个C语言的错误,显然这是导致ORA-600错误的原因。分析ORA-600错误随后的ORA-1334错误,基本可以确定,根本错误原因是ORA-1334,而600错误是这个错误所引发的。
ORA-01334: invalid or missing logminer dictionary processes context
Cause: Unexpected internal error condition
Action: None
而这个ORA-1334同样是一个内容错误,既没有解释错误原因,也没有说明解决方法。
继续检查对应的TRACE信息:
/oracle/db/admin/B1MODDB/udump/b1moddb1_ora_4488.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Oracle Label Security, Data Mining
and Real Application Testing options
ORACLE_HOME = /oracle/db
System name: HP-UX
Node name: MODDB1
Release: B.11.23
Version: U
Machine: ia64
Instance name: B1MODDB1
Redo thread mounted by this instance: 1
Oracle process number: 0
Unix process pid: 4488, image: oracle@MODDB1
Ioctl ASYNC_CONFIG error, errno = 1
/oracle/db/admin/B1MODDB/udump/b1moddb1_ora_4488.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Oracle Label Security, Data Mining
and Real Application Testing options
ORACLE_HOME = /oracle/db
System name: HP-UX
Node name: MODDB1
Release: B.11.23
Version: U
Machine: ia64
Instance name: B1MODDB1
Redo thread mounted by this instance: 1
Oracle process number: 159
Unix process pid: 4488, image: oracle@MODDB1
*** ACTION NAME:() 2010-11-19 11:47:47.799
*** MODULE NAME:(TOAD 9.7.0.51) 2010-11-19 11:47:47.799
*** SERVICE NAME:(B1MODDB) 2010-11-19 11:47:47.799
*** SESSION ID:(473.17735) 2010-11-19 11:47:47.799
*** 2010-11-19 11:47:47.799
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [krvxdds: duplicated session not ], [], [], [], [], [], [], []
ORA-01334: invalid or missing logminer dictionary processes context
Current SQL statement for this session:
SELECT * FROM V$LOGMNR_CONTENTS
----- 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 ?
4000000003EDCDE0 ?
000000000 ? 000000000 ?
000000000 ?
ksfdmp()+48 call ksedmp() 000000003 ?
kgerinv()+304 call ksfdmp() C000000000000612 ?
000000003 ?
400000000938F250 ?
00001603B ? 000000000 ?
000000000 ?
kgeasnmierr()+144 call kgerinv() 6000000000031370 ?
40000000018E6B10 ?
6000000000032428 ?
40000000018E6B10 ?
9FFFFFFFFFFF62E0 ?
krvxdds()+368 call kgeasnmierr() 6000000000031370 ?
60000000001CF510 ?
60000000001CF520 ?
60000000000327A0 ?
40000000012AFBB0 ?
krvfpsc_PostSelectC call krvxdds() 9FFFFFFFBF3AABB0 ?
leanup()+432 9FFFFFFFFFFF6318 ?
C000000000000896 ?
4000000007161A50 ?
9FFFFFFFFFFF6308 ?
krvfcact()+4496 call krvfpsc_PostSelectC 9FFFFFFFBF37A0B8 ?
leanup() C0000000000013AE ?
4000000007162EC0 ?
0000160FB ?
9FFFFFFFBC8044A8 ?
9FFFFFFFFFFF6320 ?
9FFFFFFFFFFF6310 ?
qerfxFetch()+1040 call krvfcact() 9FFFFFFFFFFF6930 ?
9FFFFFFFBEF80500 ?
9FFFFFFFFFFF6330 ?
C0000000000015B3 ?
0000000CA ?
9FFFFFFFBD480738 ?
4000000002D65350 ?
9FFFFFFFFFFF6330 ?
opifch2()+9632 call qerfxFetch() C0000002D9618B28 ?
4000000001AD7CF0 ?
9FFFFFFFFFFF6B90 ?
0000001F4 ?
60000000000AAC20 ?
C000000000001F46 ?
4000000002D43740 ?
000018371 ?
opifch()+112 call opifch2() 9FFFFFFFFFFF7B50 ?
4000000002DBFA70 ?
000018287 ?
可以看到,导致错误产生的SQL是查询V$LOGMNR_CONTENTS视图的语句。除了这个错误信息外,还发现执行这个语句的客户端工具是TOAD:
(FOB) flags=2 fib=c00000032fa3a498 incno=0 pending i/o cnt=0
fname=/dev/vg12/rsystem
fno=1 lblksz=8192 fsiz=397311
----------------------------------------
SO: c00000033f60dfb0, type: 4, owner: c00000033f45b248, flag: INIT/-/-/0x00
(session) sid: 473 trans: 0000000000000000, creator: c00000033f45b248, flag: (8000041) USR/- BSY/-/-/-/-/-
DID: 0001-009F-00012412, short-term DID: 0001-009F-00012413
txn branch: 0000000000000000
oct: 3, prv: 0, sql: c0000002967468c0, psql: c0000002eed195f0, user: 0/SYS
service name: B1MODDB
O/S info: user: Ly, term: LIYAN, ospid: 3404:2428, machine: MSHOMELIYAN
program: toad.exe
application name: TOAD 9.7.0.51, hash value=1244923487
last wait for 'SQL*Net message from client' blocking sess=0x0000000000000000 seq=753 wait_time=16896447 seconds since wait started=18
driver id=54435000, #bytes=1, =0
配合ORA-600的第一个错误参数:krvxdds: duplicated session not,怀疑可能是TOAD在运行LOGMNR命令时,使用了多个窗口或者指定的字典有误,从而导致了这个错误出现。在告警日志中,出现了多次的LOGMNR的相关信息,但是这个错误只出现了一次,而这个错误在metalink都找不到,也说明这个错误很难触发。看来这可能是工具或者会话状态不正常引起的错误,只需要重新连接数据库,错误就不会再现,而且对于数据库而言基本没有影响。