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

Oracle 19C网络变更解决方案

IT那活儿 2025-04-21
327

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!


  
本文章适用于 Oracle 19c RAC 环境,变更操作涉及 Public 和 Private 网络相关的网络配置(IP 地址,网络号,网络接口名称)和 IP 网络协议版本。



Public 网络

Public 网络用于客户端访问数据库服务,包括 Public IP, Public VIP 和 SCAN IP。

注意:操作之前确保所有节点都处于运行状态。

1.1 IP 网络配置变更

场景一:

  • IP 地址和子网需要修改;
  • 服务器 & 集群 & 数据库实例不重启。

集群层修改接口配置:

# 如网络接口发生变更,先添加新接口,再删除原接口。
  oifcfg setif -global ens42/XXX.XXX.29.0:public
 oifcfg delif -global ens41/XXX.XXX.28.0
 
# 如网络接口无变化,先删除接口,再重新添加。
  oifcfg delif -global ens41/XXX.XXX.28.0
 oifcfg setif -global ens41/XXX.XXX.29.0:public

编辑 etc/hosts 文件,修改 Public IP,Public VIP 和 SCAN IP 为新地址,在所有节点执行:

# #############
 # #   IPv4   #
 # #############
 # PublicNetwork- (ens41)
XXX.XXX.29.71rhel79-19-a1
XXX.XXX.29.72rhel79-19-a2

 # PublicVirtualIP (VIPaddresses- (ens41:1)
XXX.XXX.29.81rhel79-19-a1-vip
XXX.XXX.29.82rhel79-19-a2-vip

 # SingleClientAccessName (SCAN- (ens41:2)
XXX.XXX.29.70 ORA19C-A-SCAN

停止监听和 VIP 资源:

srvctl stop listener -listener LISTENER -node rhel79-19-a1
 srvctl stop listener -listener LISTENER -node rhel79-19-a2
 srvctl stop vip -vip rhel79-19-a1-vip
 srvctl stop vip -vip rhel79-19-a2-vip

操作系统层修改接口 IP 地址和子网,在所有节点执行。

<略>

更新 network 资源,使用 root 用户执行:

srvctl modify network -subnet XXX.XXX.29.0/255.255.255.0

更新 VIP 资源,使用 root 用户执行:

srvctl modify vip -node rhel79-19-a1 -netnum 1 -address rhel79-19-a1-vip/255.255.255.0
 srvctl modify vip -node rhel79-19-a2 -netnum 1 -address rhel79-19-a2-vip/255.255.255.0

启动监听和 VIP 资源:

srvctl start vip -vip rhel79-19-a1-vip
 srvctl start vip -vip rhel79-19-a2-vip
 
 srvctl start listener -listener LISTENER -node rhel79-19-a1
 srvctl start listener -listener LISTENER -node rhel79-19-a2

更新 SCAN 资源:

srvctl stop scan_listener
 srvctl stop scan
 
 # by root.
 srvctl modify scan -scanname ORA19C-A-SCAN
 
 srvctl start scan
 srvctl start scan_listener

场景二:

  • 服务器迁移至新环境;
  • IP 地址和子网需要修改。

关闭并禁用 CRS 自启动:

crsctl stop crs
 crsctl disable crs

迁移服务器至新环境后,在操作系统层修改 IP 地址。

<略>

编辑 /etc/hosts 文件, 修改 Public IP,Public VIP 和 SCAN IP 为新地址,在所有节点执行:

# #############
 # #   IPv4   #
 # #############
 # PublicNetwork- (ens41)
XXX.XXX.26.71rhel79-19-a1
XXX.XXX.26.72rhel79-19-a2

 # PublicVirtualIP (VIPaddresses- (ens41:1)
XXX.XXX.26.81rhel79-19-a1-vip
XXX.XXX.26.82rhel79-19-a2-vip

 # SingleClientAccessName (SCAN- (ens41:2)
XXX.XXX.26.70 ORA19C-A-SCAN

启动一个节点 CRS:

crsctl start crs

集群层修改接口配置:

# 如网络接口发生变更,先添加新接口,再删除原接口。
 oifcfg setif -global ens42/XXX.XXX.22.0:public
 oifcfg delif -global ens41/XXX.XXX.29.0
 
# 如网络接口无变化,先删除接口,再重新添加。
 oifcfg delif -global ens41/XXX.XXX.29.0
 oifcfg setif -global ens41/XXX.XXX.22.0:public

更新 network 资源,使用 root 用户执行:

srvctl modify network -subnet XXX.XXX.22.0/255.255.255.0

更新 SCAN 资源,使用 root 用户执行:

srvctl stop scan_listener
 srvctl stop scan
 
 # by root
 srvctl modify scan -scanname ORA19C-A-SCAN
 
 srvctl start scan
 srvctl start scan_listener

关闭当前节点 CRS,重新启动集群:

crsctl stop crs
 crsctl start crs

1.2  IPv4 转换至 IPv4 & IPv6

编辑 /etc/hosts 文件,添加 IPv6 部分内容:

# #############
 # #   IPv4   #
 # #############
 # Public Network - (ens33)
 XXX.XXX.21.71 rhel79-19-a1
 XXX.XXX.21.72 rhel79-19-a2

 # Public Virtual IP (VIP) addresses - (ens33:1)
 XXX.XXX.21.81 rhel79-19-a1-vip
 XXX.XXX.21.82 rhel79-19-a2-vip

 # Single Client Access Name (SCAN)
 XXX.XXX.21.70 ORA19C-A-SCAN

 # #############
 # #   IPv6   #
 # #############
 # Public Network - (ens33)
 FD01::71 rhel79-19-a1
 FD01::72 rhel79-19-a2

 # Public Virtual IP (VIP) addresses - (ens33:1)
 FD01::81 rhel79-19-a1-vip
 FD01::82 rhel79-19-a2-vip

 # Single Client Access Name (SCAN)
 FD01::70 ORA19C-A-SCAN

添加 IPv6 子网,使用 root 用户执行:

srvctl modify network -subnet fd01::0/64

添加 IPv6 VIP,使用 root 用户执行:

srvctl modify vip -node rhel79-19-a1 -netnum 1 -address rhel79-19-a1-vip/64
 srvctl modify vip -node rhel79-19-a2 -netnum 1 -address rhel79-19-a2-vip/64

添加 IPv6 网络资源至 OCR,使用 grid 用户执行:

oifcfg setif -global ens33/fd01::0:public

添加 IPv6 地址至 SCAN VIP,使用 root 用户执行:

srvctl modify scan -scanname ORA19C-A-SCAN

将网络类型由 IPv4 转换至 IPv4 & IPv6,使用 root 用户执行:

srvctl modify network -netnum 1 -iptype both

1.3 IPv4 转换至 IPv6

首先执行 IPv4 转换至 IPv4 & IPv6 操作步骤 。

编辑 etc/hosts 文件,去除 IPv4 部分内容:

# #############
 # #   IPv6   #
 # #############
 # Public Network - (ens33)
 FD01::71 rhel79-19-a1
 FD01::72 rhel79-19-a2
 
 # Public Virtual IP (VIP) addresses - (ens33:1)
 FD01::81 rhel79-19-a1-vip
 FD01::82 rhel79-19-a2-vip
 
 # Single Client Access Name (SCAN)
 FD01::70 ORA19C-A-SCAN

将网络类型由 IPv4 & IPv6 转换至 IPv6,使用 root 用户执行:

srvctl modify network -iptype ipv6

修改 VIP,使用 root 用户执行:

srvctl modify vip -node rhel79-19-a1 -address rhel79-19-a1-vip/64 -netnum 1
 srvctl modify vip -node rhel79-19-a2 -address rhel79-19-a2-vip/64 -netnum 1

修改 SCAN,使用 root 用户执行:

srvctl modify scan -scanname ORA19C-A-SCAN

从 OCR 中删除 IPv4 网络资源,使用 grid 用户执行:

oifcfg delif -global ens33/XXX.XXX.21.0

Private 网络

Private 网络主要用于节点之间网络心跳,数据库缓存融合和 ASM 实例通信。

2.1 场景说明

  • 服务器迁移至新环境;
  • IP 地址 & 子网 & 网络接口需要修改。

关闭并禁用 CRS 自启动:

crsctl stop crs
 crsctl disable crs

迁移服务器至新环境,重新配置网络。

<略>

2.2 编辑 GPNP PROFILE

以 exclusive 模式启动其中一个节点 CRS:

crsctl start crs -excl -nocrs

编辑 GPNP Profile,根据需要修改 Sequence Number, IP 网络号和网络适配器接口名称。

编辑完成后,将 GPNP Profile 拷贝至其他节点覆盖原文件:

cd $ORACLE_HOME/gpnp/`hostname`/profiles/peer
cp -pprofile.xml profile.bak

 gpnptool unsign -p=profile.bak -o-

 gpnptool getpval -p=profile.bak -prf_sq -o-
218

 gpnptool edit -net2:net_ip='10.0.2.0' -net2:net_ada='ens36' -prf_sq=219 -p=profile.bak -o=profile.bak -ovr
 gpnptool sign -p=profile.bak -w=file:$ORACLE_HOME/gpnp/`hostname`/wallets/peer/ -o=profile.new
 gpnptool put -p=profile.new

关闭当前节点 CRS 并重启:

crsctl stop crs
 crsctl start crs

2.3 启动集群

关闭当前节点 CRS 并启动集群:

crsctl stop crs
 crsctl start crs


IPv4/IPv6 转换

适用于 IPv4/IPv6 互相转换,根据需要替换 IP 地址类型即可。

3.1 检查 Private 网络

接口配置:

oifcfg getif
 ens33  XXX.XXX.21.0 global public
 ens34 fd03::0 global cluster_interconnect,asm
 ens35 fd04::0 global cluster_interconnect,asm
 ens36 fd05::0 global cluster_interconnect,asm
 ens37 fd06::0 global cluster_interconnect,asm

  • ASMNETWORK

srvctl config asmnetwork
  • ASM LISTENER

srvctl config listener -asmlistener

3.2 备份 GPNP Profile

在所有节点执行备份,使用 grid 用户:

cd $ORACLE_HOME/gpnp/`hostname`/profiles/peer
 cp -p profile.xml home/grid/profile.xml.bak

3.3 删除资源和配置

注:

如果只有一个 Private 网络,此步骤可忽略。

如果有多个 Private 网络,建议只保留一个,删除其他接口配置及关联的资源。

  • ASM LISTENER

srvctl stop listener -listener ASMNET2LSNR_ASM
 srvctl stop listener -listener ASMNET3LSNR_ASM
 srvctl stop listener -listener ASMNET4LSNR_ASM
 
 srvctl remove listener -listener ASMNET2LSNR_ASM
 srvctl remove listener -listener ASMNET3LSNR_ASM
 srvctl remove listener -listener ASMNET4LSNR_ASM

  • ASMNETWORK

srvctl stop asmnetwork -netnum 2
 srvctl stop asmnetwork -netnum 3
 srvctl stop asmnetwork -netnum 4
 
 # by root
 srvctl remove asmnetwork -netnum 2
 srvctl remove asmnetwork -netnum 3
 srvctl remove asmnetwork -netnum 4

接口配置:

oifcfg delif -global ens35/fd04::0
 oifcfg delif -global ens36/fd05::0
 oifcfg delif -global ens37/fd06::0

3.4 编辑 GPNP PROFILE

确保所有节点正常运行,在其中一个节点编辑 GPNP Profile,根据需要修改 Sequence Number, IP 网络号和网络适配器接口名称:

cd $ORACLE_HOME/gpnp/`hostname`/profiles/peer
cp -pprofile.xml profile.bak

 gpnptool unsign -p=profile.bak -o-

 gpnptool getpval -p=profile.bak -prf_sq -o-
206

 gpnptool edit -net1:net_ip='10.0.0.0' -net1:net_ada='ens34' -prf_sq=207 -p=profile.bak -o=profile.bak -ovr
 gpnptool sign -p=profile.bak -w=file:$ORACLE_HOME/gpnp/`hostname`/wallets/peer/ -o=profile.new
 gpnptool put -p=profile.new

编辑完成后在每个节点检查:

gpnptool get -o-

3.5 重启集群

关闭所有节点 CRS 并重新启动:

crsctl stop crs
 crsctl start crs

3.6 检查接口配置

确认编辑 GPNP PROFILE 操作已经生效。

如果出现 "PRIF-30: Network information in OCR and GPnP profile differs提示,使用 oifcfg 删除多余的接口:

oifcfg getif

更新资源:

  • ASM LISTENER
srvctl update listener -listener ASMNET1LSNR_ASM -asm -remove -force
  • ASMNETWORK
srvctl stop asmnetwork -netnum 1
 
 # by root
 srvctl remove asmnetwork -netnum 1
 srvctl add asmnetwork -netnum 1 -subnet 10.0.0.0
 
 srvctl start asmnetwork -netnum 1

  • ASM LISTENER
srvctl add listener -listener ASMNET1LSNR_ASM -asmlistener -subnet 10.0.0.0
 srvctl start listener -listener ASMNET1LSNR_ASM

添加配置和资源:

注:如果只有一个 Private 网络,此步骤可忽略。

接口配置:
oifcfg setif -global ens35/10.0.1.0:cluster_interconnect,asm
 oifcfg setif -global ens36/10.0.2.0:cluster_interconnect,asm
 oifcfg setif -global ens37/172.16.1.0:cluster_interconnect,asm

  • ASMNETWORK
by root
srvctladdasmnetwork-netnum 2 -subnet 10.0.1.0
srvctladdasmnetwork-netnum 3 -subnet 10.0.2.0
srvctladdasmnetwork-netnum 4 -subnet 172.16.1.0
srvctlstartasmnetwork-netnum 2
srvctlstartasmnetwork-netnum 3
srvctlstartasmnetwork-netnum 4

  • ASM LISTENER
srvctl addlistener-listenerASMNET2LSNR_ASM-asmlistener-subnet 10.0.1.0
srvctladdlistener-listenerASMNET3LSNR_ASM-asmlistener-subnet 10.0.2.0
srvctladdlistener-listenerASMNET4LSNR_ASM-asmlistener-subnet 172.16.1.0

srvctlstartlistener-listenerASMNET2LSNR_ASM
srvctlstartlistener-listenerASMNET3LSNR_ASM
srvctlstartlistener-listener ASMNET4LSNR_ASM


END


本文作者:智 源(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论