oracle grid安装时共享磁盘“找不到”的根本原因是asm_diskstring路径与实际设备路径不匹配,且grid用户无读权限;必须用udev基于wwid创建/dev/asm-持久化链接,设属组为asmadmin,并将asm_diskstring精确设为'/dev/asm-'后重启asm实例验证。

Oracle Grid 安装时共享磁盘“找不到”,95% 不是磁盘没连上,而是 ASM_DISKSTRING 指向的路径下压根没有 grid 用户可读的块设备——哪怕 ls -l /dev/asm-ocr 显示权限正确,只要路径没进 ASM_DISKSTRING,gridSetup.sh 就会静默跳过。
检查 ASM_DISKSTRING 是否匹配实际设备路径
安装界面里“Disk Discovery Path”默认值(如 /dev/oracleasm/disks/*)往往和你用 udev 创建的符号链接(如 /dev/asm-ocr)不一致。gridSetup.sh 只扫描这个参数指定路径下的设备,不查 ASMLib 缓存、不猜别名。
- 确认当前 ASM 实例的设置:
su - grid; sqlplus / as sysasm→SHOW PARAMETER asm_diskstring - 若返回为空或含
/dev/oracleasm/disks/*,但你的磁盘在/dev/asm-*下,必须立刻修正:ALTER SYSTEM SET ASM_DISKSTRING='/dev/asm-*' SCOPE=BOTH; - 重启 ASM 实例:
crsctl stop res ora.asm -f && crsctl start res ora.asm - 验证是否生效:
asmcmd lsdsk应列出所有预期磁盘;若仍为空,说明路径或权限仍有问题
udev 规则必须基于 WWID 且属组为 asmadmin
用 KERNEL=="sdb" 这类设备名写规则是自毁行为——节点重启后可能变成 sdc,RAC 直接裂脑。必须用 SCSI WWID 绑定物理磁盘。
- 获取磁盘唯一标识:
scsi_id -g -u -d /dev/sdb(输出类似360050768028004d2e000000000000123) - 规则文件
/etc/udev/rules.d/99-oracle-asm.rules中写死 WWID:KERNEL=="sd*", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$name", RESULT=="360050768028004d2e000000000000123", NAME="asm-ocr", OWNER="grid", GROUP="asmadmin", MODE="0660" - 切勿设
GROUP="oinstall":Oracle 12c+ 强制校验 ASM 设备属组为asmadmin,否则crsctl start res ora.asm启动失败 - 重载规则后必须触发:
udevadm control --reload-rules && udevadm trigger --subsystem-match=block,再ls -l /dev/asm-*确认属主为grid:asmadmin
预检脚本(runcluvfy.sh)失败却不报错
gridSetup.sh 卡在 “Performing pre-checks” 或直接退出,不是界面卡住,而是底层 runcluvfy.sh 验证失败后静默终止。日志藏得深,但线索明确。
- 关键日志位置:
/tmp/GridSetupActions*.log(安装临时目录)和$ORACLE_BASE/cfgtoollogs/cv/cvutilexit.log - 重点搜最后一屏的 ERROR 或 ORA- 开头行,常见如
PRVF-9802 : Failed to scan devices for ASM discovery path - 该错误直指
ASM_DISKSTRING路径下无可用设备,或 grid 用户对该路径无读权限(ls -l /dev/asm-*可读,但ls /dev/asm-*权限不够也会失败) - 手动模拟预检:
runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose,比等图形界面更快定位
禁用 ASMLib 后仍要清理残留配置
ASMLib 已被 Oracle 官方弃用(12c R2 起),且在 EL8+ 内核上不可用。但残留的 /dev/oracleasm 目录、旧规则、甚至 oracleasm listdisks 的输出,会严重干扰判断。
- 卸载 ASMLib 包:
rpm -e oracleasmlib oracleasm-support(RHEL/CentOS) - 删除残留目录:
rm -rf /dev/oracleasm /etc/sysconfig/oracleasm - 检查
ASM_DISKSTRING是否混入多个路径:'/dev/oracleasm/disks/*','/dev/asm-*'—— 多路径会导致 ASM 静默跳过部分磁盘 - 确保所有节点执行相同 udev 规则、相同
ASM_DISKSTRING值、相同磁盘 WWID 绑定;任一节点偏差,OCR/Voting Disk 创建必败
最常被忽略的是:即使 udev 创建了 /dev/asm-ocr,也必须把它的父路径(/dev/asm-*)完整写进 ASM_DISKSTRING,且不能带尾部斜杠;少一个字符,gridSetup.sh 就当它不存在。











