dd不能用于OCR备份,因其是破坏性操作,忽略ASM磁盘头、AU对齐及元数据校验,生成的镜像无法被ocrconfig -restore识别,且易导致恢复失败;OCR仅支持自动备份和ocrconfig -manualbackup两种可靠方式。
dd 不是 OCR 备份工具,它是**破坏性操作命令**,不能用于安全备份 OCR。强行用 dd 备份 OCR 磁盘(如 dd if=+DG_SYS/OCRFILE of=/tmp/ocr.dd)会生成不可用的二进制镜像,无法被 ocrconfig -restore 识别,且极易因 ASM disk header 或 AU 对齐问题导致恢复失败。
真正可用的 OCR 备份方式只有两种:自动备份(由 crsd 进程每 4 小时触发)和手工逻辑/物理备份(ocrconfig -manualbackup)。dd 只应在**故障模拟或极端兜底场景**下谨慎使用,且仅限于已知磁盘路径、ASM 兼容性匹配、且有完整验证流程的前提下。
为什么不能用 dd 做 OCR 备份?
ocr 在 asm 中不是裸文件,而是以 asm allocation unit(au)为单位组织的结构化数据块,包含元数据校验、镜像指针和内部版本控制。直接 dd 会:
- 忽略 ASM disk header 和 AU alignment,导致还原后
ocrcheck报PROT-602或PROC-22 - 无法保证 OCR 多副本一致性(尤其 normal redundancy 下),可能只拷贝了单个 failure group 的 AU
- 备份文件体积巨大(整个 diskgroup 或磁盘设备),远超实际 OCR 占用空间(通常
-
ocrconfig -restore完全不接受dd产出的文件,只能接受ocrconfig -manualbackup生成的 .ocr 文件
ocrconfig -manualbackup 才是标准备份入口
必须在 CRS 正常运行时,用 grid 用户执行:
ocrconfig -manualbackup
该命令会触发 CRSD 进程立即生成一份物理备份,格式为标准 .ocr 文件,带时间戳和校验。关键点:
- 备份位置默认为
$GRID_HOME/crs/cdata/<cluster_name></cluster_name>,可用ocrconfig -showbackup manual查看 - 支持自定义路径:
ocrconfig -backuploc /shared/backup/ocr(需确保所有节点可访问) - 备份文件可跨版本恢复(如 11.2.0.4 备份可在 11.2.0.4+ 补丁集上还原)
- 备份过程不锁表、不影响集群服务,耗时通常
如果 OCR 已损坏,dd 镜像还能救吗?
极少数情况下(例如 OCR 所在 ASM diskgroup header 被清空但 AU 数据尚存),有人尝试用 dd 从原始设备提取疑似 OCR 区域再拼接。但这不是标准流程,风险极高:
- 必须先用
strings /dev/oracleasm/disks/DISK1 | grep -A5 -B5 "ORCLCRS"定位 OCR AU 起始偏移(误差 >128KB 就失败) - 需精确指定
bs=1024k和skip=参数,否则还原后ocrcheck直接报ORA-15078 - 即使成功读出,也需用
dd写入新 diskgroup 的空 ASM disk,并重建 diskgroup + mount +ocrconfig -restore,步骤链长且无回退点 - Oracle Support 明确拒绝为此类操作提供技术支持
恢复 OCR 时最常踩的坑
用正确备份恢复时,仍高频出错:
- 没停全集群:必须在所有节点执行
crsctl stop crs -f,漏掉任一节点会导致ocrconfig -restore报CRS-0184 - 没进 exclusive 模式:单节点执行
crsctl start crs -excl -nocrs后,必须确认crsctl stat res -t中无ora.crsd资源运行 - diskgroup 名称不一致:恢复前必须创建与原 OCR 所在同名、同 redundancy、同 AU size 的 diskgroup(如原为
+DG_SYS,不能建+DG_SYS_NEW) - 权限错误:
ocrconfig -restore必须用root执行,且备份文件属主需为root:oinstall
ocrconfig 体系的操作,本质都是在赌运气。











