近期部署一套RHEL 8.2 + Oracle 19c 19.31 RU RAC环境,直接把我折腾到差点放弃!
全程报错杂乱无章、毫无头绪,手工核查所有配置均正常,但Oracle安装就是持续报错。今天完整复盘排错全过程,帮大家彻底避开这个深坑!
一、故障环境说明
本次部署为企业标准生产架构,软硬件规划如下:
- 操作系统:RHEL 8.2
- 数据库版本:Oracle 19c RAC (19.31最新RU补丁)
- 存储架构:IPSAN存储 + Multipath多路径 + UDEV磁盘权限固化 + ASM磁盘管理
- 网络架构:双公网业务网卡 + 私网心跳网卡,标准VIP/SCAN集群网络规划
二、诡异故障现象:全程逻辑矛盾,无从下手

本以为是一遍过的常规部署,结果在GI(集群网格)安装阶段,接连爆出各种从未见过的奇葩报错,线索杂乱、毫无规律:
✅ 手工核查:磁盘权限、属主、软链接全部正常
❌ Oracle安装校验:持续权限异常、设备识别失败
除此之外,还伴随多个随机故障:
- 安装界面随机弹出 INS-08101、DBT-30012 异常报错,无固定复现规律
- 节点重启后ASM磁盘权限随机错乱,时而root权限、时而grid权限
- 多路径设备识别不稳定,磁盘时而可见、时而消失
- CRS集群资源间歇性启动失败,日志报错碎片化、无有效定位线索
初期排查误区:先后怀疑多路径配置、存储LUN掩码、系统依赖包、Grid用户权限、安装介质损坏,逐项排查后全部排除,故障依旧!
三、根因定位:RHEL8专属UDEV隐性大坑
折腾数小时后,终于找到核心问题:RHEL8 与 RHEL7 的 UDEV+Multipath 联动逻辑完全不同!
本次故障的罪魁祸首:直接复用了RHEL7的UDEV规则脚本,导致底层设备规则重复触发、权限反复覆盖。
致命问题点详解
- 设备匹配逻辑错误
旧脚本混用 KERNELS 底层物理磁盘匹配 + DM_NAME 多路径设备匹配。Multipath环境下,一块逻辑磁盘对应多条底层物理路径,匹配底层sd设备会导致同一块磁盘反复触发UDEV规则,权限持续刷新错乱。
- 无设备过滤条件
缺少 ENV{DM_UDEV_RULES_VSN}!="?" 过滤参数,底层子设备、物理路径全部命中规则,重复执行授权命令,导致权限随机漂移。
- RHEL8语法兼容性失效
RHEL8对UDEV规则执行时序、语法做了重构,RHEL7通用的旧规则在RHEL8中无法稳定生效,重启后配置直接失效。
最迷惑人的核心矛盾:手工执行
udevadm trigger临时生效,肉眼查看权限完全正常;但节点重启、多路径重新扫描后,权限被底层设备反复刷新覆盖,Oracle校验读取到异常权限!
四、RHEL8.2+Multipath UDEV规则
核心原则:只匹配顶层Multipath逻辑设备(DM_NAME),彻底过滤底层物理SD设备,杜绝规则重复触发!
1. 最终标准规则文件
路径:/etc/udev/rules.d/99-oracle-asmdevices.rules
ENV{DM_UDEV_RULES_VSN}!="?",ENV{DM_NAME}=="mpath_asm_disk01",SYMLINK+="oracleasm/asm_disk01",OWNER="grid",GROUP="asmadmin",MODE="0660"
ENV{DM_UDEV_RULES_VSN}!="?",ENV{DM_NAME}=="mpath_asm_disk02",SYMLINK+="oracleasm/asm_disk02",OWNER="grid",GROUP="asmadmin",MODE="0660"
2. 规则核心说明
ENV{DM_UDEV_RULES_VSN}!="?":核心过滤参数,仅匹配多路径顶层逻辑设备,屏蔽所有底层物理子设备DM_NAME精准匹配多路径别名,摒弃老旧的KERNELS物理磁盘匹配方式- 固定属主
grid:asmadmin、权限0660,生成独立稳定的ASM磁盘软链接
3. 生效校验命令(双节点执行)
# 重载UDEV规则
udevadm control --reload-rules
udevadm trigger
# 校验磁盘权限与软链接
ls -l /dev/oracleasm/
lsblk
✅ 双节点配置完全一致,重启节点后磁盘权限稳定不变,彻底解决随机权限错乱问题。
五、19.31 RAC+RHEL8 踩坑总结
除核心UDEV故障外,本次部署还汇总4个高兼容坑点,全覆盖避坑:
1. AFD驱动兼容问题
Oracle 19.31 RU版本 不支持AFD+Multipath混用!极易出现内核适配异常、磁盘识别故障,生产环境优先使用UDEV固化磁盘权限。
2. 多网卡网络规划规范
双公网+私网架构,必须严格在 /etc/hosts 区分业务IP、心跳IP、VIP、SCAN IP;通过 oifcfg 规范注册网卡,配置 LISTENER_NETWORKS,避免集群网络资源注册错乱。
3. RHEL8图形化部署坑
RHEL8执行runInstaller极易出现VNC超时、Xauth认证失败、中文乱码,部署前需提前配置DISPLAY环境变量、校准xauth权限,避免图形界面异常退出。
4. RU补丁版本强制对齐
GI集群软件与DB数据库软件RU补丁版本必须完全一致,版本错位会引发ASM挂载、CRS资源启动等各类隐性疑难故障。
六、运维复盘:最容易被忽略的底层逻辑
本次故障之所以让人崩溃,核心在于现象具有极强的迷惑性:
系统层所有配置、权限、设备状态全部正常,但应用层(Oracle)持续报错。
很多运维的惯性思维:Oracle报错优先怀疑数据库介质、参数、存储故障。
但真实场景中,80%的RAC诡异故障,都来自系统底层、存储底层的隐性兼容问题。
尤其是 RHEL7 升级迁移 RHEL8 场景,大量旧版通用脚本、适配逻辑全部失效,绝非简单的系统小版本升级!
核心排错心得:当出现「手工配置正常、软件识别异常」的矛盾故障时,优先排查UDEV规则、设备扫描时序、多路径重复触发问题,而非直接怀疑数据库本身!




