OCR磁盘组无法挂载会导致CRS启动失败,表现为CRS-4535错误;常见原因包括ASM未启动、磁盘组未识别、路径权限异常或OCR文件头损坏,应优先检查ASM状态、磁盘发现结果及手动挂载尝试,并从备份恢复OCR而非直接dd清零。
OCR磁盘组无法挂载导致CRS无法启动
ocr(oracle cluster registry)是rac集群的“配置中心”,如果存放ocr的asm磁盘组无法挂载,
会直接失败退出,
显示
但
。
常见原因包括:ASM实例未启动、OCR所在磁盘组未被ASM识别、磁盘路径权限异常、或磁盘组中OCR文件头损坏。
先确认ASM是否运行:
;若无输出,尝试手动启动:
检查ASM磁盘发现状态:
,确认OCR所在磁盘(如
)是否显示为
而非
若磁盘可见但磁盘组无法
,用
执行:
,观察是否报
/
——这往往指向磁盘路径不可达或UDEV规则失效
切勿直接用
清零磁盘,OCR损坏时应优先从备份恢复:
→
Voting Disk离线引发节点驱逐(Node Eviction)
Voting Disk不是“可选组件”,而是RAC心跳仲裁的核心。只要一个节点无法访问多数Voting Disk(即“quorum”丢失),该节点会在60秒内被强制重启,日志中出现
。
注意:Voting Disk可以放在ASM磁盘组里(推荐),也可以放在裸设备或NFS上;但无论哪种方式,必须确保所有节点对同一份Voting Disk有**一致、低延迟、无中断**的读写能力。
查看当前Voting Disk位置与状态:
,输出中
列必须全为
若显示
,检查对应路径是否可访问:
+
(测试I/O通路)
在ASM场景下,Voting Disk依赖ASM磁盘组在线;若
报
,大概率是ASM未加载该磁盘或udev绑定错误
添加/替换Voting Disk必须使用
,不能手动复制或修改底层文件——Voting Disk内容受CSS守护进程独占管理
OCR/Voting Disk共存于同一ASM磁盘组的风险
Oracle允许将OCR和Voting Disk放在同一个ASM磁盘组(如
),但这是把双刃剑:简化部署的同时,也把两个关键路径耦合在一起。一旦该磁盘组因磁盘故障、路径抖动或ASM bug无法挂载,整个集群立刻失去配置管理和节点仲裁能力。
生产环境强烈建议分离:OCR单独一组(如
),Voting Disk另放一组(如
),且两组后端物理磁盘不共享同一控制器或光纤链路。
检查是否共存:
中
与
中路径是否同属一个ASM DG名
分离操作需停集群:
→ 在各节点分别
→
→ 清理旧路径 → 重启
特别注意:
仅修复OCR注册信息,不移动物理文件;真正迁移需结合
或
(后者要求目标DG已存在且可写)
诊断时最容易忽略的底层细节
很多DBA卡在“磁盘路径存在、权限OK、ASM能识别”,却始终无法拉起实例,问题往往藏在更底层:不是配置错,而是通路断。
多路径设备(multipath)下,
显示路径如
,但
输出却是
——这两者若未通过udev规则正确映射,CSS进程根本看不到Voting Disk
检查
是否包含对应WWID绑定,且
后
能看到持久化链接
私网(Cluster Interconnect)不通也会间接影响OCR同步:CSS依赖UDP多播维持节点视图,若
丢包或延迟>20ms,可能触发误驱逐,继而破坏OCR一致性
时间不同步虽不直接导致拉不起实例,但会使OCR备份时间戳混乱,
可能列出未来时间的备份文件,误导恢复操作
crsd.bincrsctl check crscrs-4638: oracle high availability services is onlinecrs-4535: cannot communicate with cluster ready servicesps -ef | grep asm_pmonsrvctl start asm -n asmcmd lsdsk -k/dev/oracleasm/disks/OCR_VOTEPROVISIONEDUNKNOWNmountsqlplus / as sysasmALTER DISKGROUP OCR_VOTE MOUNTORA-15032ORA-15017ddocrconfig -showbackupocrconfig -restore cssd(9819)ERROR: clssnmvDRLUpdate: Aborting local node to avoid split-brain.crsctl query css votediskSTATEONLINEOFFLINEls -l dd if= of=/dev/null bs=4k count=1 crsctl query css votediskCLSU-00100: Operating System function: ioctl() failed with error data: 25crsctl replace votedisk +OCR_VOTE+OCR+VOTEocrcheck -detailLocationcrsctl query css votediskcrsctl stop crs -focrconfig -repair -add +VOTEcrsctl replace votedisk +VOTEocrconfig -repairddasmcmd cpocrconfig -showbackup/dev/mapper/mpathbcrsctl query css votedisk/dev/oracleasm/disks/VOTE1/etc/udev/rules.d/99-oracle-asmdevices.rulesstart_udevls -l /dev/oracleasm/disks/ping -I ocrconfig -showbackup