ocr和voting disk迁移必须使用ocrconfig -add和crsctl replace votedisk等官方api,禁止直接编辑/etc/oracle/ocr.loc或组合delete/add操作,否则会导致集群启动失败、脑裂或ocr校验报错。

OCR 迁移必须用 ocrconfig -add,不能直接改 /etc/oracle/ocr.loc
直接编辑 /etc/oracle/ocr.loc 是 10g 时代的做法,11.2+ 版本中该文件只是只读快照,修改后不会生效,反而会导致 ocrcheck 报错 “Device/File not configured”。Oracle 要求所有 OCR 位置变更必须通过 ocrconfig API 操作,否则集群启动时可能无法识别新位置。
- 先确认当前 OCR 状态:
ocrcheck和ocrconfig -showbackup - 确保目标 ASM 磁盘组已创建、mounted 且兼容性 ≥ 11.2:
select name, compatibility from v$asm_diskgroup where name = 'NEWOCR'; - 用 root 执行添加:
ocrconfig -add +NEWOCR(注意:+号不能漏) - 等待约 30 秒,再运行
ocrcheck,确认新位置显示为 “Device/File integrity check succeeded” - 验证成功后,再执行删除旧位置:
ocrconfig -delete /dev/raw/raw1或ocrconfig -delete +OLD_OCR
Voting Disk 迁移优先用 crsctl replace votedisk
如果 Voting Disk 当前在 ASM 磁盘组里(11.2+ 默认场景),crsctl replace votedisk 是唯一安全方式。它会原子性完成:清空旧位置 → 同步写入新位置 → 更新 CSS 配置。直接 crsctl delete css votedisk + add 组合操作有窗口期风险——若中间节点重启或网络抖动,可能触发脑裂。
- 检查当前位置:
crsctl query css votedisk - 替换到新 ASM 磁盘组:
crsctl replace votedisk +NEW_VOTE - 执行后立即验证:
crsctl query css votedisk应只显示新路径,且状态为 “ONLINE” - 若旧 Voting Disk 在裸设备上(如
/dev/sdb1),则必须先crsctl add css votedisk /dev/sdc1,再crsctl delete css votedisk /dev/sdb1——但此过程需确保集群稳定,避免多节点同时掉线
迁移前必须检查磁盘组兼容性和冗余类型
OCR/Voting Disk 对 ASM 磁盘组的兼容性(compatible.asm)和冗余(EXTERNAL/NORMAL)有硬性要求。11.2+ 要求 compatible.asm >= '11.2';Voting Disk 在 ASM 中必须依赖磁盘组冗余保障高可用,EXTERNAL 冗余仅允许单个 Voting Disk,而 NORMAL 可自动维护多个镜像副本 —— Oracle 强烈建议用 NORMAL。
- 查看兼容性:
select name, compatibility, database_compatibility from v$asm_diskgroup; - 升级兼容性(仅当低于 11.2):
alter diskgroup NEWOCR set attribute 'compatible.asm'='11.2'; - 确认冗余类型:
select type from v$asm_diskgroup where name = 'NEWOCR';—— 若为EXTERN,OCR 无冗余保护,不推荐用于生产 - 注意:修改兼容性后,该磁盘组不能再被早于 11.2 的 GI 版本挂载
跨版本迁移(如 10g→11g)要停集群,且不能跳过 ocrconfig -export/-import
从 10g 升级到 11gR2 时,OCR 格式发生重大变化,ocrconfig -replace 不适用。必须先停整个集群(crsctl stop crs -f),导出二进制配置,再导入到新位置。遗漏 -export 会导致 OCR 元数据丢失,集群无法启动。
- 停所有节点:
crsctl stop crs -f(两个节点都要执行) - 在任一节点导出:
ocrconfig -export /tmp/ocr_backup.dmp - 修改
/etc/oracle/ocr.loc指向新设备(如/dev/raw/raw14) - 导入:
ocrconfig -import /tmp/ocr_backup.dmp - 启动集群前务必先
ocrcheck验证 —— 若报 “PROT-602” 错误,说明导入失败,需重试或恢复备份
NEWOCR 在节点 1 自动 mount,但在节点 2 仍为 DISMOUNTED,导致 ocrconfig -add 仅对单节点生效。务必在每个节点上执行 sqlplus / as sysasm → alter diskgroup NEWOCR mount;,再统一验证。











