加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle 11g rac R2 for linux change(public,vip)IP ,hostname

发布时间:2020-12-12 16:45:35 所属栏目:百科 来源:网络整理
导读:p align="left" 结构如下: p align="left" img src="https://www.jb51.cc/res/2019/01-18/19/28c8ae6d108512a31288cc754081ed0f.png" alt="" p align="left"? p align="left" 说明: p align="left"节点IP,主机名的修改步骤来自ORACLE support文档: 如何

<tr>
<td valign="top" width="224">
<p align="center">实验


</td>
<td valign="top" width="213">
<p align="center">节点名称


</td>
<td valign="top" width="165">
<p align="center">数据库实例名


</td>
<td valign="top" width="142">
<p align="center">操作系统


</td>
<td valign="top" width="118">
<p align="center">数据库版本


</td>
</tr>
<tr>
<td valign="top" width="224">
<p align="center">公网IP/vip修改


</td>
<td valign="top" width="213">
<p align="center">rac1/rac3(旧机器)


</td>
<td valign="top" width="165">
<p align="center">ogg1/ogg3


</td>
<td valign="top" width="142">
<p align="center">Linux 6.X


</td>
<td rowspan="3" valign="top" width="118">
<p align="center">?


<p align="center">?


<p align="center">Oracle


<p align="center">11.2.0.4


</td>
</tr>
<tr>
<td valign="top" width="224">
<p align="center">公网网卡/vip网卡修改


</td>
<td valign="top" width="213">
<p align="center">rac1/rac2(新机器)


</td>
<td valign="top" width="165">
<p align="center">orcl1/orcl2


<p align="center">racdb1/racdb2


</td>
<td valign="top" width="142">
<p align="center">Linux 6.X


</td>
</tr>
<tr>
<td valign="top" width="224">
<p align="center">Private IP/网卡修改


</td>
<td valign="top" width="213">
<p align="center">rac1/rac2(新机器)


</td>
<td valign="top" width="165">
<p align="center">orcl1/orcl2


<p align="center">?


</td>
<td valign="top" width="142">
<p align="center">Linux 6.X


</td>
</tr>

注意:

在我们修改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 /:public

例如:

% $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 -a

例如:

$ 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 -i ?? (对于 10.2.0.3 及以上版本,可以忽略)

$ srvctl stop asm -n ???????????????????? (对于 10.2.0.3 及以上版本,可以忽略)

$ 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 -n ?? (可以忽略)

$ srvctl stop vip -n -f

例如:

$ 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 -A //<[if1[if2...]]>

例如:

# 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 ] [-S /[/if1[|if2...]]

例如:

# 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 -n ?? (可以忽略)

$ srvctl stop vip -n -f

操作如下:

[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 ?????????????? (对于 10.2.0.3 及以上版本,可以忽略)

$ srvctl start instance -d -i ?? (对于 10.2.0.3 及以上版本,可以忽略)

例如:

$ 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 -n (可以忽略)

例如:

$ 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 /:cluster_interconnect

% $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.?11gR212c上没有使用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 /:cluster_interconnect

节点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//profiles/peer/

$ 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 /:cluster_interconnect[,asm]

如:

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 -subnet

如:

$ 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 命令的全部选项,只需输入:

$ /bin/oifcfg

例5 对于 11gR2 或以上版本的 HAIP 添加或删除集群私网

1. 添加另外的私有网络到现有的使用 HAIP 的集群中,作为 grid 用户执行:

$ oifcfg setif -global /:cluster_interconnect

例如:

$ 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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

<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">
<table class="10" style="width: 862px" border="1" cellspacing="0" cellpadding="0">

    推荐文章
      热点阅读