Oracle 19c RAC安装时需确保各节点public/private/storage网卡名、子网、MAC地址、/etc/hosts映射及oifcfg绑定四者完全一致,否则gridSetup.sh在预检阶段因PRVF-4657错误静默退出。

检查public、private、storage网卡在各节点是否同名
Oracle 19c RAC 安装时,gridSetup.sh会调用oifcfg getif自动识别网卡用途,若两个节点上同一网络平面使用的物理网卡名不同(如 node1 是 ens192,node2 是 ens224),校验阶段直接报 PRVF-4657 并退出,不提示具体哪张卡不一致。
执行以下命令比对所有节点:
oifcfg getif
输出应类似:ens192 192.168.50.0 global public、ens224 10.10.10.0 global cluster_interconnect。若字段 1(网卡名)或字段 2(子网)不一致,就是根因。
- 不要依赖
ip a输出顺序——VMware 中网卡名可能随启动顺序变化,尤其克隆虚拟机后 - 禁止用
udev规则强行重命名网卡为eth0等旧式名称,RHEL8+/OL8 已弃用,会导致oifcfg无法识别 - 正确做法:统一使用一致的网卡命名策略(如全部启用
net.ifnames=0 biosdevname=0内核参数),并在所有节点安装前一次性固化
oifcfg setif手动绑定网卡与网络类型前必须清空旧配置
很多人试过oifcfg setif -global ens192/192.168.50.0:public但无效,是因为oifcfg不允许覆盖已存在的接口绑定,且不报错,只静默忽略。
必须先执行:
oifcfg delif -global
再逐条设置,例如:
oifcfg setif -global ens192/192.168.50.0:public<br>oifcfg setif -global ens224/10.10.10.0:cluster_interconnect<br>oifcfg setif -global ens256/192.168.30.0:asm
-
cluster_interconnect是 RAC 私网的固定关键字,不能写成private或interconnect -
asm类型仅用于 ASM 实例直连存储网,若用 NFS/iSCSI,此处可省略或设为storage(取决于 Grid Infrastructure 版本) - 设置后立刻运行
oifcfg getif确认三行输出完全一致,包括空格和大小写
/etc/hosts 中 IP 与网卡实际绑定地址必须严格对应
PRVF-4657 有时是表象,真实原因是某节点的public IP 在/etc/hosts里写了,但该 IP 并未真正绑定到oifcfg认定的public网卡上,比如ens192没配 IP 或配错子网。
验证步骤:
- 在每个节点运行
ip -br a | grep -E "^(ens|enp)",确认oifcfg getif列出的网卡确实有对应 IP(非127.0.0.1) - 检查
/etc/hosts中每行 IP 是否落在该网卡所属子网内,例如192.168.50.101必须属于ens192的192.168.50.0/24段 - VIP 和 SCAN IP 必须出现在
/etc/hosts,但不能绑定到任何物理网卡——它们由 Oracle Clusterware 动态接管,oifcfg只管底层物理接口
VMware 虚拟网卡 MAC 地址重复会导致oifcfg识别错乱
克隆 RAC 虚拟机后未重置网卡 MAC,两节点ens192拥有相同 MAC 地址,Linux 内核可能将流量路由到错误设备,oifcfg getif读取的接口状态不可靠,即使名字一样也会被判定为“不一致”。
解决方法:
- 关机状态下,在 VMware 设置中为每个节点的每张网卡(public/private/storage)单独生成新 MAC 地址
- 启动后检查
ip link show ens192 | grep ether,确认 MAC 全局唯一 - 若已启动,临时修复:删除
/etc/sysconfig/network-scripts/ifcfg-ens192中的HWADDR行,并执行nmcli connection reload+nmcli connection down ens192 && nmcli connection up ens192
网卡名一致只是起点,MAC 唯一、IP 子网对齐、oifcfg绑定干净、/etc/hosts无逻辑冲突——四者缺一不可。任意一项在某个节点上偏离,gridSetup.sh都会在预检阶段终止,且错误日志藏在$GRID_HOME/cfgtoollogs/opatchauto/core/<timestamp>/opatchauto.log</timestamp>里,不是installActions.log。


















