crs-4537错误本质是ohas未启动,需先执行ps -ef | grep ohasd确认进程是否存在;若无输出,检查/etc/oracle/olr.loc路径有效性及权限(应为644),再sudo crsctl start ohasd并验证crsctl check crs返回crs-4638。

ohasd 启动失败不是配置没生效,而是整个高可用框架根本没起来——所有 crsctl 命令都会失效,强行重跑 root.sh 只会让 OCR、IPC 和临时 socket 污染更严重。
crsctl check crs 报 CRS-4537:先确认 ohasd 是否存活
这个错误本质是 OHAS 层未启动,不是 CRS 资源启不动。crsctl check crs 依赖本地 ohasd 进程通信,一旦它挂了,所有 crsctl 命令都返回 CRS-4537。
- 立刻执行
ps -ef | grep ohasd—— 如果无输出,说明进程根本没起来,别碰crsctl start crs - 检查
/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: Oracle High Availability Services is online才算过关
systemd 环境下 ohasd.service 启动失败(status=203/EXEC)
在 RHEL7/CentOS7/Oracle Linux 7+ 上安装 11.2.0.4 或 12.1.0.1,ohasd 默认不兼容 systemd,ExecStart 指向的 /etc/init.d/init.ohasd 在 root.sh 执行前还不存在,此时配 service 必然报 status=203/EXEC。
- 不能在
root.sh运行前就systemctl enable ohasd.service—— 此时init.ohasd文件还没生成,服务会反复崩溃 - 正确时机:等
root.sh执行到一半,/etc/init.d/init.ohasd出现后,立刻systemctl daemon-reload && systemctl enable ohasd && systemctl start ohasd - 更稳妥方案:打官方补丁
18370031(针对 11.2.0.4),它修正了 systemd 下的启动入口和依赖顺序 - 若已失败,先
systemctl stop ohasd && systemctl disable ohasd,再清理残留:rm -f /var/tmp/.oracle/* /tmp/.oracle/*
ohasd 启动后 crsctl start crs 卡在 ora.cssd
ora.cssd 是集群心跳核心,它不依赖数据库,但强依赖 OCR 和 voting disk 的磁盘组是否已 MOUNTED、路径是否可达、权限是否一致。
- 用
asmcmd lsdg看 OCR 所在磁盘组(如OCRVOTE)状态 —— 若是DISMOUNTED,需先sqlplus / as sysasm执行ALTER DISKGROUP OCRVOTE MOUNT - 运行
crsctl query css votedisk,确认输出路径在所有节点上都能被root用户读取(如+OCRVOTE或/dev/mapper/mpathb),且ls -l显示属主为grid:oinstall、权限为660(裸设备)或644(NFS 文件) - 检查私网连通性:
olsnodes -n应列出全部节点编号;若某节点缺失,查$GRID_HOME/log/<hostname>/cssd/ocssd.log</hostname>中IPC Send timeout或Failed to connect to CSS daemon,大概率是防火墙拦了 UDP 12345 或私网网卡 down 了
真正容易被忽略的是:即使 ohasd 起来了、crsctl check crs 返回 CRS-4638,也不代表 OCR 已注册成功。一定要盯住 crsctl stat res -t 中 ora.cssd 和 ora.diskmon 是否都是 ONLINE,否则后续所有资源(包括 ASM 实例)都会卡在 INTERMEDIATE 状态。











