如下是更改10g RAC 公网IP以及VIP的一个简单步骤:
1. Stop all Crs resources
[oracle@hsdb1 ~]$ crs_stop -all
Attempting to stop `ora.hsdb1.gsd` on member `hsdb1`
Attempting to stop `ora.hsdb1.ons` on member `hsdb1`
Attempting to stop `ora.hskj.db` on member `hsdb1`
Attempting to stop `ora.hsdb2.gsd` on member `hsdb2`
Attempting to stop `ora.hskj.hskj_db.hskj2.srv` on member `hsdb2`
Stop of `ora.hsdb2.gsd` on member `hsdb2` succeeded.
Attempting to stop `ora.hsdb2.ons` on member `hsdb2`
Attempting to stop `ora.hskj.hskj_db.cs` on member `hsdb2`
Stop of `ora.hsdb1.gsd` on member `hsdb1` succeeded.
Stop of `ora.hskj.hskj_db.hskj2.srv` on member `hsdb2` succeeded.
Stop of `ora.hsdb1.ons` on member `hsdb1` succeeded.
Stop of `ora.hsdb2.ons` on member `hsdb2` succeeded.
Stop of `ora.hskj.hskj_db.cs` on member `hsdb2` succeeded.
Stop of `ora.hskj.db` on member `hsdb1` succeeded.
`ora.hskj.hskj1.inst` is already OFFLINE.
`ora.hskj.hskj2.inst` is already OFFLINE.
Attempting to stop `ora.hsdb1.ASM1.asm` on member `hsdb1`
Target set to OFFLINE for `ora.hsdb1.LISTENER_HSDB1.lsnr`
Target set to OFFLINE for `ora.hsdb2.LISTENER_HSDB2.lsnr`
Attempting to stop `ora.hsdb2.ASM2.asm` on member `hsdb2`
Attempting to stop `ora.hsdb1.vip` on member `hsdb1`
Attempting to stop `ora.hsdb2.vip` on member `hsdb2`
Stop of `ora.hsdb1.vip` on member `hsdb1` succeeded.
Stop of `ora.hsdb2.vip` on member `hsdb2` succeeded.
Stop of `ora.hsdb2.ASM2.asm` on member `hsdb2` succeeded.
Stop of `ora.hsdb1.ASM1.asm` on member `hsdb1` succeeded.
CRS-0216: Could not stop resource 'ora.hskj.hskj1.inst'.
CRS-0216: Could not stop resource 'ora.hskj.hskj2.inst'.
当然我这里其实并不是标准的操作步骤,根据官方文档,其实应该如下操作:
srvctl stop asm -n asm1/asm2
srvctl stop instance -d hsdb -i hsdb1/hsdb2
srvctl stop nodeapps -n hsdb1/hsdb2
2. Modify /etc/hosts
这里修改以后为如下:
[oracle@hsdb1 admin]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
#### for oracle rac
192.168.5.220 hsdb1
192.168.5.222 hsdb1-vip
10.10.10.1 hsdb1-priv
192.168.5.221 hsdb2
192.168.5.223 hsdb2-vip
10.10.10.2 hsdb2-priv
(注:RAC cluster中所有节点都需要进行修改。)
3. Change $ORACLE_HOME/network/admin/listener.ora
我这里修改以后为如下:
[oracle@hsdb1 admin]$ cat listener.ora
# listener.ora.hsdb1 Network Configuration File: /oracle/product/10.2/db/network/admin/listener.ora.hsdb1
# Generated by Oracle configuration tools.
SID_LIST_LISTENER_HSDB1 =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/10.2/db)
(PROGRAM = extproc)
)
)
LISTENER_HSDB1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.222)(PORT = 1521)(IP = FIRST))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.220)(PORT = 1521)(IP = FIRST))
)
)
#TRACE_LEVEL_LISTENER = 16
#TRACE_FILE_LISTENER = /oracle/product/10.2/db/network/log/trace.log
#TRACE_DIRECTORY_LISTENER = /oracle/product/10.2/db/network/log
#TRACE_TIMESTAMP_LISTENER = ON
#TRACE_FILELEN_LISTENER = 204800
#TRACE_FILENO_LISTENER = 10
#----ADDED BY TNSLSNR 18-DEC-2011 15:37:21---
SAVE_CONFIG_ON_STOP_LISTENER_HSDB1 = ON
INBOUND_CONNECT_TIMEOUT_LISTENER_HSDB1 = 0
#--------------------------------------------
(注:如果这里host你用的name,那么不必进行修改。)
4. Delete Public eth0 (在其中一个node操作即可)
[root@localhost bin]# ./oifcfg getif
eth0 192.168.1.0 global public
eth1 10.10.10.0 global cluster_interconnect
[root@localhost bin]# ./oifcfg delif -global eth0
[root@localhost bin]# ./oifcfg getif
eth1 10.10.10.0 global cluster_interconnect
5. Add new public eth0
[root@localhost bin]# ./oifcfg setif -global eth0/192.168.5.0:public
[root@localhost bin]# ./oifcfg getif
eth0 192.168.5.0 global public <== 新的网段
eth1 10.10.10.0 global cluster_interconnect
(注:因为vip地址必须跟public ip处于同一网段,故公网IP网段更改以后,必须更改vip地址或网段。)
6. Change vip
++++++ Node 1 ++++++
[root@hsdb1 crs]# cd bin
[root@hsdb1 bin]# ./srvctl modify nodeapps -n hsdb1 -A 192.168.5.222/255.255.255.0/eth0
++++++ Node 2 ++++++
[root@hsdb2 bin]# ./srvctl modify nodeapps -n hsdb2 -A 192.168.5.223/255.255.255.0/eth0
7. Start cluster all resource
[oracle@hsdb1 admin]$ crs_start -all
Attempting to start `ora.hsdb1.ASM1.asm` on member `hsdb1`
Attempting to start `ora.hsdb2.vip` on member `hsdb2`
Attempting to start `ora.hsdb1.vip` on member `hsdb1`
Attempting to start `ora.hsdb2.ASM2.asm` on member `hsdb2`
Start of `ora.hsdb2.vip` on member `hsdb2` succeeded.
Attempting to start `ora.hsdb2.LISTENER_HSDB2.lsnr` on member `hsdb2`
Start of `ora.hsdb2.LISTENER_HSDB2.lsnr` on member `hsdb2` succeeded.
Start of `ora.hsdb1.ASM1.asm` on member `hsdb1` succeeded.
Start of `ora.hsdb2.ASM2.asm` on member `hsdb2` succeeded.
Attempting to start `ora.hskj.hskj1.inst` on member `hsdb1`
Attempting to start `ora.hskj.hskj2.inst` on member `hsdb2`
Start of `ora.hsdb1.vip` on member `hsdb1` failed.
Attempting to start `ora.hsdb1.vip` on member `hsdb2`
Start of `ora.hsdb1.vip` on member `hsdb2` succeeded.
hsdb1 : CRS-1018: Resource ora.hsdb1.vip (application) is already running on hsdb2
hsdb2 : CRS-1019: Resource ora.hsdb1.LISTENER_HSDB1.lsnr (application) cannot run on hsdb2
Start of `ora.hskj.hskj2.inst` on member `hsdb2` succeeded.
Start of `ora.hskj.hskj1.inst` on member `hsdb1` succeeded.
CRS-1002: Resource 'ora.hsdb1.ons' is already running on member 'hsdb1'
CRS-1002: Resource 'ora.hsdb2.ons' is already running on member 'hsdb2'
CRS-1002: Resource 'ora.hskj.db' is already running on member 'hsdb1'
Attempting to start `ora.hsdb1.gsd` on member `hsdb1`
Attempting to start `ora.hskj.hskj_db.cs` on member `hsdb2`
Attempting to start `ora.hsdb2.gsd` on member `hsdb2`
Attempting to start `ora.hskj.hskj_db.hskj1.srv` on member `hsdb1`
Attempting to start `ora.hskj.hskj_db.hskj2.srv` on member `hsdb2`
Start of `ora.hskj.hskj_db.cs` on member `hsdb2` succeeded.
Start of `ora.hskj.hskj_db.hskj2.srv` on member `hsdb2` succeeded.
Start of `ora.hsdb2.gsd` on member `hsdb2` succeeded.
Start of `ora.hsdb1.gsd` on member `hsdb1` succeeded.
Start of `ora.hskj.hskj_db.hskj1.srv` on member `hsdb1` succeeded.
CRS-0223: Resource 'ora.hsdb1.LISTENER_HSDB1.lsnr' has placement error.
CRS-0223: Resource 'ora.hsdb1.ons' has placement error.
CRS-0223: Resource 'ora.hsdb2.ons' has placement error.
CRS-0223: Resource 'ora.hskj.db' has placement error.
[oracle@hsdb1 admin]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....SM1.asm application ONLINE ONLINE hsdb1
ora....B1.lsnr application OFFLINE OFFLINE
ora.hsdb1.gsd application ONLINE ONLINE hsdb1
ora.hsdb1.ons application ONLINE ONLINE hsdb1
ora.hsdb1.vip application ONLINE ONLINE hsdb1
ora....SM2.asm application ONLINE ONLINE hsdb2
ora....B2.lsnr application ONLINE ONLINE hsdb2
ora.hsdb2.gsd application ONLINE ONLINE hsdb2
ora.hsdb2.ons application ONLINE ONLINE hsdb2
ora.hsdb2.vip application ONLINE ONLINE hsdb2
ora.hskj.db application ONLINE ONLINE hsdb1
ora....j1.inst application ONLINE ONLINE hsdb1
ora....j2.inst application ONLINE ONLINE hsdb2
ora....j_db.cs application ONLINE ONLINE hsdb2
ora....kj1.srv application ONLINE ONLINE hsdb1
ora....kj2.srv application ONLINE ONLINE hsdb2
[oracle@hsdb1 admin]$ crs_stat -p | grep lsnr
NAME=ora.hsdb1.LISTENER_HSDB1.lsnr
NAME=ora.hsdb2.LISTENER_HSDB2.lsnr
[oracle@hsdb1 admin]$ crs_start ora.hsdb1.LISTENER_HSDB1.lsnr
Attempting to start `ora.hsdb1.LISTENER_HSDB1.lsnr` on member `hsdb1`
Start of `ora.hsdb1.LISTENER_HSDB1.lsnr` on member `hsdb1` succeeded.
[oracle@hsdb1 admin]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....SM1.asm application ONLINE ONLINE hsdb1
ora....B1.lsnr application ONLINE ONLINE hsdb1
ora.hsdb1.gsd application ONLINE ONLINE hsdb1
ora.hsdb1.ons application ONLINE ONLINE hsdb1
ora.hsdb1.vip application ONLINE ONLINE hsdb1
ora....SM2.asm application ONLINE ONLINE hsdb2
ora....B2.lsnr application ONLINE ONLINE hsdb2
ora.hsdb2.gsd application ONLINE ONLINE hsdb2
ora.hsdb2.ons application ONLINE ONLINE hsdb2
ora.hsdb2.vip application ONLINE ONLINE hsdb2
ora.hskj.db application ONLINE ONLINE hsdb1
ora....j1.inst application ONLINE ONLINE hsdb1
ora....j2.inst application ONLINE ONLINE hsdb2
ora....j_db.cs application ONLINE ONLINE hsdb2
ora....kj1.srv application ONLINE ONLINE hsdb1
ora....kj2.srv application ONLINE ONLINE hsdb2
8. Change local_listener
++++++ Node 1 ++++++
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
local_listener string
(ADDRESS = (PROTOCOL = TCP)(HO
ST = 192.168.1.222)(PORT = 152
1))
remote_listener string
LISTENERS_HSKJ
SQL> alter system
2 set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.222)(PORT = 1521))'
3 scope = both
4 sid = 'hskj1';
System altered.
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
local_listener string
(ADDRESS = (PROTOCOL = TCP)(HO
ST = 192.168.5.222)(PORT = 152
1))
remote_listener string
LISTENERS_HSKJ
++++++ Node 2 ++++++
SQL> alter system
2 set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.223)(PORT = 1521))'
3 scope = both
4 sid = 'hskj2';
System altered.
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
instance_name string hskj2
如上是一个简约步骤,没有任何难度,网上有人说最后还需重新配置ssh等效性,
其实是不需要的,如下检测:
[oracle@hsdb1 ~]$ ssh hsdb2
Warning: Permanently added the RSA host key for IP address '192.168.5.221' to the list of known hosts.
Last login: Sat Feb 25 11:44:33 2012 from mail.atlantic.ro
[oracle@hsdb2 ~]$ ssh hsdb1
Warning: Permanently added the RSA host key for IP address '192.168.5.220' to the list of known hosts.
Last login: Sun Mar 4 17:12:51 2012 from 86.126.70.106
发表回复