共计 9836 个字符,预计需要花费 25 分钟才能阅读完成。
Oracle 11g RAC 修改各类 IP 地址
首先,我们都知道 Oracle 11g RAC 中的 IP 主要有:Public IP、VIP、SCAN VIP、Private IP 这几种。
一般这类改 IP 地址或者网卡名称的需求主要场景有:
机房搬迁网络变更、系统上线由测试 IP 更改为生产 IP、系统层面双网卡绑定或者解绑等。
我这里实验环境的需求是:
之前在 Virtual Box 虚拟化环境建设的 Oracle 11g RAC,最初选择的公有网络网卡类型是 “仅主机(host-only) 适配器”模式的,这种模式不会受到外界网络影响。但是现在有 局域网络其他机器访问这个环境的需求 ,所以需要将公有网络网卡的类型修改为“桥接网卡” 模式,并修改对应的 IP 地址为局域网网段的。实际上 private IP 并没有必要去修改,但为了演示修改 private IP 的过程,也做了修改。
原 Oracle 11g RAC IP 信息如下:
#public ip | |
192.168.56.150 jyrac1 | |
192.168.56.152 jyrac2 | |
#private ip | |
10.10.10.11 jyrac1-priv | |
10.10.10.12 jyrac2-priv | |
#virtual ip | |
192.168.56.151 jyrac1-vip | |
192.168.56.153 jyrac2-vip | |
#scan ip | |
192.168.56.160 jyrac-scan |
现在根据需求,最终需要修改为:
#public ip | |
192.168.1.50 jyrac1 | |
192.168.1.52 jyrac2 | |
#private ip | |
10.10.10.50 jyrac1-priv | |
10.10.10.52 jyrac2-priv | |
#virtual ip | |
192.168.1.51 jyrac1-vip | |
192.168.1.53 jyrac2-vip | |
#scan ip | |
192.168.1.60 jyrac-scan |
主要实施步骤如下:
- 1. 正常关库、监听和 CRS
- 2. 修改 /etc/hosts 配置文件
- 3.OS 层修改公有网卡地址
- 4. 启动 crs
- 5. 修改 Public IP,VIP,SCAN VIP
- 6. 修改 Private IP
- Reference
1. 正常关库、监听和 CRS
这里先正常 immediate 关闭数据库,然后关闭监听,最后关闭两个节点的 crs:
[grid@jyrac1 ~]$ srvctl stop database -d jyzhao -o immediate | |
[grid@jyrac1 ~]$ srvctl stop listener | |
[grid@jyrac1 ~]$ which crsctl | |
/opt/app/11.2.0/grid/bin/crsctl | |
[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/crsctl stop crs | |
[root@jyrac2 ~]# /opt/app/11.2.0/grid/bin/crsctl stop crs |
注意:这样再次启动 crs 时,就不会自动启动监听和数据库了。
2. 修改 /etc/hosts 配置文件
根据需求,先备份原来的 /etc/hosts 文件为 /etc/hosts.bak
[ | ]|
[ | ]
然后再 vi 修改 /etc/hosts 文件:
将 public ip、vip、scan vip 修改为如下值:
#public ip | |
192.168.1.50 jyrac1 | |
192.168.1.52 jyrac2 | |
#virtual ip | |
192.168.1.51 jyrac1-vip | |
192.168.1.53 jyrac2-vip | |
#scan ip | |
192.168.1.60 jyrac-scan |
注意:其他内容不变。关于 private ip,等后面修改 private ip 的时候再一起改。
3.OS 层修改公有网卡地址
这部分正常实施应由 SA 来做,我这里是自己的实验环境,所以此步骤过程仅供参考:
3.1 确认之前的公网网卡信息(这里省略了无关网卡信息输出):
[root@jyrac1 ~]# ifconfig -a | |
eth2 Link encap:Ethernet HWaddr 08:00:27:95:22:E3 | |
inet addr:192.168.56.150 Bcast:192.168.56.255 Mask:255.255.255.0 | |
inet6 addr: fe80::a00:27ff:fe95:22e3/64 Scope:Link | |
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 | |
RX packets:3549 errors:0 dropped:0 overruns:0 frame:0 | |
TX packets:3378 errors:0 dropped:0 overruns:0 carrier:0 | |
collisions:0 txqueuelen:1000 | |
RX bytes:396404 (387.1 KiB) TX bytes:824575 (805.2 KiB) | |
[root@jyrac2 etc]# ifconfig -a | |
eth2 Link encap:Ethernet HWaddr 08:00:27:1A:5A:7A | |
inet addr:192.168.56.152 Bcast:192.168.56.255 Mask:255.255.255.0 | |
inet6 addr: fe80::a00:27ff:fe1a:5a7a/64 Scope:Link | |
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 | |
RX packets:2353 errors:0 dropped:0 overruns:0 frame:0 | |
TX packets:2188 errors:0 dropped:0 overruns:0 carrier:0 | |
collisions:0 txqueuelen:1000 | |
RX bytes:292753 (285.8 KiB) TX bytes:306602 (299.4 KiB) |
3.2 修改虚拟环境的网卡连接方式
按照本次需求,需要在 virtual box 虚拟机那里将连接方式由“仅主机 (host-only) 适配器”修改为“桥接网卡”。
3.3 修改 Public IP 地址
由于已经无法连接,需要到 virt box 虚拟机管理界面进行主机的对应网卡 IP 地址修改,之后重新启动对应的网卡。
主要命令如下:
vi /etc/sysconfig/network-scripts/ifcfg-eth2 | |
ifdown eth2 | |
ifup eth2 | |
ifconfig eth2 | |
ping 192.168.1.50 | |
ping 192.168.1.52 |
以节点 1 为例,修改后的网卡信息:
[root@jyrac1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2 | |
DEVICE=eth2 | |
TYPE=Ethernet | |
ONBOOT=yes | |
BOOTPROTO=static | |
IPADDR=192.168.1.50 | |
NETMASK=255.255.255.0 | |
[root@jyrac1 ~]# ifconfig eth2 | |
eth2 Link encap:Ethernet HWaddr 08:00:27:95:22:E3 | |
inet addr:192.168.1.50 Bcast:192.168.1.255 Mask:255.255.255.0 | |
inet6 addr: fe80::a00:27ff:fe95:22e3/64 Scope:Link | |
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 | |
RX packets:3998 errors:0 dropped:0 overruns:0 frame:0 | |
TX packets:3594 errors:0 dropped:0 overruns:0 carrier:0 | |
collisions:0 txqueuelen:1000 | |
RX bytes:440406 (430.0 KiB) TX bytes:861230 (841.0 KiB) |
最终使用局域网其他机器配置 CRT 连接到新修改的 IP 地址,结果可以正常连接,确认到此主机的 Public IP 地址在主机层面已经修改完毕。
4. 启动 crs
crsctl start crs
[ | ]|
[ | ]
注意:这里如果是按照我上面关闭 crs 的操作,正常数据库和监听是没有启动的,对应 target 和 state 都应该是 offline:
ora.LISTENER.lsnr | |
OFFLINE OFFLINE jyrac1 | |
OFFLINE OFFLINE jyrac2 | |
ora.jyzhao.db | |
1 OFFLINE OFFLINE Instance Shutdown | |
2 OFFLINE OFFLINE Instance Shutdown |
5. 修改 Public IP,VIP,SCAN VIP
5.1 修改 Public IP
-- 查看当前设定:[root@jyrac1 ~] | |
eth2 192.168.56.0 global public | |
eth3 10.10.10.0 global cluster_interconnect | |
-- 删除旧值并设定新值 | |
[ | ]|
[ | ]|
-- 查看验证修改成功:[root@jyrac1 ~] | |
eth3 10.10.10.0 global cluster_interconnect | |
eth2 192.168.1.0 global public | |
[ | ]|
eth3 10.10.10.0 global cluster_interconnect | |
eth2 192.168.1.0 global public |
5.2 修改 VIP
需要停止数据库、监听和 VIP,如果按照之前操作,目前数据库和监听已经是停止状态。
[grid@jyrac1 ~]$ srvctl stop vip -n jyrac1 | |
[grid@jyrac1 ~]$ srvctl stop vip -n jyrac2 |
查看 VIP 当前设置:
[grid@jyrac1 ~]$ olsnodes -s | |
jyrac1 Active | |
jyrac2 Active | |
[grid@jyrac1 ~]$ srvctl config vip -n jyrac1 | |
VIP exists: /jyrac1-vip/192.168.1.51/192.168.56.0/255.255.255.0/eth2, hosting node jyrac1 | |
[grid@jyrac1 ~]$ srvctl config vip -n jyrac2 | |
VIP exists: /jyrac2-vip/192.168.1.53/192.168.56.0/255.255.255.0/eth2, hosting node jyrac2 |
修改 VIP 设置:
[ | ]|
[ | ]
再次验证 VIP 修改完成:
[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/srvctl config vip -n jyrac1 | |
VIP exists: /jyrac1-vip/192.168.1.51/192.168.1.0/255.255.255.0/eth2, hosting node jyrac1 | |
[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/srvctl config vip -n jyrac2 | |
VIP exists: /jyrac2-vip/192.168.1.53/192.168.1.0/255.255.255.0/eth2, hosting node jyrac2 |
启动 vip
[grid@jyrac1 ~]$ srvctl start vip -n jyrac1 | |
[grid@jyrac1 ~]$ srvctl start vip -n jyrac2 |
启动监听:
[grid@jyrac1 ~]$ srvctl start listener
启动数据库:
[grid@jyrac1 ~]$ srvctl start database -d jyzhao
确认 local_listener 信息:
检查 local_listener 信息,如果不正确需要修改,我这里查询是正确的。
-- 两个节点分别确认: | |
show parameter local_listener | |
-- 修改: | |
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.51)(PORT=1521))' sid='jyzhao1'; | |
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.53)(PORT=1521))' sid='jyzhao2'; |
5.3 修改 SCAN VIP
查看 SCAN VIP 当前设置:
[grid@jyrac1 ~]$ srvctl config scan | |
SCAN name: jyrac-scan, Network: 1/192.168.1.0/255.255.255.0/eth2 | |
SCAN VIP name: scan1, IP: /jyrac-scan/192.168.56.160 |
停止 scan_listener 和 scan 资源
[ | ]$ srvctl stop scan_listener|
[ | ]$ srvctl stop scan|
-- 确认已停止 | |
[ | ]$ srvctl status scan_listener|
SCAN Listener LISTENER_SCAN1 is enabled | |
SCAN listener LISTENER_SCAN1 is not running | |
[ | ]$ srvctl status scan|
SCAN VIP scan1 is enabled | |
SCAN VIP scan1 is not running |
使用 root 用户修改 SCAN VIP
[ | ]|
注意:root 用户执行修改,且确认 /etc/hosts 映射关系已修改为新的scan VIP。 |
修改并启动资源
[grid@jyrac1 ~]$ srvctl modify scan_listener -u | |
[grid@jyrac1 ~]$ srvctl start scan_listener | |
注意:执行后确认 scan_listener 和 scan 都已经启动。 |
确认修改成功
[grid@jyrac1 ~]$ srvctl config scan | |
SCAN name: jyrac-scan, Network: 1/192.168.1.0/255.255.255.0/eth2 | |
SCAN VIP name: scan1, IP: /jyrac-scan/192.168.1.60 | |
[grid@jyrac1 ~]$ srvctl config scan_listener | |
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521 |
查看整个集群状态正常:
[grid@jyrac1 ~]$ crsctl stat res -t | |
-------------------------------------------------------------------------------- | |
NAME TARGET STATE SERVER STATE_DETAILS | |
-------------------------------------------------------------------------------- | |
Local Resources | |
-------------------------------------------------------------------------------- | |
ora.DATA1.dg | |
ONLINE ONLINE jyrac1 | |
ONLINE ONLINE jyrac2 | |
ora.FRA1.dg | |
ONLINE ONLINE jyrac1 | |
ONLINE ONLINE jyrac2 | |
ora.LISTENER.lsnr | |
ONLINE ONLINE jyrac1 | |
ONLINE ONLINE jyrac2 | |
ora.OCR1.dg | |
ONLINE ONLINE jyrac1 | |
ONLINE ONLINE jyrac2 | |
ora.asm | |
ONLINE ONLINE jyrac1 Started | |
ONLINE ONLINE jyrac2 Started | |
ora.gsd | |
OFFLINE OFFLINE jyrac1 | |
OFFLINE OFFLINE jyrac2 | |
ora.net1.network | |
ONLINE ONLINE jyrac1 | |
ONLINE ONLINE jyrac2 | |
ora.ons | |
ONLINE ONLINE jyrac1 | |
ONLINE ONLINE jyrac2 | |
ora.registry.acfs | |
ONLINE ONLINE jyrac1 | |
ONLINE ONLINE jyrac2 | |
-------------------------------------------------------------------------------- | |
Cluster Resources | |
-------------------------------------------------------------------------------- | |
ora.LISTENER_SCAN1.lsnr | |
1 ONLINE ONLINE jyrac1 | |
ora.cvu | |
1 ONLINE ONLINE jyrac2 | |
ora.jyrac1.vip | |
1 ONLINE ONLINE jyrac1 | |
ora.jyrac2.vip | |
1 ONLINE ONLINE jyrac2 | |
ora.jyzhao.db | |
1 ONLINE ONLINE jyrac1 Open | |
2 ONLINE ONLINE jyrac2 Open | |
ora.oc4j | |
1 ONLINE ONLINE jyrac1 | |
ora.scan1.vip | |
1 ONLINE ONLINE jyrac1 |
至此,修改 Oracle 11g RAC 的 public IP、VIP、SCAN VIP 就算完成了。
6. 修改 Private IP
因为很少会遇到修改 Private IP 的需求,所以将其独立成一节。
6.1 备份并确认 CRS 集群正常
从 Oracle 11.2 GI 开始,私有网络配置不仅仅存在 ocr 中,还存在 gpnp profile 中,所以首先需要备份 profile.xml
–MOS 上的说明:
Please take a backup of profile.xml on all cluster nodes before proceeding, as grid user:
$ cd $GRID_HOME/gpnp/
-- 节点 1 备份:[grid@jyrac1 ~]$ cd /opt/app/11.2.0/grid/gpnp/jyrac1/profiles/peer/ | |
[grid@jyrac1 peer]$ cp -p profile.xml profile.xml.bk | |
-- 节点 2 备份:[grid@jyrac2 ~]$ cd /opt/app/11.2.0/grid/gpnp/jyrac2/profiles/peer/ | |
[grid@jyrac2 peer]$ cp -p profile.xml profile.xml.bk |
确认 CRS 集群在各节点启动:
[grid@jyrac1 ~]$ olsnodes -s | |
jyrac1 Active | |
jyrac2 Active |
6.2 设定新的私网信息
oifcfg getif
oifcfg setif -global
[ | ]|
eth3 10.10.10.0 global cluster_interconnect | |
eth2 192.168.1.0 global public |
这里私网网段没有变化,不用修改。
6.3 root 用户在所有节点关闭并禁用集群
crsctl stop crs
crsctl disable crs
[ | ]|
[ | ]|
[ | ]|
[ | ]
6.4 OS 层修改私有网卡地址
ifconfig -a
ping
修改私有网卡 IP 并重启:
[ | ]|
[ | ]|
[ | ]
vi /etc/hosts 修改 private ip 部分为:
#private ip | |
10.10.10.50 jyrac1-priv | |
10.10.10.52 jyrac2-priv |
6.5 root 用户在所有节点启用并启动集群
crsctl enable crs
crsctl start crs
root 用户在所有节点启用并启动集群:
[ | ]|
[ | ]|
[ | ]|
[ | ]
6.6 删除旧值
$ oifcfg delif -global
检查集群状态,测试应用连接,一切正常。
至此,所有工作已经完成,不但完整学习了 Oracle 11g RAC 各种 IP 的修改,而且局域网其他机器也可以愉快的访问到这个测试环境进行测试了,提高了我的工作效率,真是一举两得 ^_^。
Reference
- How to Modify Public Network Information including VIP in Oracle Clusterware (Doc ID 276434.1)
- How to Modify Private Network Information in Oracle Clusterware (文档 ID 283684.1)
- How to Modify SCAN Setting or SCAN Listener Port after Installation (文档 ID 972500.1)
- How to update the IP address of the SCAN VIP resources (ora.scan{n}.vip) (文档 ID 952903.1)
更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-08/146103.htm
