暂无图片
暂无图片
8
暂无图片
暂无图片
暂无图片

Oracle RAC 修改 VIP 和 SCANIP

643

大家好,我是 JiekeXu,江湖人称“强哥”,青学会 MOP 技术社区主席,荣获 Oracle ACE Pro 称号,墨天轮 MVP,墨天轮年度“墨力之星”,拥有 Oracle OCP/OCM 认证,MySQL 5.7/8.0 OCP 认证以及 PCA、PCTA、OBCA、OGCA、KCA、KCP、KCSM 等众多国产数据库认证证书,今天和大家一起看看 Oracle RAC 修改 VIP 和 SCANIP!欢迎关注我的微信公众号“JiekeXu DBA之路”,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送,谢谢!

前 言

有的时候,因为 Oracle RAC 迁移或者新版本升级,Oracle RAC 需要修改 VIP 和 SCANIP 来保证迁移前后应用 JDBC 连接串不变,对于 11gR2 及以上的版本不需要停机,操作起来也比较简单。本文适用于Oracle 11gR2 及以上版本。

一般而言,只有 10.2.0.3 之前的版本需要完全的停机。从 10.2.0.3 开始,ASM 和数据库实例对 VIP 资源的依赖关系已经被删除,所以修改 VIP 不需要停止 ASM 和数据库实例,只有当修改 VIP 时产生的客户端连接会受影响。如果修改只涉及到特定的节点,那么只有连接到对应节点的客户端链接在修改时会受影响。

环境说明

Linux7 修改前 修改后 说明
VIP 192.168.221.162/163 192.168.221.185/186 同网段修改,网卡名不变,物理IP地址不变,端口不变
SCANIP 192.168.221.164/165/166 192.168.221.187 SCAN地址由三个改为一个,端口不变

查看当前 VIP 配置

对于版本 11gR2 及以上, 使用 Grid Infrastructure 的拥有者执行下面的命令:

jieke-19crac-r1:/home/grid(+ASM1)$ /u01/app/19.0.0/grid/bin/srvctl config nodeapps -a
Network 1 exists
Subnet IPv4: 192.168.221.0/255.255.255.0/eth0, 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 jieke-19crac-r1
VIP IPv4 Address: 192.168.221.162
VIP IPv6 Address: 
VIP is enabled.
VIP is individually enabled on nodes: 
VIP is individually disabled on nodes: 
VIP exists: network number 1, hosting node jieke-19crac-r2
VIP Name: jieke-19crac-r2-vip
VIP IPv4 Address: 192.168.221.163
VIP IPv6 Address: 
VIP is enabled.
VIP is individually enabled on nodes: 
VIP is individually disabled on nodes: 

验证 VIP 状态

crsctl status res -t – 以上命令应该显示 VIPs 状态为 ONLINE

ifconfig -a

(HP 平台请使用 netstat –in, Windows 平台请使用 ipconfig /all)

  • VIP 逻辑网卡对应公网网卡

停止资源

停止 nodeapps 资源 (如果有必要的话,停止存在依赖关系的 ASM 和数据库资源)

对于版本 11gR2, 使用 Grid Infrastructure 的拥有者执行下面的命令:

Grid(+ASM1)$ srvctl stop instance -d jiekexu -n jieke-19crac-r1 ##(可以忽略) Grid(+ASM1)$ srvctl stop listener Grid(+ASM1)$ srvctl stop vip -n jieke-19crac-r1 -f Grid(+ASM1)$ srvctl stop vip -n jieke-19crac-r2 -f Grid(+ASM1)$ crsctl status res -t

此时 VIP1 和 LISTENER1 已经 Offline,并且 VIP1 不再绑定到公网网卡

ifconfig -a

修改 VIP 和相关属性

确定新的 VIP 地址/子网/网络掩码或者 VIP 对应的主机名,在 OS 层面修改网络配置信息,确认新的 VIP 地址应经注册到DNS 或者确认 /etc/hosts 文件(Unix/Linux 平台),\WINDOWS\System32\drivers\etc\hosts 文件(Windows平台)已经被修改。如果网卡信息被修改,确认在修改之前新的网卡在服务器上已经可用。

如下,VIP 替换为 221.185/186,SCANIP 替换为 187

[root@jieke-19crac-r1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.221.160 jieke-19crac-r1 192.168.221.161 jieke-19crac-r2 192.168.10.160 jieke-19crac-r1-priv 192.168.10.161 jieke-19crac-r2-priv #192.168.221.162 jieke-19crac-r1-vip 192.168.221.185 jieke-19crac-r1-vip #192.168.221.163 jieke-19crac-r2-vip 192.168.221.186 jieke-19crac-r2-vip #192.168.221.164 jiekexu-scan #192.168.221.165 jiekexu-scan #192.168.221.166 jiekexu-scan 192.168.221.187 jiekexu-scan

使用 root 用户修改 VIP 资源

如果子网或网卡接口发生变化,请修改网络资源。

检查文档的语法是否正确,因为每个“srvctl modify network”命令选项可能不同。

srvctl modify network [-netnum network_number] [-subnet subnet/netmask [/if1[|if2|...]]]

通过发出 srvctl config network 命令获取 network_number

# srvctl modify nodeapps -n <node> -A <new_vip_address or new_vip_hostname>/<netmask>/<[if1[if2...]]> # 例如: # srvctl modify nodeapps -n <nodename>1 -A <nodename>1-nvip/255.255.255.0/<if_name>

从版本 11.2 开始,VIP 依赖于 network 资源(ora.net1.network),OCR 只记录 VIP 主机名或者 VIP 资源相关的 IP 地址。集群公网的属性(子网/网络掩码)通过网络资源记录。当 nodeapps 资源被修改后,network资源 (ora.net1.network)相关的属性也会随之被修改。

从 11.2.0.2 开始,如果只修改子网/网络掩码信息,网络资源可以通过以下的 srvctl modify network 命令直接修改。

使用 root 用户:

# srvctl modify network -k <network_number>] [-S <subnet>/<netmask>[/if1[|if2...]] 例如: # srvctl modify network -k 1 -S 110.XX.XX.0/255.255.255.0/<if_name>

注意:在 12.1.0.1 的版本上由于 Bug 16608577 - CANNOT ADD SECOND PUBLIC INTERFACE IN ORACLE 12.1 ,srvctl

modify network 的命令会失败并提示:

# srvctl modify network -k 1 -S 110.XX.XX.0/255.255.255.0/<if_name> PRCT-1305 : The specified interface name "<if_name>2" does not match the existing network interface name " <if_name>1"

需要通过以下workaround来解决:

# srvctl modify network -k 1 -S 110.XX.XX.0/255.255.255.0 # srvctl modify network -k 1 -S 110.XX.XX.0/255.255.255.0/<if_name>2

修改 VIP 地址,使用 root 用户仅在节点 1 执行

# /u01/app/19.0.0/grid/bin/srvctl modify nodeapps -n jieke-19crac-r1 -A 192.168.221.185/255.255.255.0/eth0 # /u01/app/19.0.0/grid/bin/srvctl config nodeapps -a Network 1 exists Subnet IPv4: 192.168.221.0/255.255.255.0/eth0, 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 jieke-19crac-r1 VIP IPv4 Address: 192.168.221.185 VIP IPv6 Address: VIP is enabled. VIP is individually enabled on nodes: VIP is individually disabled on nodes: VIP exists: network number 1, hosting node jieke-19crac-r2 VIP Name: jieke-19crac-r2-vip VIP IPv4 Address: 192.168.221.186 VIP IPv6 Address: VIP is enabled. VIP is individually enabled on nodes: VIP is individually disabled on nodes:

启动 VIP 资源

# /u01/app/19.0.0/grid/bin/srvctl start vip -n jieke-19crac-r1 # /u01/app/19.0.0/grid/bin/srvctl start vip -n jieke-19crac-r2

查看 VIP 资源状态

/u01/app/19.0.0/grid/bin/srvctl status vip -n jieke-19crac-r1 /u01/app/19.0.0/grid/bin/srvctl status vip -n jieke-19crac-r2

如果监听没有,可使用如下命令启动查看

/u01/app/19.0.0/grid/bin/srvctl start listener -n jieke-19crac-r1 /u01/app/19.0.0/grid/bin/srvctl start listener -n jieke-19crac-r2 /u01/app/19.0.0/grid/bin/srvctl status listener -n jieke-19crac-r1 /u01/app/19.0.0/grid/bin/srvctl status listener -n jieke-19crac-r2 /u01/app/19.0.0/grid/bin/crsctl status res -t

修改 SCAN IP

/u01/app/19.0.0/grid/bin/srvctl modify scan -n jiekexu-scan /u01/app/19.0.0/grid/bin/srvctl modify scan_listener -u /u01/app/19.0.0/grid/bin/srvctl config scan /u01/app/19.0.0/grid/bin/srvctl config scan_listener /u01/app/19.0.0/grid/bin/srvctl start scan /u01/app/19.0.0/grid/bin/srvctl start scan_listener /u01/app/19.0.0/grid/bin/crsctl status res -t

检查监听及 SCAN 监听状态,如果没有注册,检查 local_listener 是否正确修改,如果还是原来的 IP,需要手动修改参数。

注意:ASM 和 DB 实例的 LOCAL_LISTENER参数,是 GI 自动设置的。VIP 的改变,LOCAL_LISTENER 会自动识别,并生效。但是由于 Bug 22824602,一些特定情况下。LOCAL_LISTENER 参数没有反应 VIP 的改变。官方给出的解决方法是重启受影响的节点的集群软件。

su - grid lsnrctl status listener_scan1 lsnrctl status sqlplus / as sysasm show parameter local_listener alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.221.185)(PORT=11521))' sid='+ASM1'; alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.221.186)(PORT=11521))' sid='+ASM2'; alter system register; su - oracle sqlplus / as sysdba show parameter local_listener alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.221.185)(PORT=11521))' sid='jiekedb1'; alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.221.186)(PORT=11521))' sid='jiekedb2'; alter system register;

修改主备库 TNS

su - oracle vim $ORACLE_HOME/network/admin/tnsnames.ora

检查主备库参数

show parameter arch show parameter fal_client show parameter fal_server show parameter log_archive show parameter standby_file_management

703.png

全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

❤️ 欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————

facebook_pro_light_1920 × 1080  副本.png

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

评论