某个项目由于原生产环所使用的虚拟IP与多个系统对接,所以客户想要在新的生产环境中仍然使用原来的虚拟IP,所以当数据从原数据迁移到新的rac环境中后,我们需要修改虚拟IP,但原来是个单实例使用两上虚拟IP地址,现在是一个RAC数据库,如果是修改RAC的虚拟IP,那么不能做负载均衡,每次都连接到的是一个节点,由于SCAN IP使用/etc/hosts方式创建并且在安装生产环境时只指定了一个IP地址(10.138.129.105),所以这里需要通过增加SCAN IP地址(10.138.129.120/121)的方式来解决。
1.查看并停止scan以及scan_listener
[grid@db1 ~]$ cd $ORACLE_HOME/bin [grid@db1 bin]$ pwd /u01/app/11.2.0/grid/bin [grid@db1 bin]$ srvctl config scan SCAN name: scan-ip, Network: 1/10.138.129.0/255.255.255.0/eth2 SCAN VIP name: scan1, IP: /scan-ip/10.138.129.105 [grid@db1 bin]$ srvctl status scan_listener SCAN Listener LISTENER_SCAN1 is enabled SCAN listener LISTENER_SCAN1 is running on node db2 [grid@db1 bin]$ srvctl stop scan_listener [grid@db1 bin]$ srvctl stop scan [grid@db1 bin]$ srvctl status scan_listener SCAN Listener LISTENER_SCAN1 is enabled SCAN listener LISTENER_SCAN1 is not running
2.编辑/etc/hosts文件增加所需要的scan ip地下
[root@db1 ~]# vi /etc/hosts 127.0.0.1 localhost 10.138.129.101 db1 10.138.129.102 db2 10.138.129.103 db1-vip 10.138.129.104 db2-vip 10.138.129.105 scan-ip 10.138.129.120 scan-ip 10.138.129.121 scan-ip 192.168.20.1 db1-priv 192.168.20.2 db2-priv [root@db2 ~]# vi /etc/hosts 127.0.0.1 localhost 10.138.129.101 db1 10.138.129.102 db2 10.138.129.103 db1-vip 10.138.129.104 db2-vip 10.138.129.105 scan-ip 10.138.129.120 scan-ip 10.138.129.121 scan-ip 192.168.20.1 db1-priv 192.168.20.2 db2-priv
3.使用root用户更新scan
[root@db1 ~]# cd /u01/app/11.2.0/grid/bin [root@db1 bin]# ./srvctl modify scan -n scan-ip
4.查看scan配置,可以看到增加的IP已经被添加
[grid@db1 bin]$ srvctl config scan SCAN name: scan-ip, Network: 1/10.138.129.0/255.255.255.0/eth2 SCAN VIP name: scan1, IP: /scan-ip/10.138.129.105 SCAN VIP name: scan2, IP: /scan-ip/10.138.129.120 SCAN VIP name: scan3, IP: /scan-ip/10.138.129.121
5.更新与启动scan_listener
[grid@db1 ~]$ srvctl modify scan_listener -u [grid@db1 ~]$ srvctl start scan_listener [grid@db1 ~]$ crsctl stat res -t -------------------------------------------------------------------------------- NAME TARGET STATE SERVER STATE_DETAILS -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.ARCH.dg ONLINE ONLINE db1 ONLINE ONLINE db2 ora.CWDATA.dg ONLINE ONLINE db1 ONLINE ONLINE db2 ora.DATA.dg ONLINE ONLINE db1 ONLINE ONLINE db2 ora.LISTENER.lsnr ONLINE ONLINE db1 ONLINE ONLINE db2 ora.OCR.dg ONLINE ONLINE db1 ONLINE ONLINE db2 ora.SBKDATA.dg ONLINE ONLINE db1 ONLINE ONLINE db2 ora.asm ONLINE ONLINE db1 Started ONLINE ONLINE db2 Started ora.gsd OFFLINE OFFLINE db1 OFFLINE OFFLINE db2 ora.net1.network ONLINE ONLINE db1 ONLINE ONLINE db2 ora.ons ONLINE ONLINE db1 ONLINE ONLINE db2 -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE db1 ora.LISTENER_SCAN2.lsnr 1 ONLINE ONLINE db2 ora.LISTENER_SCAN3.lsnr 1 ONLINE ONLINE db1 ora.caiwu.db 1 ONLINE ONLINE db1 Open 2 ONLINE ONLINE db2 Open ora.chdyl.db 1 ONLINE ONLINE db1 Open 2 ONLINE ONLINE db2 Open ora.cvu 1 ONLINE ONLINE db2 ora.db1.vip 1 ONLINE ONLINE db1 ora.db2.vip 1 ONLINE ONLINE db2 ora.oc4j 1 ONLINE ONLINE db2 ora.rlzy.db 1 ONLINE ONLINE db1 Open 2 ONLINE ONLINE db2 Open ora.scan1.vip 1 ONLINE ONLINE db1 ora.scan2.vip 1 ONLINE ONLINE db2 ora.scan3.vip 1 ONLINE ONLINE db1
6.使用增加的scan ip来测试连接
C:/Users/Administrator>sqlplus "system/powersi"@10.138.129.120:1521/rlzy SQL*Plus: Release 11.2.0.4.0 Production on 星期二 11月 22 21:35:24 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. ERROR: ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 请输入用户名: ERROR: ORA-12560: TNS: 协议适配器错误 请输入用户名: ERROR: ORA-12560: TNS: 协议适配器错误 SP2-0157: 在 3 次尝试之后无法连接到 ORACLE, 退出 SQL*Plus
7.修改rac所有数据库实例的listener_networks参数,并再次使用增加的scan ip来测试连接
SQL> alter system set LISTENER_NETWORKS='((NAME=network1)(LOCAL_LISTENER=10.138.129.104:1521)(REMOTE_LISTENER=10.138.129.105:1521))','((NAME=network2)(LOCAL_LISTENER=10.138.129.104:1521)(REMOTE_LISTENER=10.138.129.120:1521))','((NAME=network3)(LOCAL_LISTENER=10.138.129.104:1521)(REMOTE_LISTENER=10.138.129.121:1521))' sid='RLZY2'; System altered. SQL> alter system set LISTENER_NETWORKS='((NAME=network1)(LOCAL_LISTENER=10.138.129.103:1521)(REMOTE_LISTENER=10.138.129.105:1521))','((NAME=network2)(LOCAL_LISTENER=10.138.129.103:1521)(REMOTE_LISTENER=10.138.129.120:1521))','((NAME=network3)(LOCAL_LISTENER=10.138.129.103:1521)(REMOTE_LISTENER=10.138.129.121:1521))' sid='RLZY1'; System altered. C:/Users/Administrator> C:/Users/Administrator>sqlplus "system/powersi"@10.138.129.120:1521/rlzy SQL*Plus: Release 11.2.0.4.0 Production on 星期二 11月 22 21:43:13 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SQL> exit 从 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options 断开 C:/Users/Administrator>sqlplus "system/powersi"@10.138.129.121:1521/rlzy SQL*Plus: Release 11.2.0.4.0 Production on 星期二 11月 22 21:44:37 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SQL>