grid setup.sh运行失败的根本原因是底层存储未就绪,需先确保asm实例运行、ocr/voting disk完整、节点互信可靠,再执行预检;失败日志分散在/tmp/gridsetupactions*.log等多个路径。
grid setup 本身不能修复已安装的集群软件,它只负责全新安装或升级;修复必须依赖 crs 堆栈状态、ocr/voting disk 完整性、asm 实例可用性三者协同判断。
gridSetup.sh 运行失败:找不到 ASM 磁盘或报 ORA-15018/ORA-15042
这不是“安装程序坏了”,而是底层存储层未就绪。Grid Infrastructure 安装依赖 ASM 实例能识别并挂载磁盘组,而 ASM 实例又依赖 OCR 和 Voting Disk 可访问 —— 这是个环状依赖链。
- 先确认 ASM 实例是否运行:
su - grid; sqlplus / as sysasm→ 执行SELECT state FROM v$asm_instance;,非MOUNTED或OPEN状态说明 ASM 没起来 - 若 ASM 未启动,查
crsctl stat res -t中ora.asm资源状态;若为OFFLINE,执行crsctl start res ora.asm,失败则看tail -n 50 $GRID_HOME/log/`hostname`/asm/oraagent_grid.log - ORA-15042 表明指定磁盘路径(如
/dev/sdb)在当前节点不可见或权限不对;必须用scsi_id -g -u -d /dev/sdb获取 WWID,并通过 udev 规则绑定稳定路径(如/dev/asm-diskb),禁用 ASMLIB - 检查所有节点是否使用完全一致的磁盘路径:
ls -l /dev/asm-*输出应相同;任一节点路径不一致,OCR 创建会直接失败
runcluvfy.sh 卡在 verifying user equivalence
这是 RAC 安装最常被误判为“界面卡死”的环节,实际是 SSH 免密登录虽通,但远程命令执行被策略拦截。
- 手动验证四条命令必须全通:
ssh node1 date、ssh node2 date、ssh node1 hostname、ssh node2 hostname—— 任一返回Permission denied (publickey)就失败 - 重点检查
~/.ssh/authorized_keys是否含command=、no-port-forwarding等限制项;RHEL/CentOS 7+ 默认启用StrictModes yes,要求~、~/.ssh、id_rsa、authorized_keys所有者均为grid:oinstall,且权限严格为700、600、644 - DNS 反查失败也会静默超时:确保
/etc/ssh/sshd_config中UseDNS no已设置,并验证hostname -f输出与/etc/hosts中 public IP 对应的 FQDN 完全一致 - 图形界面启动的 OUI 不继承终端里的 ssh-agent,若用了 agent,需在启动前显式执行
eval $(ssh-agent); ssh-add ~/.ssh/id_rsa
OCR/Voting Disk 损坏导致 CRS 启动失败
Grid Setup 不处理 OCR 恢复 —— 必须先恢复 OCR,才能让 CRS 堆栈正常,之后才谈得上重跑安装或修复。
- 强制关闭集群:
crsctl stop crs -f;若失败,用crsctl stop crs -f -nocrs(跳过 OCR 加载) - 以独占模式启动:
crsctl start crs -excl -nocrs,此时 ASM 实例会起来,但 CRS 资源不加载 - 确认备份存在:
ocrconfig -showbackup;若无有效备份,只能重建 OCR:ocrconfig -restore /path/to/backup.ocr - 恢复后验证:
ocrcheck必须显示Status of Oracle Cluster Registry is valid;再执行cluvfy comp ocr -n all -verbose确认跨节点一致性 - OCR 恢复成功后,再
crsctl stop crs -f,然后crsctl start crs正常启动整个堆栈
真正容易被忽略的是:Grid Setup 的“修复”本质是重新部署,而非热修复。任何试图绕过 OCR 完整性、ASM 可用性、节点互信这三项基础条件的操作,都会在 pre-check 阶段失败,且日志分散在 /tmp/GridSetupActions*.log、$GRID_HOME/log/`hostname`/cvu/、$GRID_HOME/log/`hostname`/crsd/ 多个位置,不串联排查就永远卡在同一个地方。











