ORA-00600是Oracle内核级内部错误,无明确语义,需立即检查alert.log和对应.trc跟踪文件,提取方括号参数(如[kcbzwfcro_2]、[qosdExpStatRead: expcnt mismatch])定位故障模块,严禁直接重启以避免丢失关键上下文。
ORA-00600报错后,第一反应不是重启,而是找alert.log和.trc文件
ora-00600是oracle内核级错误,不带明确语义,但每次报错都附带一串方括号参数(如[kcbzwfcro_2]、[qosdexpstatread: expcnt mismatch]),这些才是定位根因的唯一线索。直接重启实例只会掩盖现场,丢失关键上下文。
必须立刻检查:
-
/u01/app/oracle/diag/rdbms/—— 查看错误发生时间点前后5分钟内的连续报错链(比如先有/ /alert/alert_ .log ORA-00600 [15851],紧接着ORA-07445导致LMS崩溃) - 错误行中明确指出的trace路径,例如:
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_j000_28639362.trc—— 这个文件比alert日志更细,含调用栈、内存地址、SQL ID、块地址(rdba: 0x2f000002)等 - 对应incident目录下的
_i文件(如.trc orcl2_j000_28639362_i11489377.trc),它被ADRCI自动归档,包含结构化诊断元数据
从.trc里快速抓出三个关键信息:函数名、对象号、SQL ID
Trace文件动辄几十MB,没必要通读。重点盯住三类标记行:
- 函数调用栈顶部几行:找以
kj、kcb、kds、qosd等开头的函数名,它们暴露模块归属(如kjbrcvt属RAC缓存融合,qosdExpStatRead属统计信息采集) - 对象定位线索:搜索
obj:、objn:、file#、block#、rdba:—— 比如file#: 188 rdba: 0x2f000002 (188/2)可反查对象:select owner,segment_name from dba_extents where file_id=188 and 2 between block_id and block_id+blocks-1; - 触发SQL:搜索
SQL ID:或sql_text:附近内容;若没显式记录,看SESSION ID和MODULE NAME(如sqlservr.exe常指向SQL Server链接服务器操作)
参数[kdsgrp1]和[qosdExpStatRead: expcnt mismatch]代表完全不同的故障域
不同参数意味着不同模块出问题,处理路径截然不同:
-
[kdsgrp1]:数据访问层异常,典型表现是索引ROWID指向的数据块中找不到记录(row 0x030b33a7.0 ... slot 0 not found)。本质是数据块逻辑损坏或缓存不一致,需检查DBVERIFY、重建索引、甚至考虑DBMS_REPAIR修复 -
[qosdExpStatRead: expcnt mismatch]:统计信息采集模块内部计数器错乱,常见于DBMS_STATS并发收集或自动任务(SYS_AUTO_SQL_TUNING_TASK)执行时。优先停掉自动统计任务,手动重收集相关表,再观察是否复现 -
[kjbrcvt:!S]或[15851]:RAC特有,指向GCS(Global Cache Service)或LMON/LMS进程通信异常,往往伴随节点驱逐。此时要查网络延迟、心跳丢包、共享存储IO卡顿,而非单查SQL
别跳过ADRCI和SRDC,它们能自动提取你漏掉的关联线索
人工翻trace容易遗漏跨进程、跨实例的隐含关联。Oracle自带工具能结构化聚合信息:
- 用
adrci进到对应ADR路径后执行:show incident -mode detail -p "problem_key like 'ORA 600%'",它会列出所有同类型incident及关联trace - 运行
diagcollection.pl或通过Support Workbench生成SRDC包,它会自动提取:最近1小时所有实例的alert日志片段、相关trace、AWR快照、初始化参数对比、甚至RAC GES/GCS状态摘要 - 特别注意
ORA-00600常伴生其他错误(如ORA-07445core dump、ORA-08103object no longer exists),SRDC会把它们按时间轴对齐,避免你误判为孤立事件
最易被忽略的一点:RAC环境下,一个节点报[kcbzwfcro_2],另一节点可能同时在lmd trace里打出global cache element stuck —— 单看一个节点的trace永远看不到全貌。











