必须设为“预留=分配”,因Oracle RAC对CPU调度延迟和内存访问一致性极其敏感,未设置CPU和内存预留会导致资源争用时CSSD超时、节点驱逐;禁用Memory Hot Add以避免NUMA感知异常,启用disk.EnableUUID=true及“多写入器”确保ASM磁盘稳定识别与挂载。
VMware虚拟机CPU和内存必须设为“预留=分配”
oracle rac对cpu调度延迟和内存访问一致性极其敏感。如果vmware中只设置“限制”或“份额”,而没设cpu reservation和memory reservation,宿主机资源争用时,rac节点可能被抢占调度权或触发内存气球回收,直接导致cssd进程超时、节点驱逐。
实操建议:
- 在vSphere中编辑虚拟机设置 → “资源”选项卡 → 将
CPU Reservation和Memory Reservation均设为等于分配值(例如分配8 vCPU / 16 GB,则预留也填8 / 16) - 禁用
Memory Hot Add——该功能会干扰Linux内核的NUMA感知,导致ASM实例无法正确绑定本地内存节点 - ESXi主机BIOS中启用
Intel VT-x/EPT或AMD-V/RVI,并在虚拟机配置中勾选对应选项;否则RAC的Cache Fusion通信会因缺少硬件辅助虚拟化而大幅增加CPU开销
共享磁盘必须启用disk.EnableUUID=true且设为“多写入器”
不设disk.EnableUUID=true会导致Linux系统中/usr/lib/udev/scsi_id -g -u -d /dev/sdc返回空,UDEV规则无法绑定持久设备名,ASM磁盘在节点重启后识别错乱;不设“多写入器”模式则ASM实例启动时会报ORA-15032: not all alterations performed和ORA-15017: unable to mount diskgroup。
实操建议:
- 关机状态下编辑.vmx文件,添加两行:
disk.EnableUUID = "TRUE"scsi1:0.deviceType = "disk"(注意:不要用默认scsi0,改用scsi1起始) - 在vSphere客户端中右键磁盘 → “编辑设置” → 勾选“启用多写入器” → 确保磁盘模式为“独立-持久”(避免快照影响ASM元数据)
- 若使用厚置备置零磁盘,创建耗时长但I/O稳定;若用RDM,需确认底层LUN支持SCSI-3 PR(Persistent Reservations),否则集群无法完成投票盘(Voting Disk)仲裁
私网必须用专用交换机+万兆网卡+vmxnet3驱动
RAC私网承载Cache Fusion数据块传输和GCS/GES锁同步,流量大、延迟敏感。共用业务交换机或千兆网卡极易引发gc cr block busy、gc current block busy等待事件,节点间心跳超时(missed heartbeat)进而触发reboot。
实操建议:
- 为私网单独配置一个vSwitch,不关联任何物理网卡(仅Host-Only)或直连万兆物理网卡(推荐)
- 虚拟网卡类型必须选
vmxnet3(非e1000),并确认Guest OS中已加载vmxnet3驱动(lsmod | grep vmxnet3) - 在RHEL/CentOS中关闭私网接口的TCP offload:
ethtool -K eth1 tx off rx off gso off tso off - 验证私网延迟:
ping -c 10 -s 8192 node2_private_ip,平均延迟应
ASM磁盘发现路径必须统一且避开multipath自动接管
ASMLIB或UDEV绑定依赖设备路径唯一性。若系统启用了device-mapper-multipath,它可能将同一LUN映射为/dev/mapper/mpatha和/dev/sdc两个路径,导致ASM在不同节点上识别出不同路径,磁盘组无法挂载。
实操建议:
- 在
/etc/multipath.conf中明确屏蔽ASM磁盘WWID:blacklist { wwid ".*" }blacklist_exceptions { wwid "36000c29[0-9a-f]{24}" }(用scsi_id -g -u -d /dev/sdc获取实际WWID) - ASM磁盘发现优先用SCSI ID而非/dev/sdX:
udevadm info --name=/dev/sdc | grep ID_SERIAL→ 得到ID_SERIAL=36000c29abcdef...→ 写UDEV规则绑定/dev/asm-disk1 - Grid Infrastructure安装前执行
oracleasm scandisks,确认所有节点输出完全一致的磁盘列表;若有差异,立刻停掉oracleasm服务并检查SCSI UUID是否生效
ORA-15032,根本不会提示是虚拟化层配置问题。



















