oracle rac在虚拟机中必须使用双网卡,public网卡桥接、private网卡仅主机且静态配置,禁用networkmanager,hosts文件需包含public和private双向解析,mtu建议设为9000。

Oracle RAC必须用双网卡,单网卡跑不起来
Oracle RAC(Real Application Clusters)在虚拟机中部署时,public网卡和private网卡是硬性要求,不是可选项。缺一不可:public用于客户端连接、SCAN VIP、监听器通信;private专用于节点间心跳(cluster interconnect),走UDP多播或单播,延迟敏感、严禁走NAT或防火墙策略。VMware里若只配一块网卡,cluvfy stage -pre crsinst会直接报错,ora.crf资源无法上线,集群根本起不来。
VMware里必须桥接+仅主机组合,别碰NAT
public网卡必须设为桥接模式,绑定到宿主机实际可用的物理网卡(比如VMnet0),让虚拟机获得与宿主机同网段的真实IP(如192.168.1.101/24)。private网卡必须设为仅主机模式(如VMnet1或新建的VMnet2),子网要与public完全隔离(如192.168.100.0/24),且禁用DHCP——RAC要求所有IP静态配置。NAT模式绝对不能用于private网卡,因为NAT会做地址转换、丢UDP包、引入不确定延迟,cvuqdisk检测会失败。
- 在
虚拟网络编辑器中:确认VMnet0桥接到宿主机以太网/WiFi,VMnet1设为仅主机并取消勾选“连接到主机虚拟适配器”(避免宿主机干扰private流量) - 虚拟机设置里:网卡1选
桥接模式→ 网卡2选仅主机模式→ 两块都勾选“启动时连接” - Linux内系统中,对应接口名通常是
ens33(public)和ens37(private),别靠名字猜,用ip link看MAC或ethtool -i查驱动类型
Linux里要关NetworkManager,手写ifcfg文件
Oracle官方明确要求禁用NetworkManager服务,它会劫持接口、覆盖静态路由、干扰grid infrastructure对private网卡的绑定。RAC安装前必须停掉并禁用:
systemctl stop NetworkManager systemctl disable NetworkManager
然后手动写/etc/sysconfig/network-scripts/ifcfg-ens33和/etc/sysconfig/network-scripts/ifcfg-ens37,关键参数必须严格匹配:
-
BOOTPROTO=none(不是static,RHEL/CentOS 7+认none) ONBOOT=yes-
IPADDR、NETMASK、NAME字段全写死,不要留UUID或DEVICE冲突项 - private网卡的
PEERROUTES=no和DEFROUTE=no必须设,防止它抢默认路由
配完用ifdown ens37 && ifup ens37测试,再立刻跑ping -c2 -I ens37 192.168.100.102(另一节点private IP)验证通断。
hosts文件和DNS必须双向解析,private网段也得进/etc/hosts
RAC安装过程中,runcluvfy.sh会检查所有节点的/etc/hosts,public和private两个IP都必须有反向解析条目。漏掉private IP的hostname映射,ohasd启动阶段就会卡住。
正确写法示例(两节点):
192.168.1.101 node1-pub node1 192.168.100.101 node1-priv 192.168.1.102 node2-pub node2 192.168.100.102 node2-priv
注意:node1-priv这种别名不能省,Oracle集群软件内部硬编码依赖它;DNS服务器如果存在,也要确保nslookup node1-priv能返回private IP,否则OCR磁盘注册可能失败。
最易忽略的是private网卡的MTU值——默认1500容易引发ORA-15018或心跳超时,建议统一设为9000(需宿主机物理网卡支持Jumbo Frame),并在ifcfg-*里加MTU=9000。











