如何修改集群的公网信息(包括 VIP) (文档 ID 1674442.1)

适用于:

Oracle Database - Enterprise Edition - 版本 11.2.0.3 到 12.1.0.2 [发行版 11.2 到 12.1]
本文档所含信息适用于全部平台node

用途

本文的目标是经过举例说明的方式说明在 Oracle 集群/GI 环境下如何修改公网对应的主机名,公网 IP、VIP、VIP 对应的主机名或者其余 VIP 相关的属性。数据库

适用范围

客户端使用 VIP(虚拟 IP)链接 Oracle 数据库的版本为 10g 和 11g 的集群环境。这些虚拟 IP 是和虚拟主机名对应的静态 IP 地址而且经过 DNS 解析(除非您使用了 11gR2 GNS)。

在安装 Oracle 集群管理软件时,用户会被要求为集群中的每个节点输入一个虚拟 IP 和虚拟主机名。这些信息会被记录在 OCR (Oracle Cluster Registry)中,并且 HA 框架中的不一样组件会依赖于这些 VIP。若是出于某种缘由,须要修改 VIP、VIP 对应的主机名或者公网的子网、网络掩码等信息,请按照本文介绍的过程。服务器

若是修改涉及到集群私网,请参考  Note 283684.1

详细信息

状况1.   修改公网对应的主机名

集群公网对应的主机名是在安装时输入的,而且被记录在 OCR 中。这个主机名在安装以后是不能修改的。惟一的修改方法是删除节点,修改主机名,以后将节点从新添加到集群,或者直接从新安装集群。网络

 

状况2.  只修改公网 IP, 可是不修改网卡、子网或网络掩码信息

若是只须要修改公网 IP 地址,并且新的地址仍然在相同的子网,集群层面不须要作任何修改,全部须要的修改是在 OS 层面反映 IP 地址的变化。oracle

1. 关闭 Oracle 集群管理软件
2. 在网络层面,DNS 和 /etc/hosts 文件中修改 IP 地址
3. 从新启动 Oracle 集群管理软件app

以上的修改可使用滚动的方式完成,例如:每次修改一个节点。框架

 

状况3. 修改公网网卡,子网或网络掩码信息

若是修改涉及到了不一样的子网(网络掩码)或者网卡,须要将 OCR 中已经存在的网卡信息删除并从新添加新的信息。在如下的示例中子网从 10.2.156.0 被修改成 10.2.166.0,须要执行两个步骤 –首先‘delif’,接下来 ‘setif’:ui

% $CRS_HOME/bin/oifcfg/oifcfg delif -global <if_name>[/<subnet>]
% $CRS_HOME/bin/oifcfg/oifcfg setif -global <if_name>/<subnet>:public

例如:
% $CRS_HOME/bin/oifcfg delif -global eth0/10.2.156.0 
% $CRS_HOME/bin/oifcfg setif -global eth0/10.2.166.0:public

而后,在操做系统层面进行修改。除非 OS 层面的修改须要从新启动节点,不然不须要重启 Oracle 集群管理软件。修改可使用滚动的方式完成。操作系统

一旦公网信息被修改,与其相关的 VIP 和 SCAN VIP 也须要修改,请参考状况4和状况5。.net

注意:对于11gR2,上面命令要求集群在全部节点运行,不然报错PRIF-33 和 PRIF-32,好比:
[grid@racnode1 bin]$ ./oifcfg delif -global eth0/192.168.1.0
PRIF-33: Failed to set or delete interface because hosts could not be discovered
CRS-02307: No GPnP services on requested remote hosts.
PRIF-32: Error in checking for profile availability for host racnode2
CRS-02306: GPnP service on host "racnode2" not found.

 

状况4. 修改 VIP 相关的公网信息

准备修改VIP

通常而言,只有 10.2.0.3 以前的版本须要彻底的停机。从 10.2.0.3 开始,ASM 和数据库实例对 VIP 资源的依赖关系已经被删除,因此修改 VIP 不须要中止 ASM 和数据库实例,只有当修改 VIP 时产生的客户端链接会受影响。若是修改只涉及到特定的节点,那么只有链接到对应节点的客户端连接在修改时会受影响。

首先,请参考状况3以确保公网信息被修改。若是在 OS 层面的网络修改后发生了节点或者集群管理软件重启,VIP 将不会被启动,请跳过步骤“修改 VIP 和相关属性”。

得到当前的 VIP 配置

1. 获取当前设置
对于版本 10g 和 11gR1, 使用 Oracle 集群管理软件的拥有者执行下面的命令:

$ srvctl config nodeapps -n <node> -a

例如:
$ srvctl config nodeapps -n racnode1 -a
VIP exists.: /racnode1-vip/101.17.80.184/255.255.254.0/eth1


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

$ srvctl config nodeapps -a

例如:
$ srvctl config nodeapps -a
Network exists: 1/101.17.80.0/255.255.254.0/eth1, type static
VIP exists: /racnode1-vip/101.17.80.184/101.17.80.0/255.255.254.0/eth1, hosting node racnode1
VIP exists: /racnode2-vip/101.17.80.186/101.17.80.0/255.255.254.0/eth1, hosting node racnode2


2. 验证 VIP 状态

版本 10.2 和 11.1:
$ crs_stat -t 

版本 11.2:
$ crsctl stat res -t
- 以上命令应该显示 VIPs 状态为 ONLINE

$ ifconfig -a
(HP 平台请使用 netstat –in, Windows 平台请使用 ipconfig /all)
- VIP 逻辑网卡对应公网网卡

 

中止资源

3. 中止 nodeapps 资源 (若是有必要的话,中止存在依赖关系的 ASM 和数据库资源):

对于版本 10g 和 11gR1, 使用 Oracle 集群管理软件的拥有者执行下面的命令:

$ srvctl stop instance -d <db_name> -i <inst_name>   (对于 10.2.0.3 及以上版本,能够忽略)
$ srvctl stop asm -n <node_name>                     (对于 10.2.0.3 及以上版本,能够忽略)
$ srvctl stop nodeapps -n <node_name>

例如: 
$ srvctl stop instance -d RACDB -i RACDB1
$ srvctl stop asm -n racnode1
$ srvctl stop nodeapps -n racnode1


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

$ srvctl stop instance -d <db_name> -n <node_name>   (能够忽略)
$ srvctl stop vip -n <node_name> -f

例如:
$ srvctl stop instance -d RACDB -n racnode1
$ srvctl stop vip -n racnode1 -f

 

注意1: 对于版本 11gR2,须要使用 -f 选项中止 listener 资源,不然会报如下错误:
PRCR-1014 : Failed to stop resource ora.racnode1.vip
PRCR-1065 : Failed to stop resource ora.racnode1.vip
CRS-2529: Unable to act on 'ora.racnode1.vip' because that would require stopping or relocating 'ora.LISTENER.lsnr', but the force option was not specified
...


4. 验证 VIP 如今处于 OFFLINE 状态,而且 VIP 再也不绑定到公网网卡

$ crs_stat -t (对于版本 11gR2,使用命令 $ crsctl stat res –t)

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

 

修改 VIP 和相关属性

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

例如:
新VIP 地址:110.11.70.11 racnode1-nvip
新子网信息:110.11.70.0
新网络掩码:255.255.255.0
新网卡:eth2


6. 使用 root 用户修改 VIP 资源:

# srvctl modify nodeapps -n <node> -A <new_vip_address or new_vip_hostname>/<netmask>/<[if1[if2...]]>

例如:
# srvctl modify nodeapps -n racnode1 -A racnode1-nvip/255.255.255.0/eth2

 

注意:从版本 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.11.70.0/255.255.255.0/eth2

若是其余属性没有变化,不须要修改 VIP 或 SCAN VIP。

 

* 一个 11gR2 修改 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

 

注意:对于 Windows 平台,若是网卡名中包含了空格,那么网卡名须要包含在双引号(")中。例如:
使用管理员用户或者软件安装用户:
> srvctl modify nodeapps -n racnode1 -A 110.11.70.11/255.255.255.0/"Local Area Connection 1"

 
7. 验证改变

$ srvctl config nodeapps -n <node> -a (10g and 11gR1)
$ srvctl config nodeapps -a (11gR2)

例如:
$ srvctl config nodeapps -n racnode1 -a
VIP exists.: /racnode1-nvip/110.11.70.11/255.255.255.0/eth2

 

从新启动资源

8. 启动 nodeapps 和其它资源

对于版本 10g 和 11gR1, 使用 Oracle 集群管理软件的拥有者执行下面的命令:

$ srvctl start nodeapps -n <node_name>       
$ srvctl start asm -n <node_name>               (对于 10.2.0.3 及以上版本,能够忽略)
$ srvctl start instance -d <dbanme> -i <inst>   (对于 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 <node_name> 
$ srvctl start listener -n <node_name>
$ srvctl start instance -d <db_name> -n <node_name> (能够忽略)

例如:

$ srvctl start vip -n racnode1 
$ srvctl start listener -n racnode1
$ srvctl start instance -d RACDB -n racnode1


9. 验证新的 VIP 状态为 ONLINE 而且已经绑定到集群公网网卡

$ crs_stat -t (对于版本 11gR2,使用命令 $ crsctl stat res –t)

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


10. 若是集群中的其它节点也须要相似的改变,请重复一样的步骤。

其它

11. 若是须要,修改 listener.ora, tnsnames.ora 和 LOCAL_LISTENER/REMOTE_LISTENER 参数反应 VIP 的改变。

 

状况5:修改 SCAN VIP 相关的公网信息

对于 11gR2 Grid Infrastructure,客户端能够经过 SCAN 和 SCAN VIP 链接数据库。请参考下面的 Note 修改 SCAN VIP。

Note 952903.1 How to update the IP address of the SCAN VIP resources (ora.scan<n>.vip) 
Note 972500.1 How to Modify SCAN Setting or SCAN Listener Port after Installation

注意:若是须要回退修改,那么用原始值替换新值,而后从新运行命令。

 

参考

NOTE:952903.1 - How to update the IP address of the SCAN VIP resources (ora.scan{n}.vip)
NOTE:283684.1 - How to Modify Private Network Information in Oracle Clusterware

相关文章
相关标签/搜索