CRS-4537错误本质是OHAS未启动,需先检查ohasd进程是否运行;若未运行,确认/etc/oracle/olr.loc路径有效后执行crsctl start ohasd,并用crsctl check crs验证是否显示CRS-4638。
crsctl 是诊断和修复 Oracle 19c RAC CRS 启动失败最直接的工具,但很多人卡在“执行 crsctl start crs 没反应”或“crsctl check crs 报 CRS-4537”,其实问题往往不在 CRS 本身,而在它依赖的底层服务或资源状态异常。盲目重启或重跑 root.sh 可能加剧 OCR 损坏。
crsctl check crs 报 CRS-4537:先确认 ohasd 是否存活
这个错误不是 crs 资源启不动,而是整个高可用框架根本没起来。crsctl check crs 依赖本地 ohasd 进程通信,一旦它挂了,所有 crsctl 命令都会失效。
- 立刻执行
ps -ef | grep ohasd—— 如果无输出,说明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” 才算过关
crsctl start crs 卡在 ora.cssd 或超时:检查 OCR/voting disk 可访问性
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 了
crsctl stat res -t 显示 ora.storage ONLINE INTERMEDIATE:ASM 实例起来了但挂不了盘
这表示 ora.asm 进程已启动,但无法访问 OCR 或 voting disk 对应的 ASM 磁盘组。最常被忽略的是多路径设备映射不一致或 ASMLIB 设备名错位。
- 在每个节点执行
ls -l /dev/mapper/*或ls -l /dev/asm*,确认 OCR/voting 盘的 WWID 完全相同,且软链接目标一致(比如都指向/dev/mapper/mpathc,而非节点1是 mpathc、节点2是 mpathd) - 如果用了 ASMLIB,对比
oracleasm listdisks输出与crsctl query css votedisk中路径是否匹配;不一致会导致 CSSD 根本找不到盘,日志里只报 “no ASM instance running” - 检查
ora.cluster_interconnect.haip状态:crsctl stat res ora.cluster_interconnect.haip -init;若 HAIP 资源 OFFLINE,且私网绑定了 169.254.x.x 地址但 ping 不通,可能是 RDS 环境不支持 HAIP,需按 MOS Doc ID 1383737.1 禁用
crsctl stop crs 失败并报 CRS-2501:CSSD 注册信息丢失,OCR 可能已损坏
这不是命令没权限,而是 OCR 中 ora.cssd 的资源配置元数据丢了。此时 crsctl stop crs 无法生成停止指令,强行重启可能让集群进入不可恢复状态。
- 先用
ocrcheck -local确认本地 OCR 副本是否可读;若报 “PROT-1” 错误,说明 OCR 文件损坏,需从备份恢复:ocrconfig -restore /u01/app/19c/grid/cdata/<clustername>/backup_20260425_010000.ocr</clustername> - 若 OCR 正常但注册丢失,尝试强制重新注册:
crsctl start res ora.cssd -init -f(仅限单节点调试,生产环境慎用) - 真正安全的做法是:停掉所有节点的
ohasd,用crsctl delete resource ora.cssd -f -unsupported清理残留,再逐节点crsctl start ohasd+crsctl start crs,避免并发写入冲突
ora.cssd 在后台反复重试直到超时。每次执行 crsctl 命令前,先看对应资源的日志($GRID_HOME/log/<hostname>/<resource>/<resource>.log</resource></resource></hostname>),比猜更可靠。











