不能只改ifcfg文件就完事,因为networkmanager会覆盖配置、/etc/hosts映射缺失或错序会导致vip/scan解析失败、selinux/firewalld未调谐会阻断通信,且必须执行ifdown/ifup而非仅重启network服务以避免接口重命名。
直接改 /etc/sysconfig/network-scripts/ifcfg-* 是可行的,但必须同步处理 networkmanager 冲突、/etc/hosts 映射和 selinux/firewalld 状态,否则 oracle rac 启动会卡在 vip 或 scan 解析阶段。
为什么不能只改 ifcfg 文件就完事
Oracle 19c RAC 对网络稳定性极度敏感。单纯修改 ifcfg-ens33 这类文件后,若系统启用了 NetworkManager,它会在后台自动覆盖你的静态配置(尤其在重启或网卡重载时);同时,RAC 的 ora.cvu、ora.scan 等资源依赖 /etc/hosts 中精确的 IP–主机名双向映射,缺一不可。常见现象是 crsctl check cluster 显示 “CRS-4638: Oracle High Availability Services is online”,但 srvctl status scan 报 “SCAN VIP is not running”。
修改 ifcfg 文件前必须停掉 NetworkManager
执行以下命令(所有节点都要做):
systemctl stop NetworkManagersystemctl disable NetworkManager- 确认已禁用:
systemctl is-enabled NetworkManager应返回disabled
再检查是否残留进程:ps -ef | grep NetworkManager,若有则 kill -9 干净。否则即使 ifcfg 写对了,nmcli connection reload 或一次 ifdown/ifup 就可能回滚你的配置。
ifcfg 文件关键参数必须显式写全
以 public 网卡 ifcfg-ens33 为例,最小必要字段如下(不要留空或注释掉):
DEVICE=ens33 TYPE=Ethernet ONBOOT=yes BOOTPROTO=none IPADDR=192.168.10.101 NETMASK=255.255.255.0 GATEWAY=192.168.10.2 DNS1=192.168.10.2 NM_CONTROLLED=no
注意:NM_CONTROLLED=no 是硬性要求,告诉系统“别让 NetworkManager 管这个口”;BOOTPROTO=none 而非 static,这是 RHEL/CentOS/Oracle Linux 7+ 的规范写法;GATEWAY 必须与 public 网段匹配,否则 ping 外网通但 nslookup 失败,影响 OCR 位置发现。
/etc/hosts 必须包含全部四类地址且顺序不能乱
Oracle 19c 安装和集群启动时会按行扫描 /etc/hosts,遇到第一个匹配就停止。错误写法(如把 SCAN 放最前)会导致 VIP 解析失败。标准顺序应为:
# Public IP 192.168.10.101 node1 192.168.10.102 node2 # Private IP(必须用 -priv 后缀) 192.168.1.101 node1-priv 192.168.1.102 node2-priv # VIP(必须用 -vip 后缀) 192.168.10.111 node1-vip 192.168.10.112 node2-vip # SCAN(单条,指向所有节点,不能带端口) 192.168.10.120 node-scan
漏掉 -priv 或写成 node1_priv(下划线)会导致 cluvfy comp nodecon 直接报错;SCAN 行多写一个 IP 或加 :1521 会让 srvctl start scan 拒绝启动。
真正容易被忽略的是:改完 ifcfg 后必须 ifdown ens33 && ifup ens33(不能只 systemctl restart network),因为 RAC 集群服务依赖网卡设备名与内核接口名严格一致;而 systemctl restart network 在某些 OL7.9 内核下会触发接口重命名(如 ens33 → eth0),导致 OCR 无法识别私网设备。











