RAC 修改IP 这个操作本身也只有几步操作,但是它涉及到OCR所以要格外小心。一般来说,如果不是必须要修改的话,尽量不要去修改OCR 的东西。稳定第一。

在做之前,要手动的OCR 进行一个备份,这样即使修改失败,也能还原回来。 OCR的备份,参考Blog

Oracle 10g RAC OCR VotingDisk 的备份与恢复

http://blog.csdn.net/tianlesoftware/archive/2010/04/09/5467273.aspx

另外Public/Private对应的的主机名不能更改,如果确实需要更改主机名,需要重新安装CRS

实验对IP 地址做如下修改:

Public IP 10.85.10.119/121-- >10.85.10.219/221

Privite IP 192.168.1.119/121-- >192.168.1.219/221

Virtual IP 10.85.10.122/123-- >10.85.10.222/223

实验平台: redhat 4.7 + ORACLE 10G + raw +ASM

一. 停止oracle相关的所有进程, 包括数据库, asm, node application, crs本身.

1.1 查看当前系统上crs运行的状态
[root@raw1 bin]# pwd

/u01/app/oracle/product/crs/bin

[root@raw1 bin]# ./crs_stat -t

NameTypeTargetStateHost

------------------------------------------------------------

ora.raw.dbapplicationOFFLINEOFFLINE

ora.raw.dmm.cs applicationOFFLINEOFFLINE

ora....aw2.srv applicationOFFLINEOFFLINE

ora....w1.inst applicationOFFLINEOFFLINE

ora....w2.inst applicationOFFLINEOFFLINE

ora....SM1.asm applicationOFFLINEOFFLINE

ora....W1.lsnr applicationOFFLINEOFFLINE

ora.raw1.gsdapplicationOFFLINEOFFLINE

ora.raw1.onsapplicationOFFLINEOFFLINE

ora.raw1.vipapplicationOFFLINEOFFLINE

ora....SM2.asm applicationOFFLINEOFFLINE

ora....W2.lsnr applicationOFFLINEOFFLINE

ora.raw2.gsdapplicationOFFLINEOFFLINE

ora.raw2.onsapplicationOFFLINEOFFLINE

ora.raw2.vipapplicationOFFLINEOFFLINE

1.2 关闭数据库
  [root@raw1 bin]# ./srvctl stop database -d raw
1.3 关闭asm实例

[root@raw1 bin]# ./srvctl stop asm -n raw1

[root@raw1 bin]# ./srvctl stop asm -n raw2
1.4
关闭其他应用程序

[root@raw1 bin]# ./srvctl stop nodeapps -n raw1

[root@raw1 bin]# ./srvctl stop nodeapps -n raw2

1.5 关闭crs后台进程, 在操作系统一级中止运行的crs后台进程, 必须在所有节点上运行.
[root@raw1 bin]# /etc/init.d/init.crs stop

Shutting down Oracle Cluster Ready Services (CRS):

Stopping resources.

Successfully stopped CRS resources

Stopping CSSD.

Shutting down CSS daemon.

Shutdown request successfully issued.

Shutdown has begun. The daemons should exit soon.


[root@raw2 ~]# /etc/init.d/init.crs stop

Shutting down Oracle Cluster Ready Services (CRS):

Stopping resources.

Successfully stopped CRS resources

Stopping CSSD.

Shutting down CSS daemon.

Shutdown request successfully issued.

Shutdown has begun. The daemons should exit soon.

二 修改操作系统的ip设置

2.1 修改 /etc/hosts 文件。 保持2个节点的一致

[root@raw1 bin]# vi /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 localhost

10.85.10.219 raw1

10.85.10.221 raw2

192.168.1.219 raw1-priv

192.168.1.221 raw2-priv

10.85.10.222 raw1-vip

10.85.10.223 raw2-vip

2.2 在两个节点上分别修改eth0和eth1地址:

[root@raw1 etc]# more /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=10.85.10.219

NETMASK=255.255.255.0

ONBOOT=yes

GATEWAY=10.85.10.253

[root@raw2 ~]# more /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=10.85.10.221

NETMASK=255.255.255.0

ONBOOT=yes

GATEWAY=10.85.10.253

[root@raw1 etc]# more /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTPROTO=static

IPADDR=192.168.1.219

NETMASK=255.255.255.0

ONBOOT=yes

GATEWAY=192.168.1.1

[root@raw2 ~]# more /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTPROTO=static

IPADDR=192.168.1.221

NETMASK=255.255.255.0

ONBOOT=yes

GATEWAY=192.168.1.1

2.3 在两个节点上分别重启网络服务,是修改的IP生效。

[root@raw1 ~]# service network restart

[root@raw2 ~]# service network restart

三. 启动crs, 设置oracle中ip地址相关的设置.
  3.1 在两个节点启动crs, 并关闭随crs启动的应用程序
[root@raw1 ~]# /etc/init.d/init.crs start

Startup will be queued to init within 90 seconds.

[root@raw2 ~]#/etc/init.d/init.crs start

Startup will be queued to init within 90 seconds.


由于oracle所有应用设置为自动启动, 所以在crs启动时会试图启动所有的服务, 但是在对oracle相关的ip地址进行设置时需要crs处于运行状态. 但是数据库, asm和node application处于停止状态, 在一个节点执行以下命令:
  [root@raw1 bin]# ./srvctl stop database -d raw
[root@raw1 bin]# ./srvctl stop asm -n raw1

[root@raw1 bin]# ./srvctl stop asm -n raw2
[root@raw1 bin]# ./srvctl stop nodeapps -n raw1

[root@raw1 bin]# ./srvctl stop nodeapps -n raw2

[root@raw1 bin]# ./crs_stat -t

NameTypeTargetStateHost

------------------------------------------------------------

ora.raw.dbapplicationOFFLINEOFFLINE

ora.raw.dmm.cs applicationOFFLINEOFFLINE

ora....aw2.srv applicationOFFLINEOFFLINE

ora....w1.inst applicationOFFLINEOFFLINE

ora....w2.inst applicationOFFLINEOFFLINE

ora....SM1.asm applicationOFFLINEOFFLINE

ora....W1.lsnr applicationOFFLINEOFFLINE

ora.raw1.gsdapplicationOFFLINEOFFLINE

ora.raw1.onsapplicationOFFLINEOFFLINE

ora.raw1.vipapplicationOFFLINEOFFLINE

ora....SM2.asm applicationOFFLINEOFFLINE

ora....W2.lsnr applicationOFFLINEOFFLINE

ora.raw2.gsdapplicationOFFLINEOFFLINE

ora.raw2.onsapplicationOFFLINEOFFLINE

ora.raw2.vipapplicationOFFLINEOFFLINE

3.2 使用oifcfg修改网卡设置, oifconfig可以用来设置和查看网卡使用的方式.

注: 如果修改的网段相同,可以不做这一步。

-- 查看当前配置:

[root@raw1 bin]# ./oifcfg getif -global

eth010.85.10.0globalpublic

eth1192.168.1.0globalcluster_interconnect


--
删除当前配置

[root@raw1 bin]# ./oifcfg delif -global eth0

[root@raw1 bin]# ./oifcfg delif -global eth1

[root@raw1 bin]# ./oifcfg getif

-- 重新添加

[root@raw1 bin]# ./oifcfg setif -global eth0/10.85.10.0:public

[root@raw1 bin]# ./oifcfg setif -global eth1/192.168.1.0:cluster_interconnect

[root@raw1 bin]#./oifcfg getif

eth010.85.10.0globalpublic

eth1192.168.1.0globalcluster_interconnect

[root@racnode2 bin]# ./oifcfg iflist

eth0192.168.86.0

eth1192.168.0.0

eth2192.168.200.0

eth3192.168.200.0

eth4192.168.200.0

eth5192.168.200.0

注意:这里IP 地址最一个为0. 代表的是一个网段。修改的时候要切记。否在在启动OCR 会报如下错误:

[ CRSOCR][4054413904] OCR context init failure. Error: PROC-44: 网络地址和网络接口操作中出错网络地址和网络接口操作错误 [7]

3.3 修改VIP

[root@raw1 bin]# ./srvctl modify nodeapps -n raw1 -A 10.85.10.222/255.255.255.0/eth0

[root@raw1 bin]# ./srvctl modify nodeapps -n raw2 -A 10.85.10.223/255.255.255.0/eth0

3.4 设置listener.ora和tnsnames.ora, 检查这些文件中是否有指定原来ip的地方, 修改为更改后的ip地址。

[root@raw1 bin]# vi/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

# listener.ora.raw1 Network Configuration File:

/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora.raw1

# Generated by Oracle configuration tools.

LISTENER_RAW1 =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = raw1-vip)(PORT = 1521)(IP = FIRST))

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.85.10.219)(PORT = 1521)(IP = FIRST))

)

)

注意:如果你使用了ocfs,修改ocfs配置文件(/etc/ocfs/cluster.conf),验证修改后是否可用。

3.5 启动node applications, asm, 数据库

[root@raw1 bin]# ./srvctl start nodeapps -n raw1

[root@raw1 bin]# ./srvctl start nodeapps -n raw2

[root@raw1 bin]# ./srvctl start asm -n raw1

[root@raw1 bin]# ./srvctl start asm -n raw2

[root@raw1 bin]# ./srvctl start instance -d raw -i raw1

[root@raw1 bin]# ./srvctl start instance -d raw -i raw2

[root@raw1 bin]# ./crs_stat -t

NameTypeTargetStateHost

------------------------------------------------------------

ora.raw.dbapplicationONLINEONLINEraw2

ora.raw.dmm.cs applicationONLINEONLINEraw2

ora....aw2.srv applicationONLINEONLINEraw2

ora....w1.inst applicationONLINEONLINEraw1

ora....w2.inst applicationONLINEONLINEraw2

ora....SM1.asm applicationONLINEONLINEraw1

ora....W1.lsnr applicationONLINEONLINEraw1

ora.raw1.gsdapplicationONLINEONLINEraw1

ora.raw1.onsapplicationONLINEONLINEraw1

ora.raw1.vipapplicationONLINEONLINEraw1

ora....SM2.asm applicationONLINEONLINEraw2

ora....W2.lsnr applicationONLINEONLINEraw2

ora.raw2.gsdapplicationONLINEONLINEraw2

ora.raw2.onsapplicationONLINEONLINEraw2

ora.raw2.vipapplicationONLINEONLINEraw2

若启动出现问题,参考我的blog:

Oracle RAC 启动与关闭

http://blog.csdn.net/tianlesoftware/archive/2010/03/05/5349003.aspx

3.6 确认IP, 修改完成。
[root@raw1 bin]# ifconfig

eth0Link encap:EthernetHWaddr 00:0C:29:55:28:FD

inet addr:10.85.10.219Bcast:10.85.10.255Mask:255.255.255.0

... ...

eth0:1Link encap:EthernetHWaddr 00:0C:29:55:28:FD

inet addr:10.85.10.222Bcast:10.85.10.255Mask:255.255.255.0

... ...

eth1Link encap:EthernetHWaddr 00:0C:29:55:28:07

inet addr:192.168.1.219Bcast:192.168.1.255Mask:255.255.255.0

... ...

loLink encap:Local Loopback

inet addr:127.0.0.1Mask:255.0.0.0

[root@raw2 ~]# ifconfig

eth0Link encap:EthernetHWaddr 00:0C:29:2E:28:EE

inet addr:10.85.10.221Bcast:10.85.10.255Mask:255.255.255.0

... ...

eth0:1Link encap:EthernetHWaddr 00:0C:29:2E:28:EE

inet addr:10.85.10.223Bcast:10.85.10.255Mask:255.255.255.0

... ...

eth1Link encap:EthernetHWaddr 00:0C:29:2E:28:F8

inet addr:192.168.1.221Bcast:192.168.1.255Mask:255.255.255.0

... ...

loLink encap:Local Loopback

inet addr:127.0.0.1Mask:255.0.0.0

... ...