不能直接 oifcfg delif 就完事,因为 delif 会删除 ocr 中注册的网络接口绑定关系,若新接口未预先 setif,将导致 ora.net1.network 资源无法 online,进而引发 vip/scan 启动失败、资源状态为 offline 或 intermediate。
必须先用 oifcfg getif 确认当前配置,再决定是 setif 还是 delif + setif;直接硬删旧接口可能触发 crs 异常。
为什么不能直接 oifcfg delif 就完事?
Oracle 19c RAC 的 oifcfg 不是纯配置写入工具,它操作的是 OCR 中注册的网络接口绑定关系。如果旧子网已下线、新子网未就位,delif 后 OCR 里 public 网络资源会变成“无接口可绑”状态,导致 ora.net1.network 资源无法 online,后续 VIP/SCAN 启动全部失败。
常见现象:crsctl stat res -t 显示 ora.net1.network 是 OFFLINE 或 INTERMEDIATE,srvctl config network 报错或输出为空。
正确思路是:让 OCR 始终有且仅有一个合法的 public 接口定义,中间不出现空窗期。
oifcfg setif 和 oifcfg delif 的执行顺序怎么定?
取决于你是否新增了物理网卡或子网段:
- 若只是同一网卡(如
bondeth0)更换 IP 段(例如从192.168.19.0改为192.168.18.0),且该网卡仍存在:
→ 先执行oifcfg setif -global bondeth0/192.168.18.0:public(覆盖写入)
→ 再执行oifcfg delif -global bondeth0/192.168.19.0(清理旧记录) - 若新增了网卡(如原用
ens41,现改用ens42):
→ 先执行oifcfg setif -global ens42/192.168.29.0:public
→ 再执行oifcfg delif -global ens41/192.168.28.0
关键依据来自:oifcfg iflist -p -n(显示物理网卡与子网映射)和 srvctl config network -k1(显示 OCR 当前登记的 subnet)。两者必须一致,否则 srvctl modify network 会拒绝执行。
执行 oifcfg 前后最容易被忽略的三件事
— 所有节点都得执行,不能只在当前节点操作;
— 必须用 grid 用户执行,root 或 oracle 会提示权限不足;
— 修改后立即验证:oifcfg getif 输出应只含一条 public 记录,且子网与 OS 层 ip addr show 显示的网卡实际地址段匹配。
漏掉任意一点,后续 srvctl modify network 或 srvctl modify vip 都会报 “interface not found” 或 “subnet mismatch”,但错误信息不明确,容易往 DNS 或 hosts 上瞎查。











