Oracle 11gR2起dd命令完全失效,因voting disk已非裸设备镜像而是带CSS头/FUID的逻辑实体,dd会破坏元数据导致cssd拒绝识别;必须严格按顺序执行:停集群→独占模式启动→先恢复OCR→再crsctl replace/add votedisk→最后全面验证。
dd 备份在 Oracle 11g R2 及之后版本**完全失效**,强行使用会导致集群无法启动或 CSSD 挂起。恢复 Voting Disk 必须依赖 crsctl 命令链 + OCR 备份,且操作顺序不可颠倒。
为什么不能用 dd 恢复 Voting Disk
11gr2 起 voting disk 不再是裸设备镜像,而是由 asm 或集群文件系统管理的、带内部元数据结构的逻辑实体。直接 dd 写入会破坏其一致性校验头(如 css header、fuid 等),导致 ocssd.bin 启动时拒绝识别该盘。
常见错误现象包括:
CRS-1714: Unable to discover any voting filesCRS-4530: Communications failure contacting Cluster Synchronization Services daemon-
cssd进程反复重启,日志中持续出现Failed to initialize voting file
即使 dd if=backup of=/dev/xxx 执行成功,crsctl query css votedisk 也会返回空或 OFFLINE 状态。
crsctl replace votedisk 的前提条件
该命令仅在 OCR 完好或已先恢复的前提下才有效。如果 Voting Disk 和 OCR 同时丢失(比如同一 ASM 磁盘组被清空),必须先恢复 OCR,否则 replace 会报错 PROT-30: The Oracle Cluster Registry location to be added is not accessible。
关键步骤顺序:
- 所有节点执行
crsctl stop crs -f强制终止集群栈 - 选一个节点,用
crsctl start crs -excl -nocrs启动到独占模式(11.2.0.2+ 必须加-nocrs) - 确认 OCR 备份可用:
ocrconfig -showbackup;若备份路径在本地文件系统,需确保该路径可写且属主为root:oinstall - 执行
ocrconfig -restore /path/to/backup.ocr;若报PROT-21,说明 OCR 文件本身缺失,需先touch并chown对应的ocrdisk.dat和ocrmirror.dat - OCR 恢复成功后,再运行
crsctl replace votedisk +NEW_DG(ASM)或crsctl add css votedisk /dev/mapper/vote1(非 ASM)
非 ASM 环境下添加 Voting Disk 的真实坑点
当 Voting Disk 存放在裸设备或集群文件系统(如 OCFS2)而非 ASM 中时,crsctl add css votedisk 需要精确提供设备路径和 FUID —— 但 FUID 在全部丢失后并不存在,不能靠猜或复制旧值。
正确做法是:
- 先用
oracleasm createdisk VOTE1 /dev/mapper/mpathv1注册新磁盘(需在所有节点执行) - 再用
crsctl add css votedisk /dev/oracleasm/disks/VOTE1添加(注意路径必须与oracleasm listdisks输出一致) - 添加后立即执行
crsctl query css votedisk,确认状态为ONLINE且 FUID 已生成;若仍为OFFLINE,检查/etc/oracle/ocr.loc中是否误指向了旧路径 - 不要跳过
crsctl delete css votedisk清理残留项 —— 即使query返回空,旧 FUID 可能仍驻留在内存或 OCR 中,引发后续冲突
恢复后必须验证的三件事
停掉所有节点 CRS、执行恢复、再全局启动后,最容易忽略的是这三点:
- 用
crsctl check crs确认所有服务(crsd,cssd,evmd)均为online,而不仅是CRS-4638提示 HA online - 用
crsctl stat res -t | grep votedisk查看 Voting Disk 资源是否注册为ora.cssd的依赖项,状态为ONLINE - 在每个节点分别执行
ls -l /proc/<pid_of_ocssd>/fd/ | grep vote</pid_of_ocssd>,确认 ocssd 进程确实打开了对应设备文件(避免“显示 ONLINE 但实际未挂载”)
任何一项失败,都意味着 Voting Disk 虽被识别,但未真正参与法定票数仲裁 —— 集群在下次节点故障时仍会分裂。


















