一客户的核心Oracle10g RAC架构的数据库要进行IP的修改,原因为目前public ip和virtual ip均是用的公网IP,因此基于安全的考虑,将这2类IP均修改为公司局域网内私网IP。
出于对客户信息的保密,因此不能将真实的IP写出来,不过我会描述清楚,若有疑问,欢迎留言指出。
IP类型 | 节点1(原IP) | 节点1(改后IP) | 节点2(原IP) | 节点2(改后IP) |
---|---|---|---|---|
Public IP | 202.85.219.x | 192.168.0.214 | 202.85.219.x | 192.168.0.215 |
Virtual IP | 202.85.219.x | 192.168.0.216 | 202.85.219.x | 192.168.0.217 |
Private IP | 192.168.0.214 | 10.0.1.8 | 192.168.0.214 | 10.0.1.9 |
有些情况下,如果仅仅是变更Public IP,而不变更subnet或netmask(如192.168.1.112 变更为 192.168.1.113)的话,就不需要在Oracle Clusterware层面做任何事情,只需要在OS上更改网卡上的IP配置和/etc/hosts文件中的IP信息。
具体的操作步骤就是:
1、Shutdown Oracle Clusterware Stack
2、Modify the IP address at network layer,DNS and /etc/hosts file to reflect the change.
3、Restart Oracle Clusterware Stack
【以上操作仅在一个节点上操作即可】
如果要更变的Public IP与之前Public IP的subnet(netmask)不一样了,那么需要在Oracle Clusterware 层面删除旧的IP配置并紧接着添加新的IP配置(比如我们这个案例)。
[oracle@oracle3 ~]$ oifcfg delif -global eth0/202.85.219.0
[oracle@oracle3 ~]$ oifcfg setif -global eth0/192.168.0.0:public
[oracle@oracle3 ~]$ oifcfg getif
eth0 192.168.0.0 global public
eth1 10.0.1.0 global cluster_interconnect
上面命令执行完成后,需要在OS层面修改/etc/hosts和网卡的IP配置,最后重启Oracle Clusterware.
我们知道Public IP和VIP 是相同网段的IP,既然Public IP发生了变更,VIP必然也需要进行调整,下面接着执行VIP的调整。
收集当前VIP的配置信息:
oracle3:root@/oracle/product/10.2.0/crs/bin>./srvctl config nodeapps -n oracle3 -a
VIP 已存在。: /oracle3-vip/192.168.0.216/255.255.255.0/eth0
oracle3:root@/oracle/product/10.2.0/crs/bin>./srvctl config nodeapps -n oracle4 -a
VIP 已存在。: /oracle4-vip/192.168.0.217/255.255.255.0/eth0
验证VIP的状态
[oracle@oracle3 ~]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....l1.inst application ONLINE ONLINE oracle3
ora....l2.inst application ONLINE ONLINE oracle4
ora.cbl.db application ONLINE ONLINE oracle3
ora....bl1.srv application ONLINE ONLINE oracle3
ora....bl2.srv application ONLINE ONLINE oracle4
ora...._cbl.cs application ONLINE ONLINE oracle3
ora....E3.lsnr application ONLINE ONLINE oracle3
ora....le3.gsd application ONLINE ONLINE oracle3
ora....le3.ons application ONLINE ONLINE oracle3
ora....le3.vip application ONLINE ONLINE oracle3
ora....E4.lsnr application ONLINE ONLINE oracle4
ora....le4.gsd application ONLINE ONLINE oracle4
ora....le4.ons application ONLINE ONLINE oracle4
ora....le4.vip application ONLINE ONLINE oracle4
VIP显示为ONLINE。
停止相关服务
srvctl stop instance -d <db_name> -i <inst_name>
srvctl stop asm -n <node_name>
srvctl stop nodeapps -n <node_name>
上面命令是停止数据库实例,asm和nodeapps,VIP服务也会随之被停止。
修改VIP地址(此步执行前,首先需要在OS层面进行修改,如/etc/hosts)
使用root身份执行如下命令:
oracle3:root@/oracle/product/10.2.0/crs/bin>./srvctl modify nodeapps -n oracle3 -A oracle3-vip/255.255.255.0/eth0
oracle3:root@/oracle/product/10.2.0/crs/bin>./srvctl modify nodeapps -n oracle4 -A oracle4-vip/255.255.255.0/eth0
验证更变结果
oracle3:root@/oracle/product/10.2.0/crs/bin>./srvctl config nodeapps -n oracle3 -a
VIP 已存在。: /oracle3-vip/192.168.0.216/255.255.255.0/eth0
oracle3:root@/oracle/product/10.2.0/crs/bin>./srvctl config nodeapps -n oracle4 -a
VIP 已存在。: /oracle4-vip/192.168.0.217/255.255.255.0/eth0
重启动集群资源
启动CRS,和数据库即可。
注:如果listener.ora文件和参数LOCAL_LISTENER/REMOTE_LISTENER中引用了IP地址,也要进行修改。