前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试730】在Oracle中,如果需要修改网卡、子网、网段等信息,那么应该如何操作?

【DB笔试面试730】在Oracle中,如果需要修改网卡、子网、网段等信息,那么应该如何操作?

作者头像
AiDBA宝典
发布2020-01-20 17:00:41
8630
发布2020-01-20 17:00:41
举报
文章被收录于专栏:小麦苗的DB宝专栏

题目部分

在Oracle中,如果需要修改网卡、子网、网段等信息,那么应该如何操作?

答案部分

Oracle 11g RAC中的IP主要有:Public IP、VIP、SCAN VIP、Private IP这几种。一般这类改IP地址或者网卡名称的需求主要场景有:机房搬迁网络变更、系统上线由测试IP更改为生产IP、系统层面双网卡绑定或者解绑等。

如果修改涉及到了不同的子网(网络掩码)或者网卡,需要将OCR中已经存在的网卡信息删除并重新添加新的信息。在以下的示例中子网从172.16.10.X修改为172.16.20.X,需要执行两个步骤–首先‘delif’,接下来‘setif’;然后,在操作系统层面进行修改。除非OS层面的修改需要重新启动节点,否则不需要重启Oracle集群管理软件。修改可以使用滚动的方式完成。

在这种情况下,一旦公网信息被修改,则与其相关的VIP和SCAN VIP也必须修改。

在修改IP地址之前需要先对OCR和GPNP文件进行备份,然后在OS层面添加修改后的网卡适配器以及配置好相关的IP地址,最后再做相关的修改操作。

(一)备份OCR和GPNP profile文件

在修改RAC的IP地址之前,我们需要先备份一下OCR文件,因为IP地址信息是记录在OCR中的,同时还要注意一点,从Oracle 11.2.0.2之后,private network的配置除了记录在OCR中之外,还会记录在GPNP profile里。如果private network不可用或者配置不正确,就会导致CRSD进程不能启动。

因此在操作之前,必须先手工备份GPNP profile和OCR:

用grid用户执行:

节点1,节点2都要执行

代码语言:javascript
复制
[grid@rac1 peer]$ cd $ORACLE_HOME/gpnp/rac1/profiles/peer/
[grid@rac1 peer]$ cp -p profile.xml profile.xml.bak

执行手工OCR的备份

cd 到grid_home

代码语言:javascript
复制
[root@rac1 ~]# cd /u01/app/11.2.0/grid/bin/
[root@rac1 bin]# ./ocrconfig -manualbackup
rac1     2018/05/15 09:35:04     /u01/app/11.2.0/grid/cdata/rac-cluster/backup_20180515_093504.ocr

查看OCR的手工备份

节点1执行即可:

代码语言:javascript
复制
[root@rac1 bin]# ./ocrconfig -showbackup manual
rac1     2018/05/15 09:35:04     /u01/app/11.2.0/grid/cdata/rac-cluster/backup_20180515_093504.ocr

如果操作出现问题,那么可以通过OCR备份进行恢复。

(二)修改公网IP

Oracle集群中的网络信息(接口,子网及每个网卡的角色)都可以被oifcfg命令管理,但是没有网卡的IP地址除外,oifcfg(Oracle Interface Configuration Tool)命令不能修改IP地址信息。

在以下示例中,eth0和eth1是需要修改的网卡,而eth2和eth3是修改后的网卡:

1. 停止数据库:

代码语言:javascript
复制
srvctl stop database -d lhrrac1

2. 获取网段:

代码语言:javascript
复制
oifcfg iflist
oifcfg getif -global

例如:

代码语言:javascript
复制
[root@raclhr-11gR2-N1 ~]# oifcfg iflist
eth0  192.168.59.0
eth1  192.168.2.0
eth1  169.254.0.0
eth2  192.168.159.0
eth3  192.168.102.0
virbr0  192.168.122.0
[root@raclhr-11gR2-N1 ~]# oifcfg getif -global
eth0  192.168.59.0  global  public
eth1  192.168.2.0  global  cluster_interconnect
[root@raclhr-11gR2-N1 ~]# 

3. 节点1和节点2分别运行:

代码语言:javascript
复制
oifcfg delif -global eth0/192.168.59.0
oifcfg setif -global eth2/192.168.159.0:public

修改后校验:

代码语言:javascript
复制
oifcfg getif -global

例如:

代码语言:javascript
复制
[root@raclhr-11gR2-N1 ~]# oifcfg getif -global
eth1  192.168.2.0  global  cluster_interconnect
eth2  192.168.159.0  global  public

修改成功。

(三)设置VIP

一般而言,只有10.2.0.3之前的版本需要完全的停机。从10.2.0.3开始,ASM和数据库实例对VIP资源的依赖关系已经被删除,所以修改VIP不需要停止ASM和数据库实例,只有当修改VIP时产生的客户端连接会受影响。如果修改只涉及到特定的节点,那么只有连接到对应节点的客户端链接在修改时会受影响。

首先,请确保公网信息被修改。如果在OS层面的网络修改后发生了节点或者集群管理软件重启,VIP将不会被启动,那么需要修改VIP和相关属性后才能启动VIP。

1. 获取当前设置

代码语言:javascript
复制
srvctl config nodeapps -a

例如:

代码语言:javascript
复制
[root@raclhr-11gR2-N1 ~]# srvctl config nodeapps -a
Network exists: 1/192.168.59.0/255.255.255.0/eth0, type static
VIP exists: /raclhr-11gR2-N1-vip/192.168.59.172/192.168.59.0/255.255.255.0/eth0, hosting node raclhr-11gr2-n1
VIP exists: /raclhr-11gR2-N2-vip/192.168.59.173/192.168.59.0/255.255.255.0/eth0, hosting node raclhr-11gr2-n2

2.验证VIP状态

代码语言:javascript
复制
$ crsctl stat res -t

以上命令应该显示VIPs状态为ONLINE

代码语言:javascript
复制
$ ifconfig -a

需要注意的是,HP平台请使用netstat–in,Windows平台请使用ipconfig /all。

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

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

代码语言:javascript
复制
srvctl stop vip -n raclhr-11gR2-N1 -f
srvctl stop vip -n raclhr-11gR2-N2 -f

注意,对于版本11gR2,需要使用-f选项停止listener资源,否则会报以下错误:

代码语言:javascript
复制
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不再绑定到公网网卡

需要注意的是,HP平台请使用netstat–in,Windows平台请使用ipconfig /all。

代码语言:javascript
复制
$ crs_stat -t (对于版本 11gR2,使用命令 $ crsctl stat res –t)
$ ifconfig -a

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

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

节点1上执行:

代码语言:javascript
复制
srvctl modify nodeapps -n raclhr-11gR2-N1 -A 192.168.159.72/255.255.255.0/eth2 
srvctl modify nodeapps -n raclhr-11gR2-N2 -A 192.168.159.73/255.255.255.0/eth2
srvctl config nodeapps -a

7.启动nodeapps和其它资源

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

代码语言:javascript
复制
srvctl start vip -n raclhr-11gR2-N1
srvctl start vip -n raclhr-11gR2-N2

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

如果启动VIP报如下的错误:

代码语言:javascript
复制
[root@raclhr-11gR2-N1 ~]# srvctl start vip -n raclhr-11gR2-N1
PRCR-1079 : Failed to start resource ora.raclhr-11gr2-n1.vip
CRS-5017: The resource action "ora.raclhr-11gr2-n1.vip start" encountered the following error: 
CRS-5009: The VIP address 192.168.159.72 does not belong to the subnet 192.168.59.0
. For details refer to "(:CLSN00107:)" in "/u01/app/11.2.0/grid/log/raclhr-11gr2-n1/agent/crsd/orarootagent_root/orarootagent_root.log".

CRS-2674: Start of 'ora.raclhr-11gr2-n1.vip' on 'raclhr-11gr2-n1' failed
CRS-5017: The resource action "ora.raclhr-11gr2-n1.vip start" encountered the following error: 
CRS-5009: The VIP address 192.168.159.72 does not belong to the subnet 192.168.59.0
. For details refer to "(:CLSN00107:)" in "/u01/app/11.2.0/grid/log/raclhr-11gr2-n2/agent/crsd/orarootagent_root/orarootagent_root.log".

CRS-2674: Start of 'ora.raclhr-11gr2-n1.vip' on 'raclhr-11gr2-n2' failed
CRS-2632: There are no more servers to try to place resource 'ora.raclhr-11gr2-n1.vip' on that would satisfy its placement policy

解决:重启网卡:

代码语言:javascript
复制
service network restart

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

代码语言:javascript
复制
$ crs_stat -t (对于版本 11gR2,使用命令 $ crsctl stat res –t)
$ ifconfig -a

HP平台请使用netstat–in,Windows平台请使用ipconfig /all。

9.如果需要,修改listener.ora,tnsnames.ora和LOCAL_LISTENER/REMOTE_LISTENER参数反应VIP的改变。

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

(四)修改SCAN IP

在集群正常运行的情况下,首先修改所有节点/etc/hosts文件后,再执行如下命令,其中raclhr-scan是修改后的SCAN主机名:

代码语言:javascript
复制
srvctl config scan
srvctl stop scan_listener 
srvctl stop scan
srvctl modify scan -n raclhr-scan
srvctl config scan
srvctl start scan 
srvctl start scan_listener

如果SCAN IP的个数改变了,那么还需要执行如下命令进行更新:

代码语言:javascript
复制
srvctl modify scan_listener -u

需要注意的是,以上步骤也适用于修改SCAN的IP地址或增加SCAN IP的个数。

修改SCAN的端口号的命令如下所示:

代码语言:javascript
复制
srvctl modify scan_listener -p 1522

(五)修改私网IP

当子网掩码被更改,但是子网标识没有改变时,如:子网掩码从255.255.0.0更改至255.255.255.0,私网ip为192.168.0.x,子网标识保持不变192.168.0.0,网卡名字没有改变.关闭所有需要更改的主机oracle clusterware,在操作系统层修改私有网络IP地址(如:操作系统网络配置等等)。并重启集群中所有节点,请注意,这种更改是不能采用轮转方式(rolling manaer)完成的。

当子网掩码被改变,附属的子网标识也经常会被改变,oracle在OCR中只存储网卡名字及子网标识的信息,而不存储子网掩码。可以使用oifcfg命令完成这样的变更,oifcfg命令只需在集群中的一个节点执行,而不是所有节点。

针对于11.2的结构,私有网络配置信息不但保存在OCR中,而且还保存在gpnp属性文件中。如果私有网络不可用或定义错误,则CRSD进程将无法启动,任何随后对于OCR的改变都是不可能完成的,因此需要注意当对私有网络的配置信息进行修改,正确的改变顺序是非常重要的。同时请注意,手动修改gpnp属性文件是不支持的。

在对集群中所有节点操作之前,请先备份profile.xml配置文件。作为grid用户执行:

代码语言:javascript
复制
$ cd $GRID_HOME/gpnp/<hostname>/profiles/peer/
$ cp -p profile.xml profile.xml.bk

1.确保集群中的所有节点都已启动并正常运行

2.使用grid用户:

获取下面信息:

代码语言:javascript
复制
$ cd $GRID_HOME/gpnp/<hostname>/profiles/peer/
$ cp -p profile.xml profile.xml.bk

注意以下几点:

① 如果网卡不可用,需要使用–global选项来完成,而不能使用–node选项,它将导致节点被驱逐。

② 如果网卡在服务器上可用,则可以使用下面命令识别子网地址:

代码语言:javascript
复制
$oifcfg iflist

它列出了网卡及子网地址,即使oracle集群没有启动,此命令也可以被执行。请注意,子网掩码有可能不是x.y.z.0的格式,它可以是x.y.z.24,x.y.z.64或x.y.z.128等格式。如:

代码语言:javascript
复制
$oifcfg iflist
lan1 18.1.2.0
lan2 10.2.3.64<<这是一个私有网络子网地址附属的私有网络ip地址为10.2.3.86

③ 如果需要添加第二个私有网络,而不是替换现有的私有网络,则需要保证两个网卡的MTU值相同,否则实例将无法启动并报如下错误信息:

代码语言:javascript
复制
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

④ 对于11gR2或更高版本,不建议在ASM或database的spfile或pfile中设置cluster interconnects参数。无论什么原因如果设置了该参数,则需要在集群关闭之前需将新的私网ip地址设置在spfile或pfile中,否则它会由于私网信息不匹配而导致重启失败。

例如:

代码语言:javascript
复制
[root@raclhr-11gR2-N1 ~]# oifcfg setif -global eth3/192.168.102.0:cluster_interconnect
[root@raclhr-11gR2-N1 ~]# oifcfg getif
eth1  192.168.2.0  global  cluster_interconnect
eth2  192.168.159.0  global  public
eth3  192.168.102.0  global  cluster_interconnect
[root@raclhr-11gR2-N1 ~]# 

3.使用root用户关闭集群中所有的节点并禁用集群:

代码语言:javascript
复制
#crsctl stop crs
#crsctl disable crs

4.使网络配置信息都已在OS层更改完成,确保更改完成后新的接口在所有的节点都可用有效:

代码语言:javascript
复制
vi /etc/hosts #可以修改私网的主机名
ifconfig -a
ping <private hostname>

5.使用root用户激活oracle集群并重新启动集群中的所有节点:

代码语言:javascript
复制
crsctl enable crs
crsctl start crs

6.如果需要去除旧接口卡信息:

代码语言:javascript
复制
oifcfg getif
oifcfg delif-global eth1/192.168.2.0

例如:

代码语言:javascript
复制
[root@raclhr-11gR2-N1 admin]# oifcfg getif
eth1  192.168.2.0  global  cluster_interconnect
eth2  192.168.159.0  global  public
eth3  192.168.102.0  global  cluster_interconnect
[root@raclhr-11gR2-N1 admin]# oifcfg delif -global eth1/192.168.2.0
[root@raclhr-11gR2-N1 admin]# oifcfg getif
eth2  192.168.159.0  global  public
eth3  192.168.102.0  global  cluster_interconnect

7.在OS层删除旧网卡。

& 说明:

有关RAC中修改IP地址的更多内容可以参考:https://ke.qq.com/course/316312?tuin=26507979、http://blog.itpub.net/26736162/viewspace-2157362/、http://blog.itpub.net/26736162/viewspace-2157364/、http://blog.itpub.net/26736162/viewspace-2157372/

本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

---------------优质麦课------------

详细内容可以添加麦老师微信或QQ私聊。

About Me:小麦苗

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

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

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

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

● QQ:646634621 QQ群:618766405

● 提供OCP、OCM和高可用部分最实用的技能培训

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ---------------优质麦课------------
相关产品与服务
文字识别
文字识别(Optical Character Recognition,OCR)基于腾讯优图实验室的深度学习技术,将图片上的文字内容,智能识别成为可编辑的文本。OCR 支持身份证、名片等卡证类和票据类的印刷体识别,也支持运单等手写体识别,支持提供定制化服务,可以有效地代替人工录入信息。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档