ASM磁盘配置失败主因是设备权限或路径不匹配;须确保磁盘未格式化、无文件系统、未挂载或作LVM,且路径、属主(如grid:asmadmin)、权限(0660)在RAC各节点完全一致。

ASM磁盘配置失败,90%是因为设备权限或路径没对准——不是asmca点几下就能完事的。
确认磁盘设备是否被ASM识别为候选盘
ASM不会自动扫描所有块设备,必须确保目标磁盘满足两个硬性条件:未格式化、无文件系统、未被挂载或用作LVM物理卷。常见错误是误选 /dev/sdb(整盘)而非分区 /dev/sdb1,或者选了已建UFS/ZFS的设备。
- 运行
oracleasm listdisks查看当前标记的候选盘;若为空,说明未扫描到有效设备 - 用
fdisk -l /dev/sdX和file -s /dev/sdX1验证分区是否干净(输出应为/dev/sdX1: data,不能出现xfs filesystem data或LVM2 physical volume) - 在 Solaris Cluster 环境中,必须使用
/dev/did/rdisk/dn路径,且需提前执行chown oraasm:dba和chmod 660
用 asmca 创建磁盘组时选错冗余模式的后果
NORMAL 冗余要求至少两个 Failure Group,但很多人直接把所有磁盘塞进一个 FG,结果创建失败并报错 ORA-15018: diskgroup cannot be created。这不是磁盘问题,是逻辑结构不合法。
- EXTRACTION 模式适合单盘测试环境,但生产库禁用——它不提供任何容错能力
- NORMAL 模式下,每个磁盘必须归属唯一 Failure Group;若只有一台物理机,可按控制器划分 FG(如
FAILGROUP ctlr1 DISK '/dev/sdb1'、FAILGROUP ctlr2 DISK '/dev/sdc1') - HIGH 模式需要至少三块盘且三个独立 FG,否则创建会卡住或报
ORA-15075: disk is not in a failure group
磁盘组创建后数据库无法访问 ASM 文件
常见原因是 DB 实例没连上 ASM 实例,或 ASM_DISKSTRING 参数值不匹配。DB 启动时报 ORA-00304: requested INSTANCE_NAME is busy 或 ORA-15110: no diskgroups mounted 多数源于此。
- 检查 ASM 实例是否运行:
ps -ef | grep pmon\+ASM;若无,先启动srvctl start asm - 登录 DB 实例执行
SHOW PARAMETER asm_diskstring,确保其值与 ASM 中ASMCMD> ls /dev/下实际路径一致(例如'/dev/did/rdisk/*') - 在 RAC 环境中,必须用
srvctl add database显式绑定 DB 到 ASM 实例,不能仅靠INSTANCE_TYPE=ASM参数
权限和属主设置最容易被跳过的一步
尤其在 Solaris Cluster 上,/dev/did/rdisk/dn 设备节点每次重启可能重编号,chown 和 chmod 必须固化为集群资源启动前的预检脚本,不能只手工跑一次。
- 遗漏
chown oraasm:dba会导致ORA-15031: disk specification matches no disks - 权限不是 660 就会触发
ORA-15025: could not open disk - 若使用非全局区域(non-global zone),原始设备不被支持,必须改用全局设备(global device)配置,否则 asmca 直接报
no disks found


















