Oracle GI 12.1及更早版本不支持IPv6,12.2为实验性支持,19c起才真正支持;需确保地址格式规范、hosts配置正确、SCAN/VIP显式配置IPv6、监听器切换至IPv6模式、防火墙放行UDP端口、OCR路径使用IPv6字面量。
IPv6地址格式不被GI安装程序识别
oracle grid infrastructure 19c 及以后版本才真正支持 ipv6,12.2 是实验性支持、12.1 及更早版本压根不认 2001:db8::1 这类地址。安装时如果 gridsetup.sh 报错 prvg-11405 : ip address is not valid 或直接跳过网卡,八成是版本太老或地址写法违规。
- 必须用完整压缩前缀(如
2001:db8:abcd:0001::1)或标准双冒号压缩(2001:db8:abcd:1::1),禁止混用::ffff:192.168.1.1这类 IPv4-mapped IPv6 地址 -
/etc/hosts中每行只能有一个 IPv6 地址 + 主机名,不能像 IPv4 那样一行多个别名;且主机名必须和hostname -s输出完全一致(大小写敏感) - 检查
ifconfig或ip -6 addr show确认网卡已启用 global scope 的 IPv6 地址,link-local(fe80::/64)地址会被 GI 忽略
SCAN 和 VIP 必须显式配置为 IPv6 地址
GI 默认只读取 IPv4 的 /etc/hosts 条目,即使网卡有 IPv6 地址,SCAN 和 VIP 仍会回退到 IPv4。不手动指定,集群启动后 crsctl stat res -t 里 SCAN VIP 显示 OFFLINE 是常态。
- 安装前在响应文件中明确设置:
oracle.install.crs.config.scanType=STATIC,并填入 IPv6 格式的 SCAN 名称与地址,例如:oracle.install.crs.config.scanAddress=2001:db8:abcd:1::100 - VIP 必须通过
srvctl add vip单独添加,不能依赖自动发现:srvctl add vip -node node1 -address "2001:db8:abcd:1::101/128"(注意掩码必须是/128,不是/64) - SCAN 监听器(
LISTENER_SCAN1)默认绑定 IPv4,需手动修改其端口配置:用srvctl config scan_listener查当前监听地址,再用srvctl modify scan_listener -u切换为 IPv6 模式
防火墙和路由规则常导致节点间 IPv6 通信失败
IPv6 下 ping6 通不代表 GI 能通——OCR 和 CSSD 进程用的是 UDP 端口(如 47155、51000),而系统防火墙(iptables / nftables)默认不处理 IPv6 规则,ip6tables 往往是空的或被禁用。
- 确认
ip6tables -L -n输出中放行了 UDP 端口范围47150-47160(CSSD)、51000-51100(CRSD)、以及 SCAN 监听端口(默认 1521) - 内核参数
net.ipv6.conf.all.disable_ipv6 = 0和net.ipv6.conf.<interface>.disable_ipv6 = 0</interface>必须为 0,尤其在 systemd 启动脚本中容易被覆盖 - 多网段部署时,确保路由器通告(RA)未开启 autoconf,否则节点可能拿到临时 IPv6 地址,重启后变化导致 OCR 无法定位投票盘
OCR 设备路径在 IPv6 环境下需避免使用 DNS 解析
OCR 位置若配置为 +DATA 这类 ASM 磁盘组名,底层仍依赖 GIMR 的网络通信;但若 OCR 本身放在裸设备或 NFS 上,且路径含主机名(如 nfs-server.example.com:/ocrvol),GI 启动时会尝试用 IPv6 解析该域名——而多数 DNS 服务器未返回 AAAA 记录,导致 OCR 初始化超时失败。
- OCR 设备路径一律使用 IPv6 字面量地址,例如:
[2001:db8:abcd:1::200]:/ocrvol(注意方括号包裹) - 避免在
ocrconfig -add时引用任何带域名的路径;即使是单节点测试,也建议用ocrconfig -manual模式跳过自动探测 - 验证方式:启动 GI 前先手工运行
cluvfy comp ocr -n all -verbose,它会真实走一遍 IPv6 路径连通性检测
双栈不是简单加个 IPv6 地址就完事——GI 对 IPv6 的控制粒度很细,每个组件(CSSD、CRSD、OHASD、SCAN Listener)都有独立的地址绑定逻辑,漏掉任意一环都会静默降级回 IPv4 或直接挂起。最麻烦的是错误日志里往往不报 IPv6 相关关键词,得盯住 $GRID_HOME/log/<node>/cssd/ocssd.log</node> 里 “binding to” 和 “failed to resolve” 这两串字眼。










