背景
为了满足海量地址分配需求,IPV6替代IPV4已成为必然。新部署的ORACLE数据库已经直接使用IPV6,已部署的ORACLE数据库也正在更改IPV4使用IPV6。
数据库更改IPV4使用IPV6还涉及主机和客户端网络更改,如果同时实施所有网络更改,客户端多且网络比较复杂的环境,业务停机时间会很长从而影响业务正常使用。
为了应对这种情况,IPV4+IPV6双栈过渡技术也就应运而生,基本上新版本的软硬件都具备双栈配置。
二
ORACLE数据库配置IPV4+IPV6双栈
2.1 版本支持
Oracle Grid Infrastructure (GI)集群12C以前是不支持IPV6,如果使用早于 12.1.0.2 的 GI 版本,请先升级到12.1.0.2 或更高版本支持IPV4+IPV6双栈。
2.2 网络规划
本次实验双栈目标是将客户端访问网络配置更改,只更改SCANIP、VIPIP和PUBLICIP网络,SCAN、VIP和主机的名称不变,唯一更改是IP地址,更改网络不能滚动方式完成,因此必须中断数据库。
本次实验私有和私网存储单元访问网络不需要对它们进行任何更改,可以使用这些网络远程登录,完成本次实验网络更改。
对于IPV6,所有标准子网都是/64,要计算此IP地址的子网,只需获取地址的前4部分(fd15:4ba5:5a2b:1008)并将“::0”附加到它:fd15:4ba5:5a2b:1008::0。
2.3 获取GI集群配置信息
-
(grid)$ srvctl config network
-
(grid)$ srvctl config scan
-
(grid)$ srvctl config scan_listener
-
(grid)$ srvctl config vip -n rac19c1
-
(grid)$ srvctl config vip -n rac19c2
-
(grid)$ srvctl config listener
-
(grid)$ srvctl config nodeapps
-
(grid)$ srvctl config cvu
-
(grid)$ oifcfg getif
2.4 停止集群服务并检查状态
-
(grid)$ srvctl stop listener
-
(grid)$ srvctl stop scan_listener
-
(grid)$ srvctl stop database -db rac19c
-
(grid)$ srvctl stop cvu
-
(grid)$ srvctl stop vip -n rac19c1
-
(grid)$ srvctl stop vip -n rac19c2
-
(grid)$ srvctl stop scan
-
(grid)$ srvctl stop nodeapps
注意:如果有如下报错,可以强制停止服务。
----强制停止。
-
(grid)$ crsctl stat res -t
2.5 配置hosts文件
建议数据库双栈使用DNS,为了使主机 VIP 和 SCAN 的主机名必须解析为IPv4和IPv6 IP地址。
本次实验环境没有DNS配置,只配置hosts,配置如下:
cp /etc/hosts /etc/hosts.bak
vi /etc/hosts
#Public IP
192.168.100.91 rac19c1
192.168.100.92 rac19c2
#Virtual IP
192.168.100.101 rac19c1-vip
192.168.100.102 rac19c2-vip
#Scan IP
192.168.100.111 rac19c-scan
#Public IP
fd15:4ba5:5a2b:1008::0100:0091 rac19c1_v6
fd15:4ba5:5a2b:1008::0100:0092 rac19c2_v6
#Virtual IP
fd15:4ba5:5a2b:1008::0100:0101 rac19c1_v6-vip
fd15:4ba5:5a2b:1008::0100:0102 rac19c2_v6-vip
#Scan IP
fd15:4ba5:5a2b:1008::0100:0111 rac19c_v6-scan
2.6 修改/etc/sysctl.conf
每个数据库节点上,/etc/sysctl.conf修改默ipv6设置。参数:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
1禁用0开启,参数redhat7默认开启,不需要修改,也可以写入sysctl.conf文件,运行“sysctl -p”生效。
2.7 更新/etc/sysconfig/network
每个数据库节点上都修改,添加以下参数:
2.8 修改ifcfg-eth0
每个数据库节点上都修改,确保ifcfg-eth0文件同时包含IPV6和IPV4网络配置。
2.9 重启网卡并验证
(root)# ifdown eth0;ifup eth0
(root)# ifconfig eth0
2.10 修改/etc/host.conf
用户需要使用DNS来解析SCAN,否则会发生一些问题。以往案例是通过下面的方式规避了这个问题,请参考:
在/etc/host.conf配置文件中添加"multi on"。
2.11 添加网络资源
群集中的一个节点上使用新的网络配置添加网络资源。
$su - root
(root)# srvctl modify network -netnum 1 -subnet fd15:4ba5:5a2b:1008::0/64/eth0
2.12 修改节点VIP
必须首先删除节点VIP,然后重新添加。
2.13 验证节点VIP
在这些更改之后,节点vip资源应该在USR_ORA_VIP属性中列出IPV4和IP6 IP,如下所示:
2.14 添加公共接口
使用 oifcfg 将新的公共接口添加到集群。
注意:您在指定网络时不能使用速记双冒号语法,除非您使用的是 12.1.0.2 BP13 或更高版本。
2.15 仅一个节点上将扫描集群名
注意:因为没有使用dns,临时把hosts文件里IPV6和IPV4的scanname(rac19c-scan)修改成一样,扫描完成后,修改IPV6的scanname为rac19c_v6-scan,如果hosts中IPV6和IPV4的scanname相同,GI运行期间会一直有报错。
2.16 在集群中的一个节点上修改网络资源以激活IPV6配置
$su - root
(root)# srvctl modify network -iptype both
2.17 开启集群并验证
2.18 最后一次检查
在一个节点上重新启动所有集群组件。
2.19 在一个节点上重新启动数据库
2.20 检查GI集群配置信息
2.21 客户端连接测试
测试成功,完成配置。