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

適用於:

Oracle Database - Enterprise Edition - 版本 11.2.0.3 到 12.1.0.2 [發行版 11.2 到 12.1]
本文檔所含信息適用於全部平臺node

用途

本文的目標是經過舉例說明的方式說明在 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, 可是不修改網卡、子網或網絡掩碼信息

若是隻須要修改公網 IP 地址,並且新的地址仍然在相同的子網,集羣層面不須要作任何修改,全部須要的修改是在 OS 層面反映 IP 地址的變化。oracle

1. 關閉 Oracle 集羣管理軟件
2. 在網絡層面,DNS 和 /etc/hosts 文件中修改 IP 地址
3. 從新啓動 Oracle 集羣管理軟件app

以上的修改可使用滾動的方式完成,例如:每次修改一個節點。框架

 

狀況3. 修改公網網卡,子網或網絡掩碼信息

若是修改涉及到了不一樣的子網(網絡掩碼)或者網卡,須要將 OCR 中已經存在的網卡信息刪除並從新添加新的信息。在如下的示例中子網從 10.2.156.0 被修改成 10.2.166.0,須要執行兩個步驟 –首先‘delif’,接下來 ‘setif’:ui

% $CRS_HOME/bin/oifcfg/oifcfg delif -global <if_name>[/<subnet>]
% $CRS_HOME/bin/oifcfg/oifcfg setif -global <if_name>/<subnet>: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。.net

注意:對於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 <node> -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 <db_name> -i <inst_name>   (對於 10.2.0.3 及以上版本,能夠忽略)
$ srvctl stop asm -n <node_name>                     (對於 10.2.0.3 及以上版本,能夠忽略)
$ srvctl stop nodeapps -n <node_name>

例如: 
$ srvctl stop instance -d RACDB -i RACDB1
$ srvctl stop asm -n racnode1
$ srvctl stop nodeapps -n racnode1


對於版本 11gR2, 使用 Grid Infrastructure 的擁有者執行下面的命令:

$ srvctl stop instance -d <db_name> -n <node_name>   (能夠忽略)
$ srvctl stop vip -n <node_name> -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 <node> -A <new_vip_address or new_vip_hostname>/<netmask>/<[if1[if2...]]>

例如:
# srvctl modify nodeapps -n racnode1 -A racnode1-nvip/255.255.255.0/eth2

 

注意:從版本 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 <network_number>] [-S <subnet>/<netmask>[/if1[|if2...]]

例如:
# srvctl modify network -k 1 -S 110.11.70.0/255.255.255.0/eth2

若是其餘屬性沒有變化,不須要修改 VIP 或 SCAN VIP。

 

* 一個 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 <node> -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 <node_name>       
$ srvctl start asm -n <node_name>               (對於 10.2.0.3 及以上版本,能夠忽略)
$ srvctl start instance -d <dbanme> -i <inst>   (對於 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 <node_name> 
$ srvctl start listener -n <node_name>
$ srvctl start instance -d <db_name> -n <node_name> (能夠忽略)

例如:

$ srvctl start vip -n racnode1 
$ srvctl start listener -n racnode1
$ srvctl start instance -d RACDB -n racnode1


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

 

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

注意:若是須要回退修改,那麼用原始值替換新值,而後從新運行命令。

 

參考

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

相關文章
相關標籤/搜索