专栏首页小麦苗的DB宝专栏如何修改集群的公网信息(包括 VIP) (文档 ID 1674442.1)

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

今天小麦苗给大家分享的是如何修改集群的公网信息

如何修改集群的公网信息

文档内容

适用于:

Oracle Database - Enterprise Edition - 版本 10.1.0.2 到 12.2.0.1 [发行版 10.1 到 12.2] 本文档所含信息适用于所有平台

用途

本文的目标是通过举例说明的方式说明在 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或者VIP, 但是不修改网卡、子网或网络掩码信息,或者只是修改MAC地址,而不需要修改其他信息

如果只需要修改公网 IP 地址或者VIP,而且新的地址仍然在相同的子网和相同的网络接口上,或者只是修改公网IP的MAC地址,IP/interface/subnet/netmask仍旧保持不变,集群层面不需要做任何修改,所有需要的修改是在 OS 层面反映 IP 地址的变化。

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

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

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

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

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

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

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

注意:对于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 -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 -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

注意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 -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

* 一个 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 -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 $ 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

注意:如果网络的属性做了修改,比如netmask 等做了修改,需要重新启动nodeapps

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 的改变。

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

情况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.vip) Note 972500.1 How to Modify SCAN Setting or SCAN Listener Port after Installation

注意:如果需要回退修改,那么用原始值替换新值,然后重新运行命令。

参考

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

注意:本文内容太多,公众号有字数限制,全文可点击文末的阅读原文,谢谢大家的理解。Oracle培训和认证记得找小麦苗哟。

About Me:小麦苗

● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

本文分享自微信公众号 - DB宝(xiaomaimiaolhr),作者:小麦苗best

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【DB笔试面试752】在Oracle中,搭建物理DG需要注意的地方有哪些?

    3、主库必须添加Standby Redo Log Files,其大小应该和Online Redo Log Files的大小一致。另外,Standby日志组的个数...

    小麦苗DBA宝典
  • 【DB笔试面试599】在Oracle中,如何在不执行SQL的情况下获取执行计划?

    1、“EXPLAIN PLAN FOR SQL”不实际执行SQL语句,生成的计划未必是真实执行的计划。但是,必须要有PLAN_TABLE表,可以执行脚本“@?/...

    小麦苗DBA宝典
  • 【DB笔试面试410】SQL Server 2000对数据库提供的备份有:_____、_____、_____。

    在SQL Server 2000中,Master是一个非常重要的系统数据库,如果Master损坏,那么将会对系统造成严重后果,因此系统管理员应该对Master进...

    小麦苗DBA宝典
  • 水题 下厨房 (set的练习)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • 运动控制神器 Leap Motion

    有了leap motion,以上均能做到~ 了解更多,猛戳下面的链接们 挥手游世界 掀初音未来的裙子- 酷炫演示

    用户2930719
  • 互联漏洞[提权挂黑]

    XSS (cross-site script) 跨站脚本自1996年诞生以来,一直被OWASP(open web application security pr...

    周俊辉
  • Fiddler 高级用法:Fiddler Script 与 HTTP 断点调试

    之前在《关于 WEB/HTTP 调试利器 Fiddler 的一些技巧分享》中系统的介绍过 Fiddler 的原理与一些常见技巧,但那篇文章只是入门科普,并不深入...

    用户1177713
  • 如何处理nodejs客户端请求服务器出现的certificate错误

    我使用nodejs提供的request module向一个https发起请求,遇到下面这个错误:

    Jerry Wang
  • PHP链接mongodb的方式

    MongoDB的PHP驱动提供了一些核心类来操作MongoDB,总的来说MongoDB命令行中有的功能,它都可以实现,而且参数的格式基本相似。PHP7以前的版本...

    php007
  • 比较一下UG,CATIA,PRO/E,和SOLIDWORKS的优缺点?

    ace_zh solidworks最简单,各种操作符合大部分人的操作习惯,功能满足绝大部分工业设计需要,普及程度很高,包容性好,和其他软件的互相导入导出协作都做...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券