適用於:
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 對應的主機名或者公網的子網、網絡掩碼等信息,請按照本文介紹的過程。服務器
詳細信息
狀況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