oracle 11g rac R2 for linux change(public,vip)IP ,hostname
<p align="left">结构如下: <p align="left"> <img src="https://www.52php.cn/res/2019/01-18/19/28c8ae6d108512a31288cc754081ed0f.png" alt=""> <p align="left">? <p align="left">说明: <p align="left">节点IP,主机名的修改步骤来自ORACLE support文档: 如何修改集群的公网信息(包括 VIP) (文档 ID 1674442.1) <p align="left">实验环境情况如下: <div align="center"> |
注意:
在我们修改RAC的IP 地址之前,我们需要先备份一下OCR 和GPNP profile 文件,因为IP 地址信息是记录在OCR中的,从Oracle 11.2.0.2 之后,private network 的配置除了记录在OCR中之外,还会记录在GPNP profile里。
--任意一节点手工执行OCR的备份
[root@rac1 ~]# /u01/app/11.2.0/grid/bin/ocrconfig -manualbackup
查看ocr的手工备份:
[root@rac1 ~]# /u01/app/11.2.0/grid/bin/ocrconfig –showbackup
用grid用户两个节点执行备份:
$ cd $ORACLE_HOME/gpnp/`hostname`/profiles/peer/
$ cp -p profile.xml profile.xml.bak
<p align="center">?
?1.?修改公网对应的主机名
1.??步骤
集群公网对应的主机名是在安装时输入的,并且被记录在 OCR 中。这个主机名在安装之后是不能修改的。唯一的修改方法是删除节点,修改主机名,之后将节点重新添加到集群,或者直接重新安装集群软件,并完成后续的克隆配置。
?2.?只修改公网 IP或者VIP
注意:
以下的修改可以使用滚动的方式完成,例如:每次修改一个节点。
只修改公网 IP或者VIP,但是不修改网卡、子网或网络掩码信息,或者只是修改MAC地址,而不需要修改其他信息;
如果只需要修改公网 IP 地址或者VIP,而且新的地址仍然在相同的子网和相同的网络接口上,或者只是修改公网IP的MAC地址,IP/interface/subnet/netmask仍旧保持不变,集群层面不需要做任何修改,所有需要的修改是在OS层面反映IP地址的变化。
1.??关闭 Oracle 集群管理软件
1、关闭监听
grid可以分别执行lsnrctl stop
?2、关闭数据库
srvctl stop database -d ogg
?
3、关闭集群软件
所有节点ROOT关闭:
/u01/app/11.2.0/grid/bin/crsctl stop has
?
2.?修改
在网络层面,DNS和/etc/hosts文件中修改IP地址,或者直接修改MAC地址
查看IP详细情况:
?
# racdg1
172.16.10.220? racdg1
172.16.10.222? racdg1-vip
192.168.10.220 racdg1-priv
# scan-ip
172.16.10.225 scandg-vip
# racdg3
172.16.10.231? racdg3
172.16.10.232? racdg3-vip
192.168.10.231 racdg3-priv
?1.?现在需要修改成:
# racdg1
172.16.10.200? racdg1
172.16.10.202? racdg1-vip
192.168.10.220 racdg1-priv
# scan-ip
172.16.10.225 scandg-vip
# racdg3
172.16.10.211? racdg3
172.16.10.212? racdg3-vip
192.168.10.231 racdg3-priv
2.?以及网卡信息也进行修改
vi /etc/sysconfig/network-scripts/ifcfg-bond0
IPADDR=XXX
3.?重新启动 Oracle 集群管理软件
ROOT启动:
/u01/app/11.2.0/grid/bin/crsctl start has
查看修改后的IP以及集群资源状态:
?
由于我是公有IP 和VIP一起修改,VIP 节点1,节点3都正常。
节点1:
?
节点3:
?
节点PUBLIC,VIP修改成功。
?3.?改公网网卡(子网或网络掩码信息)
1.?说明
注意:
如果修改涉及到了不同的子网(网络掩码)或者网卡,需要将 OCR 中已经存在的网卡信息删除并重新添加新的信息。在以下的示例中子网从 172.16.10.X修改为 172.16.20.X,需要执行两个步骤 –首先’delif’,接下来 ‘setif’:
然后,在操作系统层面进行修改。除非 OS 层面的修改需要重新启动节点,否则不需要重启 Oracle 集群管理软件。修改可以使用滚动的方式完成。
一旦公网信息被修改,与其相关的 VIP 和 SCAN VIP 也需要修改,请参考情况4和情况5。
2.?修改
情况介绍:
?
节点1运行的VIP,SCAN-IP,PUBLIC如下:
?
节点2运行的VIP,PUBLIC IP如下:
?
现在需要修改成公有网卡的信息如下(早就准备好网卡和IP):
节点1:
节点2:
?
即把原先172.16.10.X换成,172.16.20.X。
对于ORACLE 11G R2.需要两个节点执行以下,命令,且由于更改后,VIP,SCAN-IP都需要相应的修改成对于网卡的网段IP,数据库不需要停,但是业务用不了VIP,所以还是建议停止数据库。
SUPPORT官方模板如下:
% $CRS_HOME/bin/oifcfg/oifcfg delif -global
% $CRS_HOME/bin/oifcfg/oifcfg setif -global
例如:
% $CRS_HOME/bin/oifcfg delif -global eth0/10.2.156.0
% $CRS_HOME/bin/oifcfg setif -global eth0/10.2.166.0:public
以下操作步骤:
- 停止数据库
srvctl stop database -d racdb
?
- 修改公网网卡
查看信息:
/u01/app/11.2.0/grid/bin/oifcfg iflist
修改:(先删除,在添加,这里IP 地址最一个为0,代表的是一个网段。)
注意: 11gR2,删除命令要求集群在所有节点运行,否则报错PRIF-33 和 PRIF-32。
l? 节点1删除:
/u01/app/11.2.0/grid/bin/oifcfg delif -global eth0/172.16.10.0
?
l? 节点2删除;
?
l? 节点1和节点2添加公网网卡:
/u01/app/11.2.0/grid/bin/oifcfg setif -global eth2/172.16.20.0:public
?
/u01/app/11.2.0/grid/bin/oifcfg setif -global eth2/172.16.20.0:public
?
修改后验证:
节点1:
/u01/app/11.2.0/grid/bin/oifcfg getif -global
?
节点2:
/u01/app/11.2.0/grid/bin/oifcfg getif –global
?
修改成功(后续还需要修改VIP,SCAN-IP)。
?4.?修改 VIP 相关的公网信息
?1. 说明
一般而言,只有 10.2.0.3 之前的版本需要完全的停机。从 10.2.0.3 开始,ASM 和数据库实例对 VIP 资源的依赖关系已经被删除,所以修改 VIP 不需要停止 ASM 和数据库实例,只有当修改 VIP 时产生的客户端连接会受影响。如果修改只涉及到特定的节点,那么只有连接到对应节点的客户端链接在修改时会受影响。
首先,请参考情况3以确保公网信息被修改。如果在 OS 层面的网络修改后发生了节点或者集群管理软件重启,VIP 将不会被启动,请跳过步骤“修改 VIP 和相关属性”。
?2.?修改步骤
11g RAC R2修改如下
1、查看节点1,节点2 VIP相关公网信息
节点1:
?
节点2:
版本 10g 和 11gR1,使用 Oracle 集群管理软件的拥有者执行下面的命令:
$ srvctl config nodeapps -n
例如:
$ srvctl config nodeapps -n racnode1 -a
VIP exists.: /racnode1-vip/101.17.80.184/255.255.254.0/eth1
2、查看VIP 状态
crsctl stat res -t
?
3、停止 nodeapps 资源 (如果有必要的话,停止存在依赖关系的 ASM 和数据库资源):
对于版本 10g 和 11gR1,使用 Oracle 集群管理软件的拥有者执行下面的命令:
$ srvctl stop instance -d
$ srvctl stop asm -n
$ srvctl stop nodeapps -n
例如:
$ srvctl stop instance -d RACDB -i RACDB1
$ srvctl stop asm -n racnode1
$ srvctl stop nodeapps -n racnode1
对于版本 11gR2,使用 Grid Infrastructure 的拥有者执行下面的命令:
$ srvctl stop instance -d
$ srvctl stop vip -n
例如:
$ srvctl stop instance -d RACDB -n racnode1
$ srvctl stop vip -n racnode1 -f? (11gR2需要使用 -f 选项停止 listener 资源,否则会报错误)
由于我的数据库已经停止,直接停止节点vip资源。
srvctl stop vip -n rac1 -f
srvctl stop vip -n rac2 -f
?
查看:
?
停止成功。
4. 确定新的 VIP 地址/子网/网络掩码或者 VIP 对应的主机名,在 OS 层面修改网络配置信息,确认新的 VIP 地址应经注册到 DNS 或者确认 /etc/hosts 文件(Unix/Linux 平台),WINDOWSSystem32driversetchosts 文件(Windows平台)已经被修改。如果网卡信息被修改,确认在修改之前新的网卡在服务器上已经可用。
原来VIP:
?
现在修改成:
?
5、使用 root 用户修改 VIP 资源
# srvctl modify nodeapps -n
例如:
# srvctl modify nodeapps -n racnode1 -A racnode1-nvip/255.255.255.0/eth2
注意 1:
从版本 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
例如:
# srvctl modify network -k 1 -S 110.11.70.0/255.255.255.0/eth2
如果其他属性没有变化,不需要修改 VIP 或 SCAN VIP。
注意 2:
在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.11.70.0/255.255.255.0/eth2
PRCT-1305 : The specified interface name "eth2" does not match the existing network interface name "eth1"
需要通过以下workaround来解决:
# srvctl modify network -k 1 -S 110.11.70.0/255.255.255.0
# srvctl modify network -k 1 -S 110.11.70.0/255.255.255.0/eth2
11G R2修改VIP如下;
帮助命令:
/u01/app/11.2.0/grid/bin/srvctl modify nodeapps -n rac1 -h
?
修改如下:
节点1:
/u01/app/11.2.0/grid/bin/srvctl modify nodeapps -n rac1 -A rac1-vip/255.255.255.0/eth2
?
节点2:
/u01/app/11.2.0/grid/bin/srvctl modify nodeapps -n rac2 -A rac2-vip/255.255.255.0/eth2
?
查看修改:
/u01/app/11.2.0/grid/bin/srvctl config nodeapps -a
节点1:
节点2:
?
修改成功。
?3.?11gR2 修改 VIP 主机名
11gR2 修改 VIP 主机名,但是不修改IP地址;如果即需要修改VIP,又需要修改主机名,建议先修改IP,再修改主机名。
只把 VIP 主机名从 racnode1-vip 修改为 racnode1-nvip,IP 地址和其他属性保持不变。
如果 IP 地址保持不变,以上的命令将不会改变命令‘crsctl stat res ora.racnode1.vip -p’的输出中项目 USR_ORA_VIP 的值。请使用下面的命令:
# crsctl modify res ora.racnode1.vip -attr USR_ORA_VIP=racnode1-nvip
验证项目 USR_ORA_VIP 的改变:
# crsctl stat res ora.racnode1.vip -p |grep USR_ORA_VIP
实验室把:rac1-vip,rac2-vip改成:rac1vip,rac2vip
操作如下:
crsctl stat res -t
?
$ srvctl stop instance -d
$ srvctl stop vip -n
操作如下:
[grid@rac2 ~]$ srvctl stop database -d orcl
[grid@rac2 ~]$ srvctl stop vip -n rac1 -f
[grid@rac2 ~]$ srvctl stop vip -n rac2 -f
?
crsctl stat res -t
?
任意一节点修改VIP:
?
/u01/app/11.2.0/grid/bin/crsctl modify res ora.rac1.vip -attr USR_ORA_VIP=rac1vip
/u01/app/11.2.0/grid/bin/crsctl modify res ora.rac2.vip -attr USR_ORA_VIP=rac2vip
?
验证修改VIP-HOSTNAME是否成功:
/u01/app/11.2.0/grid/bin/crsctl stat res ora.rac1.vip -p |grep USR_ORA_VIP
/u01/app/11.2.0/grid/bin/crsctl stat res ora.rac2.vip -p |grep USR_ORA_VIP
?
修改所有节点/etc/hosts
修改后结果:
?
启动VIP:
srvctl start vip -n rac1
srvctl start vip -n rac2
?
查看修改后的结果:
?
修改成功。
.?启动 nodeapps 和其它资源
对于版本 10g 和 11gR1,使用 Oracle 集群管理软件的拥有者执行下面的命令:
$ srvctl start nodeapps -n
$ srvctl start asm -n
$ srvctl start instance -d
例如:
$ srvctl start nodeapps -n racnode1
$ srvctl start asm -n racnode1
$ srvctl start instance -d RACDB -i RACDB1
对于版本 11gR2,使用 Grid Infrastructure 的拥有者执行下面的命令:
$ srvctl start vip -n
$ srvctl start listener -n
$ srvctl start instance -d
例如:
$ srvctl start vip -n racnode1
$ srvctl start listener -n racnode1
$ srvctl start instance -d RACDB -n racnode1
[grid@rac1 peer]$ srvctl start vip -n rac1
[grid@rac1 peer]$ srvctl start vip -n rac2
?
注意:如果网络的属性做了修改,比如netmask 等做了修改,需要重新启动nodeapps
?验证新的 VIP 状态为 ONLINE 并且已经绑定到集群公网网卡
$ crs_stat -t (对于版本 11gR2,使用命令 $ crsctl stat res –t)
?
$ ifconfig -a
(HP 平台请使用 netstat –in,Windows 平台请使用 ipconfig /all)
如果集群中的其它节点也需要类似的改变,请重复同样的步骤。
其它
如果需要,修改 listener.ora,tnsnames.ora 和 LOCAL_LISTENER/REMOTE_LISTENER 参数反应 VIP 的改变。
注意: ASM和DB实例的LOCAL_LISTENER参数,是GI自动设置的。VIP的改变,LOCAL_LISTENER会自动识别,并生效。但是由于Bug 22824602,一些特定情况下。 LOCAL_LISTENER参数没有反应 VIP 的改变。workaround解决方法是重启受影响的节点的集群软件。
5.?修改SCAN-IP
注意: 文档来自SUPPORT ID 952903.1(本次只是修改SCAN IP,不修改SCAN端口)
1、停止资源
$ $GRID_HOME/bin/srvctl stop scan_listener
$ $GRID_HOME/bin/srvctl stop scan
?
查看:
?
停止成功。
2、修改SCAN IP
查看之前的SCAN:
/u01/app/11.2.0/grid/bin/srvctl config scan
?
修改SCAN IP:
修改所有/etc/hosts scan-ip
?
/u01/app/11.2.0/grid/bin/srvctl modify scan -n scan-vip (一边修改即可)
?
查看是否修改成功:
节点1:
?
节点2:
?
修改成功。
启动SCAN到节点1
srvctl start scan -n rac1
?
crsctl stat res -t
?
?6.?更改私有主机名
文档来自support ID 2103317.1,在 11.2 oracle clusterware 之前的版本,私有主机名被记录在 OCR 中,它不能被更改,一般情况下私有主机名是不需要改变的,它附属的ip 可以被更改,只有使用删除/添加节点或重新安装 oracle clusterware 来更改私有主机名。
在 11.2 Grid 结构中,私有主机名不在记录在 OCR 中,并且不存在依赖关系,所以它可以在 /etc/hosts 文件中任意更改。
?7.?只更改私有 ip 地址
只更改私有 ip 地址不更改网卡、子网及子网掩码信息,不更改网卡、子网及子网掩码信息。
私有 ip
节点1地址 192.168.10.21 更改至 192.168.10.31;
节点2地址:192.168.10.22 更改至 192.168.10.32;
网卡名字及子网保持不变。或者只改变MAC地址,保持private IP address/interface name/subnet/network不变
只要关闭需要更改主机上的 oracle clusterware 软件,在操作系统层,根据需求更改私有 ip 地址或者MAC地址(如:/etc/hosts,OS network config 等等),再重启启动 oracle clusterware 软件即可。
查看当前的私有IP地址:
?
两个节点关闭数据后,关闭集群资源,操作系统层面修改IP。
/u01/app/11.2.0/grid/bin/crsctl stop has ROOT停止集群资源,然后修改IP,重启网络服务
service network restart
/u01/app/11.2.0/grid/bin/crsctl start has 启动集群服务
查看修改是否成功:
节点1:
?
节点2:
?
修改成功。
?8.?只改变私有网络的 MTU 值
将私有网络 MTU 值从1500更改至9000(激活 jumbo frame),网卡名字保持不变。
1. 关闭集群中的所有节点。
2. 在操作系统层更改 MTU 需要设定的值,确保更改后 MTU 值的私有网卡可用并且可以 ping 通集群中的所有节点。
3. 重启所有节点的集群管理软件
9.?更改私有网卡名字,子网及掩码
提示:当子网掩码被更改,但是子网标识没有改变时,如:
子网掩码从 255.255.0.0 更改至 255.255.255.0,私网 ip 为 192.168.10.x,子网标识保持不变 192.168.10.0,网卡名字没有改变.关闭所有需要更改的主机 oracle clusterware,在操作系统层修改私有网络IP地址(如:操作系统 网络配置等等)。并重启集群中所有节点,请注意,这种更改是不能采用轮转方式(rolling manaer)完成的。
当子网掩码被改变,附属的子网标识也经常会被改变,oracle 在 OCR 中只存储网卡名字及子网标识的信息,而不存储子网掩码。可以使用oifcfg命令完成这样的变更,oifcfg 命令只需在集群中的一个节点执行,而不是所有节点。
?1.?11gR2以前的集群管理软件
1. 使用 oifcfg 命令添加新的私有网络信息,删除旧的私有网络信息:
% $ORA_CRS_HOME/bin/oifcfg/oifcfg setif -global
% $ORA_CRS_HOME/bin/oifcfg/oifcfg delif -global
举例:
% $ORA_CRS_HOME/bin/oifcfg setif -global eth3/192.168.2.0:cluster_interconnect
% $ORA_CRS_HOME/bin/oifcfg delif -global eth1/192.168.1.0
校验结果
% $ORA_CRS_HOME/bin/oifcfg getif??
eth0 10.2.166.0 global public
eth3 192.168.2.0 global cluster_interconnect
2. 关闭 Oracle Clusterware
使用 root 用户执行: # crsctl stop crs
3. 在操作系统层面更改网络配置,修改集群内所有节点的 /etc/hosts 文件,确保集群内所有节点新的网络设置都已生效:
% ping
% ifconfig -a? on Unix/Linux
或
% ipconfig /all on windows
4. 重新启动 Oracle Clusterware
以 root 用户:# crsctl start crs
提示:如果在 linux 系统上正在运行 OCFS2,则可能还需要更改 OCFS2 运行在其它节点的私有 ip 地址
2.?11gR2和12c上没有使用flex ASM 的版本
针对于 11.2 的结构,私有网络配置信息不但保存在 OCR 中,而且还保存在 gpnp 属性文件中。如果私有网络不可用或定义错误,则 CRSD 进程将无法启动,任何随后对于 OCR 的改变都是不可能完成的,因此需要注意当对私有网络的配置信息进行修改,正确的改变顺序是非常重要的。同时请注意,手动修改 gpnp 属性文件是不支持的。
在对集群中所有节点操作之前,请先备份 profile.xml 配置文件。作为 grid 用户执行:
用grid用户两个节点执行备份(首页也说过的):
$ cd $ORACLE_HOME/gpnp/`hostname`/profiles/peer/
$ cp -p profile.xml profile.xml.bak
- 确保集群中的所有节点都已启动并正常运行
[grid@rac1 ~]$ crsctl stat res –t
- 使用 grid 用户获取网卡
$ oifcfg getif
节点1:
?
节点2:
?
都是用的eth1网卡,192.168.10.0 网段。
- 现在要把私有网卡修改成:eth3/192.168.20.0(注意,都是先添加,后删除,官方没有说那个节点执行,测试只需要一个节点执行,且网卡名称要所有节点一样)
节点1,节点2加入新的集群私网通讯信息:
$ oifcfg setif -global
节点1:
oifcfg getif
oifcfg setif -global eth3/192.168.20.0:cluster_interconnect
oifcfg getif
?
节点2:
oifcfg setif -global eth3/192.168.20.0:cluster_interconnect
oifcfg getif
?
以下是官方模板命令:
例如:
a. 加入新的并有相同子网的接口卡 bond0
$ oifcfg setif -global bond0/192.168.0.0:cluster_interconnect
b. add a new subnet with the same interface name but different subnet or new interface name
$ 添加一个新的子网具有相同网卡的名称但不同的子网或新的网卡名
或
$ oifcfg setif -global eth3/192.168.1.96:cluster_interconnect
注意:
1. 如果网卡不可用,需要使用 -global 选项来完成,而不能使用 –node 选项,它将导致节点被驱逐。
2. 如果网卡在服务器上可用,则可以使用下面命令识别子网地址:
$ oifcfg iflist
它列出了网卡及子网地址,即使 oracle 集群没有启动,此命令也可以被执行。请注意,子网掩码有可能不是 x.y.z.0 的格式,它可以是 x.y.z.24,x.y.z.64 或 x.y.z.128 等格式。如:
$ oifcfg iflist
lan1 18.1.2.0
lan2 10.2.3.64??????? << 这是一个私有网络子网地址附属的私有网络 ip 地址为 10.2.3.86
3. 如果需要添加第二个私有网络,而不是替换现有的私有网络,则需要保证两个网卡的 MTU 值相同,否则实例将无法启动并报如下错误信息:
ORA-27504: IPC error creating OSD context
ORA-27300: OS system dependent operation:if MTU failed with status: 0
ORA-27301: OS failure message: Error 0
ORA-27302: failure occurred at: skgxpcini2
ORA-27303: additional information: requested interface lan1:801 has a different MTU (1500) than lan3:801 (9000),which is not supported. Check output from ifconfig command
4. 对于 11gR2 或更高版本,不建议在 ASM 或 database 的 spfile 或 pfile 中设置 cluster interconnects 参数。无论什么原因如果设置了该参数,则需要在集群关闭之前需将新的私网 ip 地址设置在 spfile 或 pfile 中,否则它会由于私网信息不匹配而导致重启失败。
- 使用 root 用户关闭集群中所有的节点并禁用集群:
节点1,2执行以下命令:
/u01/app/11.2.0/grid/bin/crsctl stop crs
?
/u01/app/11.2.0/grid/bin/crsctl disable crs
?
- 使网络配置信息都已在 OS 层更改完成,确保更改完成后新的接口在所有的节点都可用有效:
1.修改所有节点/etc/hosts 文件。
?
2.OS所有节点修改私网IP
?准备好所有节点即将更改的私有网卡,并且配置好即将修改的私有地址(OS层提前修改好)。
- 使用 root 用户激活 oracle 集群并重新启动集群中的所有节点:
/u01/app/11.2.0/grid/bin/crsctl enable crs
/u01/app/11.2.0/grid/bin/crsctl start crs
节点1:
?
节点2:
?
- 如果需要去除旧接口卡信息:
$ oifcfg delif -global
任意一节点执行:
例如节点2:
oifcfg delif -global eth1/192.168.10.0
oifcfg getif
?
节点1查看:
oifcfg getif
?
?3.?对于 12C flex ASM 结构(support 原文,没有环境测试)
请检查上面部分,并关注提示部分,按下面命令做备份:
在对集群中所有节点操作之前,请先备份 profile.xml 配置文件。 作为 grid 用户执行:
$ cd $GRID_HOME/gpnp/
$ cp -p profile.xml profile.xml.bk
1. 确保 oracle 集群中的所有节点都已正常运行。
2. 使用 grid 用户:
得到现有信息,如下:
$ oifcfg getif
eth1 100.17.10.0 global public
eth0 192.168.0.0 global cluster_interconnect,asm
上面例子显示网卡 ech0 被用作集群私网和 ASM 网络。
加入新的集群私网信息:
$ oifcfg setif -global
如:
a. 加入一个新的具有相同子网网卡 bond0
$ oifcfg setif -global bond0/192.168.0.0:cluster_interconnect,asm
b. 加入一个新的并具有相同网卡名字的子网,或不同子网和具有新的接口名字
$ oifcfg setif -global eth0/192.68.10.0:cluster_interconnect,asm
或
$ oifcfg setif -global eth3/192.168.1.96:cluster_interconnect,asm
?如果有不同的网络用于私有网络和 ASM 网络,则可以对其进行相应的调整。
3. 当 ASMLISTENER 正被用作私有网络,如果对其修改则会影响 ASMLISTENER。需要添加一个新的 ASMLISTENER 及新的网络配置。如果 ASM 的子网网络没有改变则跳过这一步。
3.1. 加入一个新的 ASMLISTENE(例:ASMNEWLISNR_ASM)及新的子网,使用 grid 用户:
$ srvctl add? listener -asmlistener -l
如:
$ srvctl add listener -asmlistener -l ASMNEWLSNR_ASM -subnet 192.168.10.0
3.2. 删除现有的 ASMLISTENER(这个例子中 ASMLSNR_ASM)并去除依赖关系,使用 grid 用户:
$ srvctl update listener -listener ASMLSNR_ASM -asm -remove -force
$ lsnrctl stop ASMLSNR_ASM
注意. 需要使用 –force 选项,否则会出现下面错误:
$ srvctl update listener -listener ASMLSNR_ASM -asm -remove
PRCR-1025 : Resource ora.ASMLSNR_ASM.lsnr is still running
$ srvctl stop listener -l ASMLSNR_ASM
PRCR-1065 : Failed to stop resource ora.ASMLSNR_ASM.lsnr
CRS-2529: Unable to act on 'ora.ASMLSNR_ASM.lsnr' because that would require stopping or relocating 'ora.asm',but the force option was not specified
3.3 校验配置信息:
$ srvctl config listener -asmlistener
$ srvctl config asm
4. 使用 root 用户关闭集群中的所有节点并禁用集群:
# crsctl stop crs
# crsctl disable crs
5. 在操作系统层面更改网络配置,更改之后,确保所有节点上的新网卡生效:
$ ifconfig -a
$ ping
6. 使用 root 用户激活 oracle 集群并重新启动集群中的所有节点:
# crsctl enable crs
# crsctl start crs
7. 删除旧的网卡信息:
$ oifcfg delif -global
如:
$ oifcfg delif -global eth0/192.168.0.0
?10.关于 11gR2 的一些注意事项
1.?关于 11gR2 的一些注意事项
1. 如果底层网络配置已经更改, 但是 oifcfg 尚未执行同样的变更,则重启 oracle 集群会导致 crsd 进程不能启动。
crsd.log 日志将会显示如下:
2010-01-30 09:22:47.234: [ default][2926461424] CRS Daemon Starting
..
2010-01-30 09:22:47.273: [ GPnP][2926461424]clsgpnp_Init: [at clsgpnp0.c:837] GPnP client pid=7153,tl=3,f=0
2010-01-30 09:22:47.282: [ OCRAPI][2926461424]clsu_get_private_ip_addresses: no ip addresses found.
2010-01-30 09:22:47.282: [GIPCXCPT][2926461424] gipcShutdownF: skipping shutdown,count 2,from [ clsinet.c : 1732],ret gipcretSuccess (0)
2010-01-30 09:22:47.283: [GIPCXCPT][2926461424] gipcShutdownF: skipping shutdown,count 1,from [ clsgpnp0.c : 1021],ret gipcretSuccess (0)
[ OCRAPI][2926461424]a_init_clsss: failed to call clsu_get_private_ip_addr (7)
2010-01-30 09:22:47.285: [ OCRAPI][2926461424]a_init:13!: Clusterware init unsuccessful : [44]
2010-01-30 09:22:47.285: [ CRSOCR][2926461424] OCR context init failure. Error: PROC-44: Error in network address and interface operations Network address and interface operations error [7]
2010-01-30 09:22:47.285: [ CRSD][2926461424][PANIC] CRSD exiting: Could not init OCR,code: 44
2010-01-30 09:22:47.285: [ CRSD][2926461424] Done.
以上错误显示操作系统层面的设置(oifcfg iflist)与 gpnp profile.xml 配置文件设置不匹配。
解决方法:恢复操作系统网络配置到最初的状态,启动 oracle 集群,然后再按照上面的步骤重新更改。
如果底层的网络并没有改变,但 oifcfg 已经被设置了一个错误的子网地址或接口名字,则会发生同样的问题。
2. 如果集群中的任何一个节点关闭,oifcfg 命令将会失败并显示错误:
$ oifcfg setif -global bond0/192.168.0.0:cluster_interconnect
PRIF-26: Error in update the profiles in the cluster
解决方案:启动 oracle 集群中没有运行的节点,确保集群中所有的节点都已启动,如果由于操作系统原因不能启动的节点,请先将此节点从集群中删除在执行私网网络变更。
3. 如果执行上面命令的的用户非 GI 的拥有者,则会出现相同的错误:
$ oifcfg setif -global bond0/192.168.0.0:cluster_interconnect
PRIF-26: Error in update the profiles in the cluster
解决方案:确保使用 GI 的拥有者登录并执行上面命令。
4. 从 11.2.0.2 开始,如果在没有加入一个新私有网卡,就试图删除最后一个私有网卡(集群私网)则会发生下面错误:
PRIF-31: Failed to delete the specified network interface because it is the last private interface
解决方案:在删除旧的私有网卡之前,先加入新的私有网卡。
5. 如果主机节点的 oracle 集群关闭在关闭状态,则会报下面错误:
$ oifcfg getif
PRIF-10: failed to initialize the cluster registry
解决方案:启动该主机节点上的 oracle 集群软件。
?2.?关于 Windows 系统注意事项
更改网卡的语法在 windows/RAC 和Unix/Linux 集群是一样的,但是网卡名称会略有不同,在 windows 系统上,默认分配给接口通常的名称为:
Local Area Connection
Local Area Connection 1
Local Area Connection 2
如果使用一个网卡名称含有空格,则名称必须使用引号括起来,同时,请注意这是区分大小写的。例如,在 windows上,设置集群私网链接:
C:oracleproduct10.2.0crsbinoifcfg setif -global "Local Area Connection 1"/192.168.1.0:cluster_interconnect
然而,在 windows 上重新命名网卡按最佳实践更有意义,如重命名为”ocwpublic” 和”ocwprivate”。如果 oracle 集群安装完成后需要更改网卡名字,则需要运行”oifcfg”命令来添加新的网卡并删除旧的。综上所述。
您可以运行下面命令查看每个节点上可用的网卡名字。
oifcfg iflist -p -n
必须在每个节点上运行这个命令来验证网卡名称相同的定义。
3. oifcfg 命令
使用 oifcfg 命令更改网卡名字的影响
对于私网网卡,数据库将使用存储在 OCR 中定义为集群互联的网卡作为节点间缓存融合通信。在告警日志开始的时候,就会显示集群互联有效的信息。在参数清单。例如:
For pre 11.2.0.2:
Cluster communication is configured to use the following interface(s) for this instance
192.168.1.1
For 11.2.0.2+: (HAIP address will show in alert log instead of private IP)
Cluster communication is configured to use the following interface(s) for this instance
? 169.254.86.97
如果上面信息不正确,则实例需要重启以便 OCR 条目修正,这同样适用于 ASM 实例和数据库实例。在 windows 系统上,实例被关闭后,在 OCR 将被重读之前,还需要停止/启动 OracleService < SID >(或 OracleASMService < ASMSID > 。
Oifcfg 命令用法
查看 oifcfg 命令的全部选项,只需输入:
$
例5 对于 11gR2 或以上版本的 HAIP 添加或删除集群私网
1. 添加另外的私有网络到现有的使用 HAIP 的集群中,作为 grid 用户执行:
$ oifcfg setif -global
例如:
$ oifcfg setif -global enp0s8/192.168.57.0:cluster_interconnect
?关闭 CRS 中的所有节点,通过重新启动 crs 中的所有节点,来使 HAIP 读入新的接口,不能使用滚动方式重启。
2. 在使用 HAIP 的集群中删除私有网络,作为 grid 用户执行:
$ oifcfg delif -global
例如:
$ oifcfg delif -global enp0s8
HAIP 将切换至其它可用接口,在接口被删除后,集群/数据库会继续采用此方式运行。
删除多余的 HAIP 接口,应关闭 CRS 所有节点,然后重启 CRS 所有节点。不能采用以滚动的方式重新启动 CRS。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!