Oracle 19c RAC云环境必须禁用IPv6自动配置,因云平台不支持SLAAC,IPV6_AUTOCONF=yes会导致VIP/SCAN绑定失败、集群卡在CRS-2672阶段;需设IPV6_AUTOCONF=no、验证sysctl net.ipv6.conf.all.autoconf=0,并确保云安全组放行ICMPv6及TCP 1521。
Oracle 19c RAC云环境必须禁用IPv6自动配置
oracle 19c rac在云平台(如aws、oci、阿里云)上启用ipv6双栈时,ipv6_autoconf=yes会导致vip和scan资源绑定失败,集群启动卡在crs-2672: attempting to start 'ora.net1.network'阶段。
根本原因是云厂商的IPv6子网不支持SLAAC(无状态地址自动配置),而Oracle Clusterware会尝试用ndisc6探测邻居,超时后反复重试直至超时。
- 必须在所有节点的网卡配置文件中显式设置
IPV6_AUTOCONF=no - 即使只用IPv4,只要系统启用了IPv6协议栈(
IPV6INIT=yes),也要关掉自动配置 - 验证命令:
sysctl net.ipv6.conf.all.autoconf和sysctl net.ipv6.conf.ens3.autoconf输出必须为0
SCAN监听器无法绑定IPv6地址的常见原因
srvctl config scan_listener 显示IPv6地址但lsnrctl status里看不到对应端口,通常不是权限或防火墙问题,而是SCAN资源未真正启用IPv6监听。
Oracle 19c默认只在SCAN资源中注册IPv4地址,即使你已添加IPv6网络资源,SCAN仍需手动触发重注册。
- 执行
srvctl modify scan -n <scan_name> -i <ipv6_address></ipv6_address></scan_name>(注意不是add) - 随后必须运行
srvctl stop scan; srvctl start scan,仅srvctl reload scan无效 - 检查
crsctl stat res -w "TYPE = ora.scan_listener.type",确认STATE_DETAILS含LISTENER_UP且IPv6地址出现在ENDPOINTS字段
云环境私网心跳不能复用公有网卡的IPv6接口
在云上部署RAC时,有人试图复用同一块弹性网卡(ENI)的IPv4+IPv6地址做public+private网络,这会导致oifcfg getif输出异常,且crsctl check cluster -all报CRS-4638: Oracle High Availability Services is online但心跳检测频繁超时。
云平台的IPv6路由模型与物理环境不同:IPv6子网前缀固定、NDP行为受限、链路本地地址不可靠。
- 私网必须使用独立网卡或明确标记为
private的子接口(如ens3:1),且只配IPv4 - 若强制用IPv6做私网,需在
sysctl.conf中加net.ipv6.conf.all.accept_dad=0和net.ipv6.conf.all.forwarding=0 -
oifcfg setif命令中IPv6接口必须带掩码(如ens3/2001:db8::/64),光写ens3会被忽略
客户端连接双栈服务时DNS解析顺序陷阱
客户端用SCAN名连接时,有时连到IPv4地址,有时连到IPv6,看似随机,实则受glibc的getaddrinfo()默认策略控制——它优先返回第一个可用地址,而非按AF_INET6/AF_INET顺序。
Oracle JDBC Thin驱动(19c及以后)默认启用IPv6优先,但tnsnames.ora中ADDRESS若只写主机名,解析结果不可控。
- 生产环境必须在
tnsnames.ora中显式指定IP:(ADDRESS=(PROTOCOL=TCP)(HOST=2001:db8::100)(PORT=1521)) - Linux客户端需设
export GAI_CONF="precedence ::ffff:0:0/96 100"确保IPv4 fallback有效 - Windows客户端需修改注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents值为0x0并重启,否则IPv6栈可能被系统禁用
ICMPv6或TCP 1521 on IPv6,会导致集群资源间通信静默失败。











