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

  • 2019 年 10 月 11 日
  • 筆記

今天小麥苗給大家分享的是如何修改集群的公網信息

如何修改集群的公網信息

文檔內容

適用於:

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 平台),WINDOWSSystem32driversetchosts 文件(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/

● 本系列題目來源於作者的學習筆記,部分整理自網絡,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

● 題目解答若有不當之處,還望各位朋友批評指正,共同進步