ocrconfig -replace失败是因为它仅支持多副本OCR环境下的元数据切换,要求至少2个在线OCR位置且待替换位置必须仍在线;而迁移到新闪存存储(如+FLASH)须先-add再-delete,确保冗余与同步。
ocrconfig -replace 不能在线迁移 ocr 到闪存存储(如 +flash),它只适用于已有两个及以上正常在线的 ocr 位置时,替换其中某一个。而闪存存储(例如 +flash)若尚未被配置为 ocr 位置,直接用 ocrconfig -replace 会报错:ocr configuration not ready for replacement 或 no online ocr locations available。
为什么 ocrconfig -replace 会失败?
该命令本质是“元数据切换”,不是“内容复制”。它要求:
- 当前至少有 2 个 online 的 OCR location(即已通过
ocrconfig -add添加且状态正常) - 待替换的旧位置必须 still be online(不能是 failed 或 missing)
-
+FLASH必须已 mount、可写、且属于 NORMAL 或 HIGH 冗余磁盘组(EXTERNAL 不支持 OCR) - 执行前未做冗余配置(比如只有
+DATA一个 OCR 位置),-replace就根本不可用
正确迁移 OCR 到 +FLASH 的两步法
实际操作中,必须先添加再删除,而非直接替换:
- 确认
+FLASH已创建并 MOUNTED:sqlplus / as sysasm中执行ALTER DISKGROUP FLASH MOUNT; - 用 root 执行添加:
ocrconfig -add +FLASH(此时 OCR 变成多副本,状态变为 HEALTHY) - 验证新增位置生效:
ocrcheck输出中应同时列出+DATA和+FLASH,且均为 ONLINE - 再执行移除旧位置:
ocrconfig -delete +DATA(注意:不是-replace) - 最后再次
ocrcheck,确认只剩+FLASH且状态为 HEALTHY
常见错误现象与对应处理
迁移过程中最常遇到的问题:
-
ocrconfig -add +FLASH报错 “ORA-15032: not all alterations performed” → 检查FLASH磁盘组是否真正 MOUNTED(SELECT state FROM v$asm_diskgroup WHERE name = 'FLASH';) -
ocrcheck显示 NEW location 为 INTERMEDIATE 或 OFFLINE → 说明 ASM 实例没识别到该磁盘组,需在所有节点执行srvctl start diskgroup -g FLASH - 执行
ocrconfig -delete +DATA后集群异常 → 说明删除太快,未等同步完成;应等待ocrcheck明确显示+FLASH是唯一 ONLINE 位置后再删 - 误以为
+FLASH是“更快的存储就一定适合 OCR” → 实际上 OCR 对 IOPS 敏感但对吞吐不敏感,关键是冗余模式和路径稳定性;+FLASH若是 EXTERNAL 冗余或单路径挂载,反而增加风险
闪存存储特别注意事项
把 OCR 放到 +FLASH 并非单纯为了性能提升,而是配合整体高可用架构:
-
+FLASH必须是 NORMAL 冗余(至少 3 块磁盘),否则无法承载 OCR/Voting Disk - 不能依赖裸设备或 NFS 文件模拟“闪存”——OCR 不接受非 ASM 路径作为主位置(
ocrconfig -add不支持文件路径,除非降级为 NO-ASM 模式) - 迁移全程无需停 CRS,但建议避开业务高峰;完成后务必在所有节点运行
crsctl query css votedisk和ocrcheck双验证 - 如果原 OCR 在裸设备(如
/dev/raw/raw1),则必须先迁移到 ASM(比如+DATA),再迁到+FLASH;不能跨存储类型直跳
OCR 迁移中最容易被忽略的,是“添加后不验证状态就急着删除”。ocrcheck 输出里那个看似不起眼的 INTERMEDIATE 状态,往往意味着 OCR 元数据还没在所有节点完成广播同步——这时候删旧位置,轻则 OCR 单点,重则节点驱逐。











