必须设置disk.EnableUUID="TRUE",否则udev或asmcmd无法识别共享磁盘UUID,导致ASM初始化失败;需关机修改.vmx文件、重启虚拟机,并验证/dev/disk/by-id下UUID一致。

VMware里必须打开disk.EnableUUID = "TRUE"
不加这行,udev 或 asmcmd 都识别不到共享磁盘的唯一标识,后续 ASM 初始化直接失败。这是 VMware RAC 环境最常被跳过的硬性前提。
操作方式:关机状态下,编辑每台 RAC 虚拟机的 .vmx 文件,在末尾新增一行:
disk.EnableUUID = "TRUE"
注意:TRUE 必须用英文双引号包裹,大小写敏感;添加后务必重启虚拟机,cat /proc/scsi/scsi 或 ls -l /dev/disk/by-id/ 应能看到 scsi-36000c29... 类似 UUID 标识。
- 如果用的是 Workstation 15+ 或 ESXi 6.7+,该参数默认可能未启用,不能依赖 GUI 设置
- 同一组共享磁盘在两节点上看到的 UUID 必须完全一致,否则 udev 绑定会错乱
- 别在开机状态下热添加磁盘再补这个参数——无效,必须冷修改 + 重启
三网卡规划:public / private / storage 缺一不可
Oracle 19c RAC 要求至少三个独立网络平面,VMware 中必须用三个自定义网络(如 VMnet2/3/4),不能复用或合并。任意两个平面 IP 段重叠,gridSetup.sh 会在校验阶段报 PRVF-4657 错误并退出。
典型分配示例:
-
public:192.168.50.0/24(用于客户端连接 + VIP) -
private:10.10.10.0/24(仅节点间心跳,禁用 ARP、不配网关) -
storage:192.168.30.0/24(iSCSI target 或 NFS server 所在网段)
关键动作:
- 每张网卡在 Linux 里命名需统一(如
ens33、ens37、ens39),避免因 udev 规则导致节点间网卡名不一致 -
/etc/hosts中必须同时写入 public IP、private IP、VIP、SCAN 地址,且所有节点内容严格一致 - 私有网络网卡建议关闭 IPv6 和 NetworkManager:
nmcli dev set ens37 managed no
ASM 共享磁盘绑定必须用 scsi_id + udev,别碰 asmlib
asmlib 在 Oracle 19c + RHEL/CentOS 7+ 上已废弃,官方不支持,且容易与系统内核模块冲突。实际部署中,99% 的磁盘识别问题都源于 scsi_id 命令返回空或重复值。
正确流程:
- 确认
/usr/lib/udev/scsi_id存在且可执行;若无,安装sg3_utils包 - 对每个共享磁盘(如
/dev/sdb),运行:/usr/lib/udev/scsi_id -g -u -d /dev/sdb,确保输出非空且两节点一致 - 生成 udev rule 时,
PROGRAM路径和RESULT值必须严格匹配命令输出,不能手敲 UUID - 生效后检查:
ls -l /dev/asm*应显示grid:asmadmin权限,且blkid /dev/asm-diskb不报错
常见陷阱:
- 磁盘未分区就绑定 → 后续
asmca创建磁盘组时提示 “device is not partitioned” - rule 文件权限不是 644 或 owner 不是 root →
udevadm trigger无反应 - 忘记在第二节点同步 rule 文件并 reload → 第二节点看不到
/dev/asm-disk*
静默安装前必须禁用 chronyd + firewalld + SELinux
哪怕只留一个服务运行,runInstaller 就可能卡在 “Validating Node Connectivity” 或 “Checking DNS” 步骤。这不是警告,是硬性阻断。
逐项执行(两节点都要):
-
systemctl stop chronyd && systemctl disable chronyd(NTP 冲突会导致 OCR 同步失败) -
systemctl stop firewalld && systemctl disable firewalld(不是只关 service,还要 disable) setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config- 检查
/etc/sysconfig/network-scripts/ifcfg-*中所有网卡的ONBOOT=yes,否则重启后网卡 down
特别注意:grid 用户环境变量里 ORACLE_HOME 必须指向 Grid Infrastructure 目录(如 /u01/app/19.0.0/grid),不是数据库 home;oracle 用户的 ORACLE_HOME 则指向 DB home。装反了,srvctl 启动实例会找不到 binary。


















