能恢复,但必须有OCR备份且ASM实例可启动;crsctl query css votedisk返回空或报错说明CSS进程未读到voting file,常见于磁盘路径消失、ASM diskgroup未挂载或votedisk头信息被清空,此时底层存储可能不可达或ASM未启动。

能恢复,但必须满足两个前提:有 OCR 备份、能启动 ASM 实例;没备份或连 ASM 都起不来,就只能重建集群——这不是恢复,是重装。
crsctl query css votedisk 返回空或报错说明什么
这表示 CSS 进程压根没读到任何 voting file,常见于磁盘路径消失、ASM diskgroup 挂载失败、或 votedisk 文件被 dd 清空头信息。注意:crsctl query css votedisk 不依赖 OCR,它直接查 CSSD 内存或本地配置;如果连这个都失败,大概率是底层存储已不可达或 ASM 未启动。
- 输出里显示
OFFLINE或路径指向已删除设备(如/dev/asm-diskh),说明物理层已损坏,不能硬重启 CRS - 返回
CRS-4530: Communications failure contacting Cluster Synchronization Services daemon,说明 CSSD 没起来,得先用crsctl start crs -excl -nocrs启动 HAS 和 ASM - 返回
CRS-4602: Failed to add voting file:目标 diskgroup 不存在、没挂载、或兼容性不匹配(比如compatible.asm小于 11.2)
为什么必须用 -excl -nocrs 启动才能操作
正常模式下 CRS 会校验 OCR 和 votedisk 一致性,两者缺一就卡死。而 crsctl start crs -excl -nocrs 绕过 CRS 层,只启动 OHASD + CSSD + ASM 实例,让你能登录 sqlplus / as sysasm 创建 diskgroup、恢复 OCR。这是整个恢复流程的唯一窗口。
- 执行前确认所有节点
crsctl stop crs -f彻底停止,否则会冲突 - 只在一个节点执行该命令,其他节点保持关闭
- 启动后立刻验证:
ps -ef | grep cssd应有进程,asmcmd lsdg能列出 diskgroup(哪怕为空)
crsctl replace votedisk +DG_NAME 失败的常见原因
这条命令看似简单,实际依赖 OCR 已恢复、目标 diskgroup 已挂载、且 CSSD 能写入。失败时别反复重试,先查三件事:
-
ocrcheck必须返回Status of Oracle Cluster Registry is as follows且无错误,否则replace会静默失败 -
asmcmd lsdg中目标 DG 的Voting_files列必须为Y(即创建时加了ATTRIBUTE 'au_size'='4M', 'compatible.asm'='11.2.0'等参数) - 确保 diskgroup 是
EXTERN或NORMAL冗余(不能是HIGH),且至少有 1 块可用磁盘;crsctl replace votedisk会自动写入 3~5 个 voting file,空间不足直接报错
真正容易被忽略的是 diskgroup 兼容性与 AU 大小——哪怕磁盘组能 mount,若 compatible.asm 是 12.1 但 OCR 备份来自 11.2R2,ocrconfig -restore 可能成功但后续 replace votedisk 会因元数据不兼容失败;AU 大小不一致也会导致 CSSD 拒绝写入 voting file。


















