必须同步所有节点的ASM磁盘设备路径映射,否则CRS无法启动ASM实例,直接报ORA-15077或ORA-15064;因Oracle RAC依赖CSS在启动时识别共享磁盘,若节点间/dev/oracleasm/disks/软链接目标不一致(如一节点指向/dev/mapper/mpatha、另一节点仍为/dev/sdb),CSS判定磁盘不可用,导致ASM实例无法挂载磁盘组,进而使RAC实例无法启动。

必须同步所有节点的ASM磁盘设备路径映射,否则CRS无法启动ASM实例,直接报ORA-15077或ORA-15064。
为什么磁盘路径变化会导致RAC实例起不来
Oracle RAC依赖CSS(Cluster Synchronization Services)在启动时识别共享磁盘。一旦存储迁移、UDEV规则变更或Multipath重配导致节点间/dev/oracleasm/disks/下的软链接指向不一致(比如节点1指向/dev/mapper/mpatha,节点2还卡在/dev/sdb),CSS就认为磁盘不可用,ASM实例无法挂载磁盘组,后续数据库实例自然起不来。
常见错误日志里反复出现ORA-15077: could not locate asm instance或ORA-15064: communication failure with asm,基本可锁定是这个原因。
- 检查各节点是否都执行过
oracleasm scandisks——没执行就改配置,等于白改 - 确认
/etc/sysconfig/oracleasm中ORACLEASM_SCANORDER和ORACLEASM_SCANEXCLUDE设置一致:推荐ORACLEASM_SCANORDER="mpath dm"+ORACLEASM_SCANEXCLUDE="sd" - 运行
ls -l /dev/oracleasm/disks/,比对每个disk软链目标是否全为/dev/mapper/*或/dev/dm-*,不能混有/dev/sdX
如何安全刷新ASM磁盘识别而不丢OCR/VOTE盘
别删盘重注册。OCR和VOTEDISK磁盘一旦被oracleasm deletedisk误删,集群将彻底不可用。
正确做法是只刷新设备映射,保留原有ASM标签:
- 以root身份在所有节点依次执行:
oracleasm scandisks(不是force-scandisks) - 执行
oracleasm listdisks,确认输出的disk名与ls -l /dev/oracleasm/disks/指向一致且均为多路径设备 - 若仍有
/dev/sdX残留,仅对非OCR/VOTE盘执行oracleasm deletedisk <DISK_NAME>,再oracleasm createdisk <DISK_NAME> /dev/mapper/mpathX - 最后验证:
crsctl check crs应返回全部ONLINE,crsctl status resource -t | grep asm显示ASM资源正常
UDEV规则和ASMLIB配置必须双节点严格一致
哪怕只差一行ORACLEASM_SCANORDER,也会造成一个节点能扫到盘、另一个扫不到——RAC不接受“差不多”,只认完全一致。
- 比对两节点
/etc/udev/rules.d/下所有规则文件内容,尤其涉及ASM磁盘命名的部分(如SUBSYSTEM=="block", KERNEL=="mpath*", OWNER="grid", GROUP="asmadmin", MODE="0660") - 检查
/etc/oracleasm.conf中的SCANORDER、SCANEXCLUDE、DEFAULT_MODULE三项,必须逐字符相同 - 重启
oracleasm服务前,先在各节点手动运行oracleasm init,观察是否有“Device is already configured”类提示——有说明旧状态未清干净
最易被忽略的是:改完配置后忘记在所有节点执行oracleasm scandisks。它不自动触发,也不随服务重启生效。只要有一台漏掉,集群就起不来——这不是概率问题,是确定性故障。


















