修改前的IP
节点名称 公共IP VIP SCAN IP
rac1 192.168.100.10 192.168.100.12 192.168.100.14
rac2 192.168.100.11 192.168.100.13
修改后的IP
节点名称 公共IP VIP SCAN IP
rac1 192.168.10.10 192.168.10.12 192.168.10.14
rac2 192.168.10.11 192.168.10.13
删除唯一的公共网络接口
[root@rac1 bin]# ./oifcfg delif -global eth0
重新设置公共网络接口
[root@rac1 bin]# ./oifcfg setif -global eth0/192.168.10.0:public
查看
[root@rac1 bin]# ./oifcfg getif
eth1 10.10.10.0 global cluster_interconnect
eth0 192.168.10.0 global public
在RAC所有节点停止所有服务的运行
[root@rac1 bin]# pwd
/u01/app/11.2.0/grid/bin
[root@rac1 bin]# ./crsctl stop has
在所有节点服务器上修改IP地址并生效, 注意数据库存储是否走这个网络
重新配置SCAN域名解析
修改所有节点/etc/hosts文件
在所有节点重新启动所有服务
[root@rac1 ~]# cd /u01/app/11.2.0/grid/bin/
[root@rac1 bin]# ./crsctl start has
修改与公共网络相关的网络资源
由于有很多资源和公共网络绑定,对公共网络的修改会造成这些资源无法启动,包括network,SCAN VIP ,SCAN listener,VIP,listener,GNS VIP。
所有资源都依赖network网络资源的配置,所以需要先修改network网络资源到正确的网络
查看network当前的网络配置
[root@rac1 bin]# ./srvctl config network
Network exists: 1/192.168.100.0/255.255.255.0/eth0, type static
修改network网络资源配置
[root@rac1 bin]# ./srvctl modify network -k 1 -S 192.168.10.0/255.255.255.0/eth0 -v
Successfully modified Network.
修改格式:-k 指定的是network号,与原有保持一致,-S 是新的子网地址、子网掩码、接口名称。
重新配置SCAN VIP和SCAN listener
执行以下命令查看当前的SCAN和SCAN listener配置:
[root@rac1 bin]# ./srvctl config scan
SCAN name: scan-ip, Network: 1/192.168.10.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /scan-ip/192.168.100.14
[root@rac1 bin]# ./srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
停止SCAN listener和SCAN的运行
[root@rac1 bin]# ./srvctl stop scan_listener
[root@rac1 bin]# ./srvctl stop scan
删除SCAN listener和SCAN
[root@rac1 bin]# ./srvctl remove scan_listener
Remove scan listener? (y/[n]) y
[root@rac1 bin]# ./srvctl remove scan
Remove the scan? (y/[n]) y
添加SCAN
[root@rac1 bin]# ./srvctl add scan -n scan-ip -k 1 -S 192.168.10.0/255.255.255.0/eth0
添加SCAN listener
[root@rac1 bin]# ./srvctl add scan_listener
启动SCAN和SCAN listener
[root@rac1 bin]# ./srvctl start scan
[root@rac1 bin]# ./srvctl start scan_listener
重新配置VIP和本地listener
停止VIP资源和本地监听器
[root@rac1 bin]# ./crsctl stop resource ora.rac1.vip -f
CRS-2673: Attempting to stop 'ora.rac1.vip' on 'rac1'
CRS-2677: Stop of 'ora.rac1.vip' on 'rac1' succeeded
[root@rac1 bin]# ./crsctl stop resource ora.rac2.vip -f
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'rac2'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'rac2' succeeded
CRS-2673: Attempting to stop 'ora.rac2.vip' on 'rac2'
CRS-2677: Stop of 'ora.rac2.vip' on 'rac2' succeeded
修改VIP资源IP地址
[root@rac1 bin]# ./srvctl modify nodeapps -A 192.168.10.12/255.255.255.0/eth0 -n rac1
[root@rac1 bin]# ./srvctl modify nodeapps -A 192.168.10.13/255.255.255.0/eth0 -n rac2
启动VIP
[root@rac1 bin]# ./crsctl start resource ora.rac1.vip -f
CRS-2672: Attempting to start 'ora.rac1.vip' on 'rac1'
CRS-2676: Start of 'ora.rac1.vip' on 'rac1' succeeded
[root@rac1 bin]# ./crsctl start resource ora.rac2.vip -f
CRS-2672: Attempting to start 'ora.rac2.vip' on 'rac2'
CRS-2676: Start of 'ora.rac2.vip' on 'rac2' succeeded
启动本地监听器
[root@rac1 bin]# ./srvctl start listener -n rac1
[root@rac1 bin]# ./srvctl start listener -n rac2
修改数据库实例参数
SQL> show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST=
192.168.10.12)(PORT=1521))
alter system set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.12)(PORT = 1521))' sid='rac1';
alter system set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.13)(PORT = 1521))' sid='rac2';
alter system register;
检查
ifconfig
lsnrctl status
crsctl status resource -t
本文参考《构建最高可用oracle数据库系统:oracle 11gr2 rac管理、维护与性能优化》 作者:刘炳林