CRS-4535 错误本质是 crsd 进程未启动或无法通信,需优先检查 crsd.bin 进程是否存在、ora.crsd 资源状态(用 crsctl stat res -t -init)、OCR 可访问性(ocrcheck)、ASM 磁盘组挂载状态及节点时间同步。

CRS-4535 错误本质是 crsd 进程没起来或无法通信,不是“集群整体挂了”,而是关键服务离线。直接查 ora.crsd 状态和 crsd.bin 进程是否存在,比盲目重启更有效。
确认 crsd.bin 进程是否存活
这是最快速的判断点:如果进程根本不存在,crsctl check crs 必然报 CRS-4535。
- 用
ps -ef | grep crsd.bin查看 —— 注意只搜crsd.bin,别漏掉.bin后缀 - 若无输出,说明进程已退出或未启动;若有但状态异常(如 Z 僵尸态),也要视为失效
- 不要依赖
crsctl start crs全量启动 —— 在 12c 中该命令可能卡住或静默失败,优先用初始化资源方式
检查 ora.crsd 资源状态(带 -init)
crsctl stat res -t 在 CRS-4535 下基本无效,必须加 -init 才能绕过通信层直查本地资源状态:
- 执行
crsctl stat res -t -init,重点看ora.crsd行的State列 —— 多数情况下是OFFLINE - 如果显示
INTERMEDIATE或UNKNOWN,说明依赖项(如 CSSD、OCR 磁盘组)没就绪,不能硬启crsd - 此时别急着
start res,先看日志:$ORACLE_HOME/log/<hostname>/crsd/crsd.log最后 50 行通常有明确原因(比如 “OCR not accessible” 或 “CSS is not ready”)
验证 OCR 和 ASM 磁盘组是否可访问
crsd 启动前必须读取 OCR 配置,并依赖 ASM 提供的磁盘组(尤其是 +OCR 或 +CRS)。常见断点在这两处:
- 用
ocrcheck检查 OCR 状态 —— 若报 “PROT-602: Failed to retrieve data from OCR”,说明 OCR 不可用 - 用
sqlplus / as sysasm连接 ASM 实例,运行select name, state from v$asm_diskgroup;——+OCR或+CRS组必须为MOUNTED,DISMOUNTED或CONNECTED都会导致crsd拒绝启动 - 注意权限:确保
grid用户对 OCR 设备(如 ASM diskstring 指向的裸设备或 ASMLIB 设备)有读写权限,chown grid:asmadmin和chmod 660是常见修复操作
时间同步与防火墙干扰(尤其虚拟机环境)
Oracle 12c RAC 对节点间时间差敏感,超过 600 秒(10 分钟)就会触发 CRS-4535;而防火墙常拦截 CSSD 心跳端口(默认 42422/UDP):
- 用
ntpq -p和date核对所有节点时间 —— 时间快了不能直接往前调,应先停集群再调;时间慢了可直接向前校准 - 用
systemctl status firewalld和iptables -L -n确认防火墙是否关闭 —— 即使只开一个节点,防火墙开着也可能导致 CSSD 无法建立本地仲裁 - 在 VMware/VirtualBox 环境中,还要检查客户机时间同步是否启用(如
vmware-tools的 time sync 功能),它会与 NTP 冲突
真正卡住的地方往往不是 crsd 本身,而是它依赖的 OCR 可读性、ASM 磁盘组 mount 状态、节点时间一致性这三项中的某一个。日志里那句 “CSS is not ready” 或 “OCR initialization failed” 就是线索,别跳过它去试各种 start crs 组合命令。


















