vip必须与priv严格分离在不同子网,否则ocr可能误将vip绑定至私网接口,导致客户端无法访问、tnsping超时,且vip资源状态异常;public、vip、scan须同子网共用公网网卡,priv须独占隔离子网并使用独立网卡。

VIP和PRIV必须严格分离在不同子网,否则VIP会飘到私网接口上,导致客户端连接失败或集群心跳异常。
为什么VIP不能和PRIV在同一子网
Oracle RAC要求VIP绑定在公网网卡(public interface),仅用于客户端连接与故障转移;而PRIV是专供Cache Fusion和集群心跳的私网通信,必须独占一个隔离子网。若两者配置在同一网段(例如都配在192.168.5.0/24),OCR中USR_ORA_IF属性可能误匹配私网接口,触发VIP绑定到ent1或eth1等私网卡——此时ifconfig能看到VIP出现在私网接口下,但客户端无法路由访问,tnsping超时,crsctl stat res -t显示VIP资源状态为OFFLINE或反复重启。
正确分配VIP和PRIV子网的实操要点
按Oracle官方约束和生产实践,必须满足以下条件:
-
Public IP、VIP、SCAN IP三者必须处于同一子网,且共用同一物理网卡(如eth0或bond0) -
Private IP必须使用独立网卡(如eth1或ent1),且子网地址与上述公网子网**无任何重叠、不可路由互通** - 子网掩码建议统一为
/24(即255.255.255.0),避免因掩码不一致引发ARP冲突或路由判定错误 - 在
/etc/hosts中,node1-priv和node2-priv的IP必须与公网段完全无关,例如公网用10.0.0.0/24,私网就该用192.168.100.0/24或172.16.10.0/24
验证和修复已错配的VIP/PRIV子网
发现VIP飘到私网后,先确认当前网络绑定是否出错:
- 运行
oifcfg getif -global,检查输出中public类型是否指向公网网卡(如eth0),cluster_interconnect是否明确指向私网网卡(如eth1) - 若
oifcfg iflist -p显示某接口被标记为PRIVATE但实际承载了VIP,则需用oifcfg delif -global <iface>/<subnet></subnet></iface>删除错误条目,再用oifcfg setif -global <iface>/<subnet>:public</subnet></iface>重新绑定公网接口 - 修改后必须同步更新OCR中的VIP资源:停
ora.<node>.vip</node>,编辑.cap文件修正USR_ORA_IF=eth0(不能写eth0|eth1),再用crs_register -u重载
最易被忽略的是oifcfg配置与/etc/hosts中IP段的一致性——哪怕只改了hosts里一行私网IP的子网号,没同步调用oifcfg setif,集群重启后VIP仍会回归错误接口。











