由于种种原因,可能会遇到需要改服务器IP的情况,完全属于吃饱了撑着的事情,DBA就惨了,单实例如果有用dbconsole,还得重新删掉重建才能使用,rac环境就更悲催了!想想任某人对IT行业的评价,笑而不语…
修改前:这里用DNS解析就改DNS,没用DNS就改各个节点的hosts文件
[root@rac1 ~]# cat /etc/hosts 192.168.1.42 rac2.yang.com rac2 |
修改后:
[root@rac1 ~]# cat /etc/hosts 192.168.2.42 rac2.yang.com rac2 |
1:关闭数据库实例,asm实例,nodeapps
- [oracle@rac2 ~]$ crs_stat -t -v
- Name Type R/RA F/FT Target State Host
- ----------------------------------------------------------------------
- ora.rac.db application 0/0 0/1 ONLINE ONLINE rac1
- ora....c1.inst application 0/5 0/0 ONLINE ONLINE rac1
- ora....c2.inst application 0/5 0/0 ONLINE ONLINE rac2
- ora....SM1.asm application 0/5 0/0 ONLINE ONLINE rac1
- ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE rac1
- ora.rac1.gsd application 0/5 0/0 ONLINE ONLINE rac1
- ora.rac1.ons application 0/3 0/0 ONLINE ONLINE rac1
- ora.rac1.vip application 0/0 0/0 ONLINE ONLINE rac1
- ora....SM2.asm application 0/5 0/0 ONLINE ONLINE rac2
- ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE rac2
- ora.rac2.gsd application 0/5 0/0 ONLINE ONLINE rac2
- ora.rac2.ons application 0/3 0/0 ONLINE ONLINE rac2
- ora.rac2.vip application 0/0 0/0 ONLINE ONLINE rac2
- [oracle@rac2 ~]$ srvctl stop database -d rac -o immediate
- [oracle@rac2 ~]$ crs_stop -all
2:操作系统级别修改ip地址,重启2个节点,发现VIP和listener不正常
- [oracle@rac1 ~]$ ip a |grep inet |grep -v 'inet6'
- inet 127.0.0.1/8 scope host lo
- inet 192.168.2.41/24 brd 192.168.2.255 scope global eth0
- inet 192.168.123.41/24 brd 192.168.123.255 scope global eth1
- [oracle@rac2 ~]$ ip a |grep inet |grep -v 'inet6'
- inet 127.0.0.1/8 scope host lo
- inet 192.168.2.42/24 brd 192.168.2.255 scope global eth0
- inet 192.168.123.42/24 brd 192.168.123.255 scope global eth1
- [oracle@rac1 ~]$ crs_stat -t -v
- Name Type R/RA F/FT Target State Host
- ----------------------------------------------------------------------
- ora.rac.db application 0/0 0/1 ONLINE ONLINE rac1
- ora....c1.inst application 0/5 0/0 ONLINE ONLINE rac1
- ora....c2.inst application 0/5 0/0 ONLINE ONLINE rac2
- ora....SM1.asm application 0/5 0/0 ONLINE ONLINE rac1
- ora....C1.lsnr application 0/5 0/0 ONLINE OFFLINE
- ora.rac1.gsd application 0/5 0/0 ONLINE ONLINE rac1
- ora.rac1.ons application 0/3 0/0 ONLINE ONLINE rac1
- ora.rac1.vip application 0/0 0/0 ONLINE OFFLINE
- ora....SM2.asm application 0/5 0/0 ONLINE ONLINE rac2
- ora....C2.lsnr application 0/5 0/0 ONLINE OFFLINE
- ora.rac2.gsd application 0/5 0/0 ONLINE ONLINE rac2
- ora.rac2.ons application 0/3 0/0 ONLINE ONLINE rac2
- ora.rac2.vip application 0/0 0/0 ONLINE OFFLINE
3:修改2个节点的listener.ora文件,重启监听器,发现一切正常,难道这样就ok了?
- [oracle@rac1 ~]$ cd $ORACLE_HOME/network/admin
- [oracle@rac1 admin]$ grep -v '^#' listener.ora
- LISTENER_RAC1 =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip.yang.com)(PORT = 1521)(IP = FIRST))
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.41)(PORT = 1521)(IP = FIRST))
- )
- )
- SID_LIST_LISTENER_RAC1 =
- (SID_LIST =
- (SID_DESC =
- (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
- (SID_NAME = rac1)
- )
- (SID_DESC =
- (SID_NAME = PLSExtProc)
- (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
- (PROGRAM = extproc)
- )
- )
- [oracle@rac1 ~]$ srvctl stop listener -n rac1
- [oracle@rac1 ~]$ srvctl stop listener -n rac2
- [oracle@rac1 ~]$ srvctl start listener -n rac1
- [oracle@rac1 ~]$ srvctl start listener -n rac2
- [oracle@rac1 ~]$ crs_stat -t -v
- Name Type R/RA F/FT Target State Host
- ----------------------------------------------------------------------
- ora.rac.db application 0/0 0/1 ONLINE ONLINE rac1
- ora....c1.inst application 0/5 0/0 ONLINE ONLINE rac1
- ora....c2.inst application 0/5 0/0 ONLINE ONLINE rac2
- ora....SM1.asm application 0/5 0/0 ONLINE ONLINE rac1
- ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE rac1
- ora.rac1.gsd application 0/5 0/0 ONLINE ONLINE rac1
- ora.rac1.ons application 0/3 0/0 ONLINE ONLINE rac1
- ora.rac1.vip application 0/0 0/0 ONLINE ONLINE rac1
- ora....SM2.asm application 0/5 0/0 ONLINE ONLINE rac2
- ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE rac2
- ora.rac2.gsd application 0/5 0/0 ONLINE ONLINE rac2
- ora.rac2.ons application 0/3 0/0 ONLINE ONLINE rac2
- ora.rac2.vip application 0/0 0/0 ONLINE ONLINE rac2
4:查看下VIP,发现依然是旧的,在2个节点上使用oifcfg改(使用root用户),这里估计也可以使用vipca工具改
- [oracle@rac1 ~]$ ip a |grep inet |grep -v 'inet6'
- inet 127.0.0.1/8 scope host lo
- inet 192.168.2.41/24 brd 192.168.2.255 scope global eth0
- inet 192.168.1.141/24 brd 192.168.1.255 scope global eth0:1
- inet 192.168.123.41/24 brd 192.168.123.255 scope global eth1
- [root@rac1 ~]# cd /u01/app/oracle/product/10.2.0/crs_1/bin/
- [root@rac1 bin]# ./oifcfg iflist
- eth0 192.168.2.0
- eth0 192.168.1.0
- eth1 192.168.123.0
- [root@rac1 bin]# ./oifcfg getif
- [root@rac1 bin]# ./oifcfg setif -global eth0/192.168.2.0:public
- [root@rac1 bin]# ./oifcfg setif -global eth1/192.168.123.0:cluster_interconnect
- [root@rac1 bin]# ./oifcfg getif
- eth0 192.168.2.0 global public
- eth1 192.168.123.0 global cluster_interconnect
- [root@rac2 bin]# ./oifcfg iflist
- eth0 192.168.2.0
- eth0 192.168.1.0
- eth1 192.168.123.0
- [root@rac2 bin]# ./oifcfg getif
- eth0 192.168.2.0 global public
- eth1 192.168.123.0 global cluster_interconnect
- [oracle@rac1 ~]$ srvctl stop database -d rac -o immediate
- [oracle@rac1 ~]$ srvctl stop listener -n rac1
- [oracle@rac1 ~]$ srvctl stop listener -n rac2
- [root@rac1 bin]# ./srvctl modify nodeapps -n rac1 -A 192.168.2.141/255.255.255.0/eth0
- [root@rac2 bin]# ./srvctl modify nodeapps -n rac2 -A 192.168.2.142/255.255.255.0/eth0
5:修改完,发现新的VIP和旧的VIP都绑定在网卡上,于是重启2个节点,重启后只绑定了新的VIP,nodeapps,asm和数据库实例都随着crs的启动而自动online!(这里忘记使用service network restart命令测试,失败!)
- [oracle@rac1 ~]$ crs_start -all
- [oracle@rac1 ~]$ ip a |grep 'inet' |grep -v 'inet6'
- inet 127.0.0.1/8 scope host lo
- inet 192.168.2.41/24 brd 192.168.2.255 scope global eth0
- inet 192.168.1.141/24 brd 192.168.1.255 scope global eth0:1
- inet 192.168.2.141/24 brd 192.168.2.255 scope global secondary eth0:2
- inet 192.168.123.41/24 brd 192.168.123.255 scope global eth1
- [root@rac1 ~]# uptime
- 20:24:25 up 6 min, 1 user, load average: 2.80, 3.15, 1.50
- [root@rac1 ~]# ip a |grep inet |grep -v inet6
- inet 127.0.0.1/8 scope host lo
- inet 192.168.2.41/24 brd 192.168.2.255 scope global eth0
- inet 192.168.2.141/24 brd 192.168.2.255 scope global secondary eth0:1
- inet 192.168.123.41/24 brd 192.168.123.255 scope global eth1
- [root@rac1 ~]# cd /u01/app/oracle/product/10.2.0/crs_1/bin/
- [root@rac1 bin]# ./oifcfg iflist
- eth0 192.168.2.0
- eth1 192.168.123.0
- [root@rac1 bin]# ./oifcfg getif
- eth0 192.168.2.0 global public
- eth1 192.168.123.0 global cluster_interconnect
- [root@rac1 bin]# su - oracle
- [oracle@rac1 ~]$ crs_stat -t -v
- Name Type R/RA F/FT Target State Host
- ----------------------------------------------------------------------
- ora.rac.db application 0/0 0/1 ONLINE ONLINE rac2
- ora....c1.inst application 0/5 0/0 ONLINE ONLINE rac1
- ora....c2.inst application 0/5 0/0 ONLINE ONLINE rac2
- ora....SM1.asm application 0/5 0/0 ONLINE ONLINE rac1
- ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE rac1
- ora.rac1.gsd application 0/5 0/0 ONLINE ONLINE rac1
- ora.rac1.ons application 0/3 0/0 ONLINE ONLINE rac1
- ora.rac1.vip application 0/0 0/0 ONLINE ONLINE rac1
- ora....SM2.asm application 0/5 0/0 ONLINE ONLINE rac2
- ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE rac2
- ora.rac2.gsd application 0/5 0/0 ONLINE ONLINE rac2
- ora.rac2.ons application 0/3 0/0 ONLINE ONLINE rac2
- ora.rac2.vip application 0/0 0/0 ONLINE ONLINE rac2
6:测试下,发现正常!
- [oracle@rhel6 admin]$ tail -17 tnsnames.ora
- RAC =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.141)(PORT = 1521))
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.142)(PORT = 1521))
- )
- (LOAD_BALANCE=YES)
- (FAILOVER=YES)
- (CONNECT_DATA =
- (SERVICE_NAME = rac.yang.com)
- (FAILOVER_MODE =
- (TYPE = SELECT)
- (METHOD = BASIC)
- (RETRIES = 180)
- (DELAY = 5))
- )
- )
- [oracle@rhel6 admin]$ sqlplus sys/123456@rac as sysdba
- SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 26 20:28:02 2012
- Copyright (c) 1982, 2005, Oracle. All rights reserved.
- Connected to:
- Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
- With the Partitioning, Real Application Clusters, OLAP, Data Mining
- and Real Application Testing options
- SQL> select instance_name from v$instance;
- INSTANCE_NAME
- ----------------
- rac1
备注:这里rac未使用网格控制器管理,后期可以研究下,修改完IP后,如何向网格控制器重新注册!数据库版本是10.2.0.5,稍后也将测试下11g的rac,另外修改前还是备份下OCR比较保险点,有闲功夫的话,数据库也备份一次吧!
本文转自斩月博客51CTO博客,原文链接http://blog.51cto.com/ylw6006/818612如需转载请自行联系原作者
ylw6006