Oracle 11g RAC 修改各類IP地址


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

這里先正常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
[root@jyrac1 ~]# cp /etc/hosts /etc/hosts.bak
[root@jyrac2 ~]# cp /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
[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/crsctl start crs
[root@jyrac2 ~]# /opt/app/11.2.0/grid/bin/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 ~]# /opt/app/11.2.0/grid/bin/oifcfg getif
eth2  192.168.56.0  global  public
eth3  10.10.10.0  global  cluster_interconnect

--刪除舊值並設定新值
[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/oifcfg delif -global eth2
[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/oifcfg setif -global eth2/192.168.1.0:public

--查看驗證修改成功:
[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/oifcfg getif
eth3  10.10.10.0  global  cluster_interconnect
eth2  192.168.1.0  global  public
[root@jyrac2 ~]# /opt/app/11.2.0/grid/bin/oifcfg getif
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設置:

[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/srvctl modify nodeapps -n jyrac1 -A 192.168.1.51/255.255.255.0/eth2
[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/srvctl modify nodeapps -n jyrac2 -A 192.168.1.53/255.255.255.0/eth2

再次驗證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資源

[grid@jyrac1 ~]$ srvctl stop scan_listener
[grid@jyrac1 ~]$ srvctl stop scan
--確認已停止
[grid@jyrac1 ~]$ srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is not running
[grid@jyrac1 ~]$ srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is not running

使用root用戶修改SCAN VIP

[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/srvctl modify scan -n jyrac-scan
注意: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/ /profiles/peer/
$ cp -p profile.xml profile.xml.bk

--節點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 / :cluster_interconnect

[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/oifcfg getif
eth3  10.10.10.0  global  cluster_interconnect
eth2  192.168.1.0  global  public

這里私網網段沒有變化,不用修改。

6.3 root用戶在所有節點關閉並禁用集群
crsctl stop crs
crsctl disable crs

[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/crsctl stop crs
[root@jyrac2 ~]# /opt/app/11.2.0/grid/bin/crsctl stop crs

[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/crsctl disable crs
[root@jyrac2 ~]# /opt/app/11.2.0/grid/bin/crsctl disable crs

6.4 OS層修改私有網卡地址
ifconfig -a
ping

修改私有網卡IP並重啟:

[root@jyrac1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth3
[root@jyrac1 ~]# ifdown eth3
[root@jyrac1 ~]# ifup eth3

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用戶在所有節點啟用並啟動集群:

[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/crsctl enable crs
[root@jyrac2 ~]# /opt/app/11.2.0/grid/bin/crsctl enable crs

[root@jyrac1 ~]# /opt/app/11.2.0/grid/bin/crsctl start crs
[root@jyrac2 ~]# /opt/app/11.2.0/grid/bin/crsctl start crs

6.6 刪除舊值
$ oifcfg delif -global <if_name>[/ ]
這里因為還是用的之前的網段,不需要操作。

檢查集群狀態,測試應用連接,一切正常。

至此,所有工作已經完成,不但完整學習了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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM