暂无图片
暂无图片
13
暂无图片
暂无图片
暂无图片

Oracle 19c RAC更换IP实战,运维必看!

原创 szrsu 2025-04-08
1296

Oracle RAC中的IP主要涉及的有:Public IP、VIP、SCAN VIP、Private IP这几种。一般这类更改IP地址需求主要场景有:如机房搬迁网络变更、数据库迁移、 系统层面双网卡绑定等,来看一下19c rac环境如何进行更改Public IP、VIP、SCAN VIP这三类IP。

实施环境

节点名 主机IP 系统版本 数据库版本
rac19c01 10.10.10.40 CentOS7.9 x64 19.25
rac19c02 10.10.10.42 CentOS7.9 x64 19.25

查看集群状态

–查看当前环境的集群状态

[root@rac19c01:~]# su - grid
[grid@rac19c01:~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       rac19c01                 STABLE
               ONLINE  ONLINE       rac19c02                 STABLE
ora.chad
               ONLINE  ONLINE       rac19c01                 STABLE
               ONLINE  ONLINE       rac19c02                 STABLE
ora.net1.network
               ONLINE  ONLINE       rac19c01                 STABLE
               ONLINE  ONLINE       rac19c02                 STABLE
ora.ons
               ONLINE  ONLINE       rac19c01                 STABLE
               ONLINE  ONLINE       rac19c02                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       rac19c01                 STABLE
      2        ONLINE  ONLINE       rac19c02                 STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac19c01                 STABLE
      2        ONLINE  ONLINE       rac19c02                 STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       rac19c02                 STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac19c01                 STABLE
      2        ONLINE  ONLINE       rac19c02                 STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       rac19c01                 Started,STABLE
      2        ONLINE  ONLINE       rac19c02                 Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       rac19c01                 STABLE
      2        ONLINE  ONLINE       rac19c02                 STABLE
ora.cvu
      1        ONLINE  ONLINE       rac19c02                 STABLE
ora.qosmserver
      1        ONLINE  ONLINE       rac19c02                 STABLE
ora.rac19c.db
      1        ONLINE  ONLINE       rac19c01                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /db,STABLE
      2        ONLINE  ONLINE       rac19c02                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /db,STABLE
ora.rac19c01.vip
      1        ONLINE  ONLINE       rac19c01                 STABLE
ora.rac19c02.vip
      1        ONLINE  ONLINE       rac19c02                 STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       rac19c02                 STABLE
--------------------------------------------------------------------------------

停止集群

–禁止所有节点自启动并关闭两边节点数据库

# su - oracle
$ srvctl config database
rac19c
$ srvctl disable database -d rac19c
$ srvctl stop database -d rac19c

--禁止所有节点自启动并关闭两边节点监听
# su - grid
$ srvctl disable listener
$ srvctl stop listener

--禁止所有节点自启动并停止VIP
[grid@rac19c01:~]$ srvctl stop vip -n rac19c01
[grid@rac19c01:~]$ srvctl stop vip -n rac19c02
[root@rac19c01:~]# /u01/app/19.3.0/grid/bin/srvctl disable vip -i rac19c01-vip
[root@rac19c01:~]# /u01/app/19.3.0/grid/bin/srvctl disable vip -i rac19c02-vip

--禁止所有节点自启动并停止SCAN和SCAN_LISTENER
[root@rac19c01:~]# su - grid
[grid@rac19c01:~]$ srvctl disable scan_listener
[grid@rac19c01:~]$ srvctl stop scan_listener
[root@rac19c01:~]# /u01/app/19.3.0/grid/bin/srvctl disable scan
[root@rac19c01:~]# /u01/app/19.3.0/grid/bin/srvctl stop scan


--停止crs,所有节点使用root用户分别执行:
# /u01/app/19.3.0/grid/bin/crsctl stop crs -f

修改hosts文件

ip地址变更信息:

节点 原IP地址 新IP地址
rac19c01 10.10.10.40 10.10.10.140
rac19c02 10.10.10.42 10.10.10.142
rac19c01-vip 10.10.10.41 10.10.10.141
rac19c02-vip 10.10.10.43 10.10.10.143
rac19c-scan 10.10.10.44 10.10.10.144
--修改前备份hosts文件
cp /etc/hosts /etc/hosts`date "+%F"`.bak

--原hosts:
# cat /etc/hosts

## RAC1 Public IP
10.10.10.40 rac19c01
## RAC1 Virtual IP
10.10.10.41 rac19c01-vip
## RAC1 Private IP
10.10.20.40 rac19c01-priv
10.10.20.41 rac19c01-priv1

## RAC2 Public IP
10.10.10.42 rac19c02
## RAC2 Virtual IP
10.10.10.43 rac19c02-vip
## RAC2 Private IP
10.10.20.42 rac19c02-priv
10.10.20.43 rac19c02-priv1

## SCAN IP
10.10.10.44 rac19c-scan


--修改后的hosts:
#########new-address##############
## RAC1 Public IP
10.10.10.140 rac19c01
## RAC1 Virtual IP
10.10.10.141 rac19c01-vip
## RAC1 Private IP
10.10.20.40 rac19c01-priv
10.10.20.41 rac19c01-priv1

## RAC2 Public IP
10.10.10.142 rac19c02
## RAC2 Virtual IP
10.10.10.143 rac19c02-vip
## RAC2 Private IP
10.10.20.42 rac19c02-priv
10.10.20.43 rac19c02-priv1

## SCAN IP
10.10.10.144 rac19c-scan

PS:注意两个节点都要修改!!!

修改两台机器的物理IP

修改如下:
10.10.10.40 --> 10.10.10.140
10.10.10.42 --> 10.10.10.142

# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
UUID=33207a1e-daed-4798-b60e-8d78742e6c5b
DEVICE=ens33
ONBOOT=yes
IPADDR=10.10.10.140
NETMASK=255.255.255.0
GATEWAY=10.10.10.2

--重启生效
# systemctl restart network &
# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
UUID=33207a1e-daed-4798-b60e-8d78742e6c5b
DEVICE=ens33
ONBOOT=yes
IPADDR=10.10.10.142
NETMASK=255.255.255.0
GATEWAY=10.10.10.2

--重启生效
# systemctl restart network &

启动集群

–分别在2个节点启动crs

# /u01/app/19.3.0/grid/bin/crsctl  start crs 

--查看集群状态
$ crsctl stat res -t

修改public ip

–查看public ip原配置信息

# /u01/app/19.3.0/grid/bin/oifcfg getif
ens33  10.10.10.0  global  public
ens34  10.10.20.0  global  cluster_interconnect,asm
ens35  10.10.20.0  global  cluster_interconnect,asm


###如果网段没有变,则这一步不需要执行(oifcfg delif 和 oifcfg setif),如网段变了,需要进行下面修改:
# /u01/app/19.3.0/grid/bin/oifcfg delif -global ens33
# /u01/app/19.3.0/grid/bin/oifcfg setif -global ens33/192.168.1.0:public

--核实RAC IP信息更改结果
# /u01/app/19.3.0/grid/bin/oifcfg getif
ens33  192.168.1.0  global  public
ens34  10.10.20.0  global  cluster_interconnect,asm
ens35  10.10.20.0  global  cluster_interconnect,asm

修改vip

–启动之后检查,VIP己经自动更换

# /u01/app/19.3.0/grid/bin/srvctl config vip -n rac19c01
VIP exists: network number 1, hosting node rac19c01
VIP Name: rac19c01-vip
VIP IPv4 Address: 10.10.10.141
VIP IPv6 Address: 
VIP is disabled.
VIP is individually enabled on nodes: 
VIP is individually disabled on nodes: 

# /u01/app/19.3.0/grid/bin/srvctl config vip -n rac19c02
VIP exists: network number 1, hosting node rac19c02
VIP Name: rac19c02-vip
VIP IPv4 Address: 10.10.10.143
VIP IPv6 Address: 
VIP is disabled.
VIP is individually enabled on nodes: 
VIP is individually disabled on nodes: 


# /u01/app/19.3.0/grid/bin/srvctl config nodeapps -a
Network 1 exists
Subnet IPv4: 10.10.10.0/255.255.255.0/ens33, static
Subnet IPv6: 
Ping Targets: 
Network is enabled
Network is individually enabled on nodes: 
Network is individually disabled on nodes: 
VIP exists: network number 1, hosting node rac19c01
VIP Name: rac19c01-vip
VIP IPv4 Address: 10.10.10.141
VIP IPv6 Address: 
VIP is disabled.
VIP is individually enabled on nodes: 
VIP is individually disabled on nodes: 
VIP exists: network number 1, hosting node rac19c02
VIP Name: rac19c02-vip
VIP IPv4 Address: 10.10.10.143
VIP IPv6 Address: 
VIP is disabled.
VIP is individually enabled on nodes: 
VIP is individually disabled on nodes: 

####如果是不同网段,需执行以下修改vip,不然后续修改不了scan ip:

# /u01/app/19.3.0/grid/bin/srvctl modify nodeapps -n rac19c01 -A 192.168.1.133/255.255.255.0/ens33
# /u01/app/19.3.0/grid/bin/srvctl modify nodeapps -n rac19c02 -A 192.168.1.134/255.255.255.0/ens33

修改scan ip

--查看scan配置
# /u01/app/19.3.0/grid/bin/srvctl config scan 
SCAN name: rac19c-scan, Network: 1
Subnet IPv4: 10.10.10.0/255.255.255.0/ens33, static
Subnet IPv6: 
SCAN 1 IPv4 VIP: 10.10.10.44
SCAN VIP is disabled.
##SCAN没有更换,还是原来的 10.10.10.44

--查看scan监听状态
# /u01/app/19.3.0/grid/bin/srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is disabled
SCAN listener LISTENER_SCAN1 is not running

--如果未关闭,则需要关闭:
# /u01/app/19.3.0/grid/bin/srvctl stop scan_listener
# /u01/app/19.3.0/grid/bin/srvctl stop scan


--更改scan配置
# /u01/app/19.3.0/grid/bin/srvctl modify scan -n rac19c-scan
# /u01/app/19.3.0/grid/bin/srvctl config scan
SCAN name: rac19c-scan, Network: 1
Subnet IPv4: 10.10.10.0/255.255.255.0/ens33, static
Subnet IPv6: 
SCAN 1 IPv4 VIP: 10.10.10.144
SCAN VIP is disabled.

启动监听和服务

--开启自启动
# /u01/app/19.3.0/grid/bin/srvctl enable listener
# /u01/app/19.3.0/grid/bin/srvctl enable vip -i rac19c01-vip
# /u01/app/19.3.0/grid/bin/srvctl enable vip -i rac19c02-vip
# /u01/app/19.3.0/grid/bin/srvctl enable scan_listener
# /u01/app/19.3.0/grid/bin/srvctl enable scan
# /u01/app/19.3.0/grid/bin/srvctl enable database -d rac19c

--启动监听
# /u01/app/19.3.0/grid/bin/srvctl start listener
# /u01/app/19.3.0/grid/bin/srvctl status listener

# /u01/app/19.3.0/grid/bin/srvctl start vip -n rac19c01
# /u01/app/19.3.0/grid/bin/srvctl start vip -n rac19c02

# /u01/app/19.3.0/grid/bin/srvctl start scan
# /u01/app/19.3.0/grid/bin/srvctl start scan_listener
# /u01/app/19.3.0/grid/bin/srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node rac19c02

–上面的监听跑在节点2上,如果想让它跑在节点1,执行如下命令:

# /u01/app/19.3.0/grid/bin/srvctl relocate scan -i 1  -n rac19c01
# /u01/app/19.3.0/grid/bin/srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node rac19c01

启动数据库

# su - oracle
$ srvctl start database -d rac19c
$ sqlplus / as sysdba
SQL> select open_mode from gv$database;

OPEN_MODE
--------------------
READ WRITE
READ WRITE

查看集群状态

$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       rac19c01                 STABLE
               ONLINE  ONLINE       rac19c02                 STABLE
ora.chad
               ONLINE  ONLINE       rac19c01                 STABLE
               ONLINE  ONLINE       rac19c02                 STABLE
ora.net1.network
               ONLINE  ONLINE       rac19c01                 STABLE
               ONLINE  ONLINE       rac19c02                 STABLE
ora.ons
               ONLINE  ONLINE       rac19c01                 STABLE
               ONLINE  ONLINE       rac19c02                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       rac19c01                 STABLE
      2        ONLINE  ONLINE       rac19c02                 STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac19c01                 STABLE
      2        ONLINE  ONLINE       rac19c02                 STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       rac19c01                 STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       rac19c01                 STABLE
      2        ONLINE  ONLINE       rac19c02                 STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       rac19c01                 Started,STABLE
      2        ONLINE  ONLINE       rac19c02                 Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       rac19c01                 STABLE
      2        ONLINE  ONLINE       rac19c02                 STABLE
ora.cvu
      1        ONLINE  ONLINE       rac19c01                 STABLE
ora.qosmserver
      1        ONLINE  ONLINE       rac19c01                 STABLE
ora.rac19c.db
      1        ONLINE  ONLINE       rac19c01                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /db,STABLE
      2        ONLINE  ONLINE       rac19c02                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /db,STABLE
ora.rac19c01.vip
      1        ONLINE  ONLINE       rac19c01                 STABLE
ora.rac19c02.vip
      1        ONLINE  ONLINE       rac19c02                 STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       rac19c01                 STABLE
--------------------------------------------------------------------------------

检查local_listener

–去两个数据库实例里检查local_listener,我这里检查结果是正确的,写的都是新的VIP,如果不正确修改一下:

SQL> show parameter listener

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
forward_listener		     string
listener_networks		     string
local_listener			     string	  (ADDRESS=(PROTOCOL=TCP)(HOST=
						 10.10.10.141)(PORT=1521))
remote_listener 		     string	  rac19c-scan:1521



SQL> show parameter listener

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
forward_listener		     string
listener_networks		     string
local_listener			     string	  (ADDRESS=(PROTOCOL=TCP)(HOST=
						 10.10.10.143)(PORT=1521))
remote_listener 		     string	  rac19c-scan:1521

可以看到实例中local_listener参数已自动修改
image.png

连接测试

–检查无误后,找主机连接一下新的VIP、SCAN,分别进行测试,没问题,那么IP修改成功。

sqlplus system/oracleora@10.10.10.141/rac19c
sqlplus system/oracleora@10.10.10.143/rac19c
sqlplus system/oracleora@10.10.10.144/rac19c
最后修改时间:2025-04-10 22:44:36
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论