ORA-3113是后台进程崩溃后的表象,真正原因需查alert.log中紧邻的致命错误(如ORA-07445、ORA-27102、ORA-19809等),RAC环境还需结合crs_stat和GRID日志定位单节点或集群级故障。

直接看 alert.log 里最后几条致命错误,再结合 crsctl stat res -t 确认资源状态——90% 的异常终止不是数据库内部逻辑问题,而是底层依赖崩了。
查 CRS 资源链是否断裂
实例异常终止后别急着 srvctl start database,先跑:crsctl stat res -t
重点看三类资源状态:
-
ora.asm是OFFLINE或INTERMEDIATE:说明 ASM 实例根本没起来,或起来了但没挂上 OCR/voting 磁盘组;此时数据库实例不可能稳住 -
ora.<db_name>.db</db_name>是OFFLINE:CRS 根本没尝试启动它,不是数据库参数错,是前置依赖(如 ASM、网络心跳)失败了 -
ora.<node_name>.votingfile</node_name>显示FAILED:voting disk 不可读,节点可能已被驱逐,crsctl check cluster -all会报CRS-4639或CRS-4124
若发现某资源卡在 INTERMEDIATE,立刻查对应日志:tail -50 $GRID_HOME/log/<node_name>/agent/ohasd/oraagent_grid.log</node_name>
翻 alert.log 最后 20 行找根因线索
Oracle RAC 实例终止前几乎必留明确错误,不要跳过时间戳连续的几行。重点关注:
-
ORA-29770:LMS/LMHB 进程检测到跨节点通信停滞(比如私网丢包、网卡软中断压满),通常伴随"Some process(s) is not making progress"和LMHB terminating the instance -
ORA-15064:ASM 通信失败,说明数据库进程已无法连接 ASM 实例,常见于 ASM 崩溃、ASM 磁盘组 DISMOUNTED、或 ASM 实例所在节点自身异常 -
ORA-00393:线程恢复未完成就执行ALTER DATABASE DISABLE THREAD,多见于异常关闭后未做完整恢复就强行操作 -
Fatal NI connect error 12537:网络层断连,常出现在虚拟化环境网卡驱动不稳、或防火墙重置连接时
注意:同一时间点多个进程(LGWR、LMS0、ASMB、PMON)同时报错,基本可判定是系统级故障(I/O hang、CPU 耗尽、私网中断),而非单个 SQL 或事务问题。
验证 ASM 和磁盘组是否真正可用
即使 ora.asm 显示 ONLINE,也不代表 ASM 能正常服务——RAC 实例依赖 ASM 读取 SPFILE、控制文件、数据文件。必须手动验证:
- 用
sqlplus / as sysasm登录任意节点 ASM 实例,运行:SELECT name, state, type FROM v$asm_diskgroup;
确保包含 SPFILE 和控制文件的磁盘组(如+DATA、+FRA)状态为MOUNTED,不是DISMOUNTED或空行 - 确认 SPFILE 路径有效:
srvctl config database -d <db_name> | grep "SPFILE"</db_name>
然后在 ASM 中检查该路径是否存在:asmcmd ls <spfile_path></spfile_path> - 若磁盘组显示
MOUNTED但 ASM 查询极慢或超时,可能是底层存储响应异常(如多路径切换失败、WWID 不一致),需查asmcmd lsdsk -k和系统dmesg
别忽略操作系统级资源残留和内核参数
尤其对 Oracle 11g RAC,实例异常终止后若 IPC 资源未清理,下次启动会直接失败,报 ORA-27154、ORA-27300 等,且 ps 可能仍看到残留的 ora_pmon_* 进程 ID(但实际已僵死):
- 先停 CRS:
crsctl stop crs(root 用户) - 清共享内存段和信号量:
ipcs -m | awk '$5 == "oracle" {print $2}' | xargs -I {} ipcrm -m {}ipcs -s | awk '$5 == "oracle" {print $2}' | xargs -I {} ipcrm -s {} - 检查内核参数是否生效:
sysctl kernel.shmmax kernel.shmall
值必须 ≥ 单实例sga_max_size(字节),且所有节点完全一致
真正容易被绕开的是:ipcs -m 输出为空,但 ORA-27154 仍在——这时要查 /proc/sys/kernel/shmmax 是否被容器或虚拟化平台强制覆盖,而不是只信 sysctl.conf 配置。


















