crsd异常终止的根本原因是启动依赖链中断,最常见为ohasd未运行、ora.cssd心跳失败、ocr不可读或ipc资源被清空;需按ohasd→cssd→ocr→crsd顺序逐层排查。

CRSD 异常终止且无法拉起,根本原因不是“服务坏了”,而是它启动依赖链上某个环节卡死或失效——最常见的是 ohasd 没起来、ora.cssd 心跳断了、OCR 不可读,或者操作系统级 IPC 资源被清空。
crsctl check crs 报 CRS-4537:ohasd 根本没运行
这个错误意味着整个高可用框架底层已瘫痪,crsctl 连通信通道都没有。别急着 crsctl start crs,先看进程:
- 执行
ps -ef | grep ohasd—— 若无输出,说明ohasd进程完全没启动 - 检查
/etc/oracle/olr.loc是否存在且路径有效:cat /etc/oracle/olr.loc,内容应类似olrconfig_loc=/u01/app/19c/grid/cdata/olr.ocr;若路径不存在或权限是600(非644),ohasd会静默失败 - 手动启动:
sudo /u01/app/19c/grid/bin/crsctl start ohasd,之后必须立刻执行crsctl check crs确认返回CRS-4638
crsctl stat res -t -init 显示 ora.crsd 是 OFFLINE 或 INTERMEDIATE
加 -init 才能绕过通信层直查本地资源状态。此时重点不是硬启 ora.crsd,而是看它为什么起不来:
- 若
ora.crsd状态为INTERMEDIATE,说明依赖项(如ora.cssd、OCR 磁盘组)未就绪;查$ORACLE_HOME/log/<hostname>/crsd/crsd.log</hostname>最后 50 行,常见报错如"OCR not accessible"或"CSS is not ready" - 用
crsctl stat res ora.cssd -init单独看 CSSD 状态;若为OFFLINE,再查$GRID_HOME/log/<hostname>/cssd/ocssd.log</hostname>,重点关注"IPC Send timeout"或"Failed to connect to CSS daemon" - 确认私网连通性:
olsnodes -n应列出所有节点编号;若某节点缺失,大概率是防火墙拦了 UDP 42422(CSSD)或 12345(GIPCD)端口
OCR 和 ASM 磁盘组看似正常,但 crsd 启动时拒绝访问
ASM 实例能连上、v$asm_diskgroup 显示 MOUNTED,不代表 crsd 就能读 OCR —— 它用的是 grid 用户身份、走的是底层设备路径,权限和可达性必须双重验证:
- 用
asmcmd lsdg确认 OCR 所在磁盘组(如+OCRVOTE)状态是MOUNTED,不是CONNECTED或DISMOUNTED - 用
crsctl query css votedisk查投票盘路径,然后在每个节点上以root身份执行ls -l—— 裸设备需属主grid:oinstall、权限660;NFS 文件需644且挂载选项含noac - 用
ocrcheck验证 OCR 可读性;若报PROT-602: Failed to retrieve data from OCR,说明设备路径虽存在,但 grid 用户无读权限或 ASMLIB 映射错位
系统重启后 crsd 仍起不来,但日志里有 semget/shmget 失败
这是 Oracle 19c+ RAC 在 systemd 环境下的典型陷阱,和数据库配置无关,纯 OS 层干扰:
- 检查
RemoveIPC=yes:grep RemoveIPC /etc/systemd/logind.conf;若为yes,必须改为no并执行systemctl restart systemd-logind - 检查
DefaultTasksMax:systemctl show --property DefaultTasksMax;默认512远不够,需在/etc/systemd/system.conf中设为DefaultTasksMax=infinity,再执行systemctl daemon-reload - 异常终止后残留的 IPC 资源不会自动清理:用
ipcs -a查看是否有大量shm或sem残留;若有,用ipcs -m -q -s | awk '{print $2}' | xargs -I {} ipcrm -m {}类似命令清理(谨慎操作)
最容易被忽略的是时间同步与 OCR 设备权限的耦合问题:节点间时间差超 600 秒会直接导致 ora.cssd 拒绝启动,进而让 ora.crsd 卡在 INTERMEDIATE;而 OCR 设备权限错误又会让 ocrcheck 看似成功(因为 root 能读),但 crsd.bin 以 grid 身份运行时实际打不开——这两者叠加,日志里往往只报模糊的 “initialization failed”。











