ocr和voting disk是oracle rac集群的核心元数据组件:ocr存储配置与资源状态,voting disk用于心跳仲裁防脑裂;二者必须位于asm磁盘组中且冗余类型为normal或high,严禁手动修改、复制或跨磁盘组部署。
ocr 和 voting disk 是什么,为什么不能随便动
OCR(Oracle Cluster Registry)和 Voting Disk 是 Oracle RAC 集群的两个核心元数据存储组件。OCR 记录集群配置、资源状态、节点信息;Voting Disk 用于节点间心跳仲裁,防止脑裂。它们不是普通文件,而是被 oracle 用户下 crsd 和 cssd 进程直接读写的二进制块设备或 ASM 文件——这意味着:
- 手动修改、复制、mv 或 chown 会立即导致集群无法启动或节点驱逐
- 不在 ASM 中时,必须是裸设备或符合权限/大小要求的块设备文件(如
/dev/raw/raw1),普通文件系统路径(如/u01/ocr.dat)在 11gR2+ 已不被支持 - 12c 及以后版本强制要求 OCR/Voting Disk 必须位于 ASM 磁盘组中,且该磁盘组不能是
EXTERNAL冗余类型
怎么查当前 OCR 和 Voting Disk 的位置与冗余级别
用 ocrcheck 和 crsctl query css votedisk 查真实状态,别信文档或笔记。关键看输出里是否带 ASM 路径、redundancy 字段,以及是否所有 voting disk 都显示为 ONLINE:
ocrcheck -config # 输出类似:Location: +OCR_VOTE
crsctl query css votedisk # 输出类似:STATE File Universal Id File Name Disk group # ONLINE 5f9a8b2e... /dev/asm-diskb1 OCR_VOTE
-
ocrcheck -detail会显示每个 OCR 备份位置(自动备份到$ORACLE_HOME/cdata/<cluster_name></cluster_name>),但那是只读快照,不能当主用 - 如果
crsctl query css votedisk报错CRS-4602: No voting files found,说明 CSSD 没起来,先别动 OCR,优先查cssd日志 - 用
asmcmd lsdg看OCR_VOTE磁盘组的TYPE列:必须是NORMAL或HIGH,EXTERNAL会导致添加 voting disk 失败
迁移 Voting Disk 到新 ASM 磁盘组的实操要点
迁移不是“复制粘贴”,本质是让 CSSD 在线重定向仲裁路径。前提是目标磁盘组已存在、状态 MOUNTED、冗余类型合规:
- 只能用
crsctl replace votedisk,不能用dd或cp—— 否则 CSSD 会校验失败并 panic - 命令格式是
crsctl replace votedisk +NEW_DG,不是路径,也不是+NEW_DG/voting_disk01 - 执行前确保所有节点
crsctl check crs返回HEALTHY,且crsctl query css votedisk显示至少 1 个 ONLINE - 迁移过程会触发一次短暂的集群重平衡(几秒),期间不可中断
crsctl命令,否则可能卡在INITIALIZING状态 - 成功后立刻验证:
crsctl query css votedisk应显示新路径,且asmcmd ls -l +NEW_DG能看到自动生成的VOTEDISK.<xxx></xxx>文件
OCR 备份恢复和冗余策略的真实约束
OCR 自带三重自动备份(4h/8h/12h 各一次),但恢复能力取决于你有没有保留旧备份、ASM 是否可访问、以及集群是否处于 STOPPED 状态:
- 恢复 OCR 必须停掉整个集群:
crsctl stop crs -f(所有节点),再用ocrconfig -restore指向本地备份文件(如/u01/app/19.0.0/grid/cdata/mycluster/backup00.ocr) - 不能跨版本恢复:19c 的 OCR 备份不能用于 21c 集群启动
- OCR 所在 ASM 磁盘组的冗余类型决定了容错能力:NORMAL 允许坏 1 块盘,HIGH 允许坏 2 块;但 OCR 本身不支持多副本分散到不同磁盘组——它只能在一个 ASM DG 里,靠 ASM 层做镜像
- 别依赖
ocrconfig -manualbackup存档:它只是拷贝当前 OCR 内存镜像,若 OCR 已损坏,这个备份也无效
真正容易被忽略的是:Voting Disk 数量必须为奇数(1/3/5),且所有 Voting Disk 必须在同一个 ASM 磁盘组内。跨磁盘组放多个 voting disk 是常见误操作,会导致 cssd 启动失败,报错 ORA-15032 或 CRS-2672。










