在客户的告警日志中发现这个错误信息。
这个错误信息是第一次看到,而且在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: MSHOME\LIYAN 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都找不到,也说明这个错误很难触发。看来这可能是工具或者会话状态不正常引起的错误,只需要重新连接数据库,错误就不会再现,而且对于数据库而言基本没有影响。