gridSetup.sh运行失败主因是ASM磁盘未正确标记或udev规则未生效;需清空磁盘、设权限、配udev规则并验证路径一致性,禁用ASMLIB改用udev+WWID稳定路径,预检失败则查/tmp/GridSetupActions*.log日志。
gridSetup.sh 运行失败:找不到 ASM 磁盘或显示 ORA-15018、ORA-15042
根本原因通常是磁盘未被正确标记为 asm 可用,或 udev 规则未生效。oracle grid infrastructure 安装时依赖 /dev/oracleasm(旧版)或更常见的裸设备路径(如 /dev/sdb)被持久化识别,且权限/属组必须为 grid:asmadmin。
实操建议:
- 确认磁盘无分区、无文件系统:
fdisk -l /dev/sdb应显示无分区表;若存在,用dd if=/dev/zero of=/dev/sdb bs=1M count=100清除 MBR 和签名 - 设置磁盘权限:
chown grid:asmadmin /dev/sdb; chmod 660 /dev/sdb,但该权限在重启后会丢失,必须配置 udev - 写 udev 规则(RHEL/CentOS 7+):
/etc/udev/rules.d/99-oracle-asm.rules中添加:KERNEL=="sdb", OWNER="grid", GROUP="asmadmin", MODE="0660"
,然后运行udevadm control --reload-rules && udevadm trigger - 验证:
ls -l /dev/sd*看sdb属主是否已变;再执行/etc/init.d/oracleasm scandisks(仅旧版 ASM lib)或直接在gridSetup.sh图形界面中刷新磁盘列表
ASM 磁盘组创建失败:提示 ORA-15018: diskgroup cannot be created 或 ORA-15042: ASM disk "X" is missing
这说明 ASM 实例虽启动,但无法访问指定磁盘路径——常见于磁盘路径不一致(比如安装时选了 /dev/sdb,但节点重启后变成 /dev/sdc),或 ASMLIB 未启用且未配置 multipath。
实操建议:
- 禁用 ASMLIB(Oracle 12c R2 起官方已弃用),改用 udev + 原生路径。ASMLIB 的
oracleasm工具在多数新版内核上不可靠,且集群多节点间同步困难 - 强制使用稳定路径:用
scsi_id -g -u -d /dev/sdb获取 WWID,再通过 multipath 或 udev 创建符号链接(如/dev/asm-diskb),并在gridSetup.sh中选择该链接而非原始/dev/sdb - 检查
asmca启动前的 ASM 实例状态:su - grid; sqlplus / as sysasm→SELECT state, name FROM v$asm_diskgroup;,若实例未启动,先运行crsctl start res ora.asm - 确保所有节点对同一磁盘有完全一致的路径和权限,否则 OCR/Voting Disk 创建会失败
运行 gridSetup.sh 卡在 “Performing pre-checks” 或静默退出
这不是界面卡住,而是预检脚本(runcluvfy.sh)失败后自动终止。日志默认在 /tmp/GridSetupActions*.log 和 $ORACLE_BASE/cfgtoollogs/cv/cvutilexit.log,关键线索往往藏在最后几行。
实操建议:
- 手动运行预检:
./runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose,重点关注Package existence(缺libaio-devel、compat-libcap1)、Time synchronization(NTP 必须启用且 offset Node connectivity(SSH 免密必须双向、用户为grid) - 关闭防火墙与 SELinux 是硬性要求:
systemctl stop firewalld; setenforce 0;临时关闭即可,安装完成后再按需恢复 -
gridSetup.sh必须以grid用户图形界面运行(不能sudo -u grid或用 root 启动),且 DISPLAY 变量需指向本地 X server(如export DISPLAY=:0) - 内存不足也会导致静默退出:确保每个节点至少 4GB 物理内存,
swap≥ 2GB;检查/proc/meminfo和free -h
OCR 和 Voting Disk 写入失败:报错 ORA-15032、ORA-15012 或集群无法启动
OCR(Oracle Cluster Registry)和 Voting Disk 必须放在共享 ASM 磁盘组中,且该磁盘组需满足冗余要求(External 冗余至少 1 块盘,Normal 至少 3 块)。错误通常源于磁盘组尚未创建成功,或创建时未勾选 “Create OCR and Voting Disk” 选项。
实操建议:
- 不要跳过“Configure Oracle Cluster Registry and Voting Disk” 页面——即使你打算后续手动配置,也应在此处指定一个新建的磁盘组(如
+OCR),否则gridSetup.sh不会初始化集群注册信息 - OCR/Voting Disk 所在磁盘组不能是后期挂载的:必须在
gridSetup.sh第一次运行时就完成创建并指定,否则 CRS 无法启动,强行启动会报CRS-4535: Cannot communicate with cluster registry - 如果已失败,不要反复重试
gridSetup.sh;先清理:crsctl delete resource ora.cluster_voting_disk -f,再用dd清空对应磁盘,重新开始 - 单节点 RAC 测试环境可接受 External 冗余;生产环境务必用 Normal 冗余 + 至少 3 块物理磁盘,避免单点故障
OCR 和 Voting Disk 的位置一旦由 gridSetup.sh 初始化,就无法在不破坏集群的前提下迁移——这点容易被忽略,实际部署前务必确认磁盘规划和冗余策略已锁定。











