HAIP没起来需先检查子接口和日志:执行ifconfig -a | grep 169.254确认是否生成子接口及地址,无则HAIP未初始化;查ocssd.log中“no network HB”等关键字,结合crsctl stat res -t -init验证CSSD状态,再排查防火墙、MTU、rp_filter及OCR网卡配置一致性。
HAIP启动失败最直接的表现是ora.cluster_interconnect.haip资源反复进入OFFLINE或FAILED状态,进而拖垮ora.asm。别急着改网卡,先确认它有没有真正生成:
ifconfig -a | grep 169.254,看是否有类似eth1:1或enp0s9:1的子接口及对应169.254.x.x地址;没有,说明HAIP连初始化都没过$GRID_HOME/log/<hostname>/cssd/ocssd.log,搜索no network HB或clssnmvDHBValidateNCopy;若出现has a disk HB, but no network HB,基本锁定HAIP通信层未就绪crsctl stat res -t -init确认ora.cssd是否ONLINE——如果CSSD都起不来,说明底层UDP心跳根本没通,HAIP连入场机会都没有HAIP依赖UDP多播/单播完成节点间握手,系统级策略常静默掐断它:
iptables -L -n检查INPUT链,重点看是否DROP或REJECT了目标为169.254.0.0/16或端口12345–12350的UDP包mtu 1500,另一个设mtu 9000,会导致HAIP握手包被丢弃;统一执行ip link set dev eth1 mtu 1500
arping -I eth1 -c 3 169.254.10.10测试二层可达性;失败则检查sysctl net.ipv4.conf.eth1.rp_filter,值必须是0或2,不能是1
OCR里存的是集群首次启动时认定的私网设备名,物理网卡更换后若不更新,CSSD会持续往不存在的接口发心跳:
oifcfg iflist -p -n,确认记录的私网接口(如eth1/192.168.11.0)ip addr show,找到承载私网IP的设备(如eth2)oifcfg delif -node node1 eth1/192.168.11.0;加新配:oifcfg setif -node node1 eth2/192.168.11.0:cluster_interconnect
crsctl stop res ora.cssd -init && crsctl start res ora.cssd -init
直接crsctl modify res ora.cluster_interconnect.haip -attr "ENABLED=0" -init大概率让ASM起不来,因为它的START_DEPENDENCIES里硬依赖ora.cluster_interconnect.haip:
crsctl stat res ora.asm -p -init | grep START_DEPENDENCIES,确认是否含hard(...,ora.cluster_interconnect.haip,...)
crsctl modify res ora.asm -attr "START_DEPENDENCIES='hard(ora.cssd,ora.ctssd)pullup(ora.cssd,ora.ctssd)weak(ora.drivers.acfs)'" -init
crsctl modify res ora.cluster_interconnect.haip -attr "ENABLED=0" -init
crsctl stop has && crsctl start has
HAIP不是开关按钮,它是嵌在集群心跳协议里的关键环节;多数“修复”本质是绕过它,而绕过的代价是失去私网网卡冗余能力——这点容易被忽略。