在Oracle RAC 19c静默安装(`runInstaller -silent`)过程中,常因ASM磁盘发现路径配置不当导致OCR磁盘组无法识别,典型报错如“ORA-15042: ASM disk ‘X’ is missing from the system”或安装界面/日志中OCR候选磁盘为空。根本原因多为:① `asm_diskstring` 参数未在静默响应文件(`response.rsp`)中正确设置(如遗漏`/dev/oracleasm/disks/*`或`/dev/mapper/*`等实际路径);② udev规则或ASMLib未就绪,致使节点间磁盘可见性不一致;③ `gridSetup.sh` 执行前未以root运行`/opt/grid/oraInstRoot.sh`及`/opt/grid/root.sh`完成环境初始化。解决需严格校验磁盘权限(`oracle:oinstall`、660)、多节点`ls -l /dev/asm*`一致性,并在响应文件中显式指定`oracle.install.asm.diskGroup.name=OCR`与`oracle.install.asm.diskGroup.disks=/dev/asm-ocr1,/dev/asm-ocr2`(推荐使用udev稳定路径)。静默前务必执行`/opt/grid/bin/asmcmd lsdsk -k`验证磁盘可发现性。
1条回答 默认 最新
祁圆圆 2026-04-14 21:15关注```html一、现象层:静默安装中OCR磁盘组“不可见”的典型表征
- 运行
runInstaller -silent -responseFile response.rsp后,安装日志($ORACLE_HOME/cfgtoollogs/oui/installActions*.log)反复报错:ORA-15042: ASM disk 'OCR_0001' is missing from the system - Grid Setup Wizard 图形界面(即使临时启用)在“Specify ASM Disk Groups”步骤中,OCR候选磁盘列表为空或仅显示“No disks found”
asmca -silent -configureASM手动调用亦失败,提示ORA-15035: no diskgroups found- 节点间
ls -l /dev/asm*输出不一致:Node1 显示/dev/asm-ocr1,Node2 仅显示/dev/sdb1—— 暴露底层设备可见性割裂
二、配置层:响应文件(response.rsp)中ASM发现路径的三大致命疏漏
静默安装高度依赖响应文件的精确性。以下为
response.rsp中与ASM磁盘发现强相关的关键参数及常见错误:参数名 正确示例 高频错误 后果 oracle.install.asm.diskGroup.nameOCR留空或拼写成 ocr(大小写敏感)ASM实例启动后无OCR磁盘组 oracle.install.asm.diskGroup.disks/dev/asm-ocr1,/dev/asm-ocr2误填为 /dev/oracleasm/disks/OCR1(ASMLib已弃用)或遗漏逗号分隔仅识别首个磁盘,或解析失败 oracle.install.asm.diskGroup.redundancyEXTERNAL设为 NORMAL但仅提供2块盘(OCR最低需3块)ASMCA校验失败,中断安装 三、系统层:udev规则与设备持久化——跨节点磁盘一致性基石
Oracle RAC 19c 强烈推荐使用 udev(而非 ASMLib)管理 ASM 磁盘。以下是生产级 udev 规则验证清单:
- 确认
/etc/udev/rules.d/99-oracle-asmdevices.rules存在且内容规范(含SYMLINK+="asm-ocr1") - 执行
udevadm control --reload-rules && udevadm trigger并验证:ls -l /dev/asm-ocr*在所有节点返回相同 major:minor 及权限brw-rw---- 1 oracle oinstall - 检查
scsi_id -g -u -d /dev/sdX输出是否全局唯一(避免多路径LUN ID冲突)
四、权限与初始化层:root.sh 与 oraInstRoot.sh 的执行时序陷阱
未按标准顺序执行 root 脚本将导致 ASM 权限上下文缺失。完整初始化流程如下(必须在
gridSetup.sh前完成):# Node1 & Node2 均需执行(顺序不可逆) /opt/grid/oraInstRoot.sh # 创建 /etc/oraInst.loc & 设置 inventory 权限 /opt/grid/root.sh # 配置 CRS、设置 /dev/asm* 权限、启动 orarootagent若跳过此步,
asmcmd lsdsk -k将返回空,因orarootagent未注册设备扫描服务。五、验证层:静默前必须通过的四大黄金检查点
graph LR A[执行 asmcmd lsdsk -k] --> B{是否列出所有OCR磁盘?} B -->|是| C[检查 ls -l /dev/asm-ocr* 权限] B -->|否| D[回溯udev规则与multipath状态] C --> E{权限=brw-rw----, owner=oracle:oinstall?} E -->|是| F[确认 response.rsp 中 diskGroup.disks 路径完全匹配] E -->|否| G[运行 chmod 660 /dev/asm-ocr* & chown oracle:oinstall] F --> H[启动 asmca -silent -configureASM 预演]六、进阶实践:RAC 19c ASM 磁盘发现路径最佳组合策略
- 首选路径:
asm_diskstring='/dev/asm-*'(udev稳定别名),规避/dev/sdX设备名漂移风险 - 次选路径(FC/iSCSI环境):
'/dev/mapper/mpath[a-z]*',需配合dm-multipath正确配置 WWID - 绝对禁用:
/dev/oracleasm/disks/*(ASMLib 自 Oracle 18c 起已废弃,19c 完全不兼容) - 建议在
response.rsp中显式覆盖默认值:oracle.install.asm.diskString=/dev/asm-*
七、故障复盘:从 ORA-15042 到根因定位的诊断树
当出现 OCR 磁盘丢失报错时,按以下优先级逐层排查:
- 节点级:运行
su - grid -c "/opt/grid/bin/asmcmd lsdsk -k"—— 若单节点无输出,立即检查 udev + root.sh - 集群级:执行
crsctl check cluster -all,确认ora.asm资源状态为ONLINE;若为OFFLINE,查看crsctl stat res -t | grep asm - 内核级:验证
lsmod | grep oracleasm应为空(ASMLib 冲突),而lsmod | grep dm_multipath应存在 - 存储级:登录存储阵列,确认 LUN 是否被所有节点同时映射(HBA WWPN 与 Zone 配置双检)
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 运行