■ 陜西 王金國 孫健
在日常生產以及網絡安全管理過程中,我們有時會遇到數據庫集群系統搬遷、主備切換等情況以及修改數據庫服務端口的情況,要求修改集群IP地址以及數據庫服務端口號,當Oracle數據庫運行在單機模式下時,這些操作并不需要特別的技術準備即可完成。但當數據庫運行在多機并行集群(RAC)模式下時,修改數據庫的基礎配置過程就具有很強的技術性。
如果在Oracle 12c集群環境中,網絡端口號、子網和掩碼不變,只更改公共地址(Public IP),那就很容易了,Oracle集群不需要做任何修改,只需要在操作系統級別上做修改即可。用戶可以直接使用grid用戶執行命令“crsctl stop cluster –all”關閉Oracle集群。使用操作系統命令修改所有主機節點上的重新定義的公共主機IP地址并修改/etc/hosts文件中主機名對應的IP行,直到該集群的所有公共主機IP地址修改完為止。之后使用grid用戶執行命令“crsctl start cluster –all”重啟Oracle集群。
當Oracle 12c集群環境更改子網、掩碼、操作系統網絡接口時,需要從集群配置信息(OCR)中刪除原端口等網絡定義信息,并將新的配置寫入。為了更好的說明這一過程,筆者以實際實例將子網從10.2.156.0更改為10.2.166.0,用戶需要首先按照規劃的相應地址以及網段在操作系統層進行地址修改,之后以grid用戶執行命令“$CRS_HOME/bin/oifcfg delif-global en4/10.2.156.0”“$CRS_HOME/bin/oifcfg setif -global en4/10.2.166.0:public”,確認更改已生效后,重啟ORACLE集群即可。
Oracle并行集群環境中,當集群服務激活后,VIP地址以及SCAN地址才會激活并提供給外部用戶訪問。對這些內容的修改,屬于集群系統管理的高級內容之一。
(1)更改集群節點VIP地址方法:
當對集群VIP地址進行修改時,需要用grid用戶身份執行命令“srvctl config nodeapps–a”查看VIP地址信息,執行命令“crsctl status res–t”校驗VIP狀態,之后使用命令停止資源,例如:用戶使用命令“srvctl stop instance -d RACDB -n racnode1”停止racnode1節點上的RACDB數據庫實例,使用命令“srvctl stop vip -n racnode1–f”停止racnode1節點上的vip服務,注意:要加上-f參數,否則將出現如下錯誤:
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
之后用戶更改定義的新的VIP地址、子網、掩碼和VIP主機名,確認/etc/hosts文件已經修改為新的地址,以root用戶執行“srvctl modify nodeapps-n racnode1 -A racnode1-nvip/255.255.255.0/en4”“crsctl stat res ora.racnode1.vip -p”修改VIP地址,使用命令“srvctl config nodeapps–a”校驗改變,以grid用戶身份執行$“srvctl start vip -n racnode1 ”“srvctl start instance -d RACDB -n racnode1”啟動資源,使用命令“crsctl stat res -t”校驗新的VIP地址已啟用(online);在集群的其它節點上執行以上修改過程。如果需要的話,修改listener.ora,tnsnames.ora和LOCAL_LISTENER/REMOTE_LISTENER參數。
(2)更改集群SCAN 地址
當用戶由于業務需要進行集群SCAN地址的修改或者添加時,需要滿足如下要求:
①當使用GNS時,本方法不適用。
②scan地址要求和公網、VIP處在同一子網內。
③本方法是基于使用/etc/hosts解析scan。
以下具體實例是將原scan地址192.168.2.50改為192.168.2.44的具體操作過程:
①修改集群系統各主機節點/etc/hosts文件,將原scan地址10.106.2.50改為10.106.2.44。
②執行命令“srvctl config scan”查看當前vip設置,系統回顯如下:
SCAN name:p570ddbfscan,Network:1/192.168.2.0/255.255.255.0/en5
SCAN VIP name:scan1,IP:/p570-scan/192.168.2.50
③用root用戶停止scan_listener和sacn vip,依次執行如下命令:
$GRID_HOME/bin/srvctl stop scan_listener
$GRID_HOME/bin/srvctl stop scan
$GRID_HOME/bin/srvctl status scan
$GRID_HOME/bin/srvctl status scan_listener
④用root用戶修改scan vip,執行命令如下:
$GRID_HOME/bin/srvctl modify scan -n p750-scan
⑤執行命令“srvctl config scan”檢查是否修改成功,系統回顯如下:
SCAN name:p570-scan,Network:1/192.168.2.0/2 55.255.255.0/en5
SCAN VIP name:scan1,IP:/p570-scan/192.168.2.44
⑥啟動scan和scan_listener:
$GRID_HOME/bin/srvctl start scan
$GRID_HOME/bin/srvctl start scan_listener
至此集群系統的相關IP地址修改完成。
隨著近年來網絡犯罪形式的不斷升級,Oracle數據庫定義的默認服務端口“1521”已經成為了網絡犯罪者日常進行試探和攻擊的端口之一,這給網絡安全帶來不少壓力。用戶修改Oracle數據庫服務端口是網絡安全防范的基本技術措施之一。集群環境下修改服務端口同樣要比單機環境技術能力要求稍高一些,筆者同樣以將RAC 默認本地監聽端口號“1521”修改為“9999”為例,詳細進行講解。
當進行端口修改時,用戶需要使用“grid”用戶執行“crsctl status res-t”“lsnrctl status”檢查集群服務以及監聽服務狀態,使用命令“srvctl stop listener”停止本地監聽,通過執行命令“srvctl config listener”確認當前監聽配置,使用命令“srvctl modify listener -p 9999”將缺省1521端口修改為9999端口,完成后重起監聽服務。
此時監聽雖然已經進行了修改,如果在單實例數據庫系統中,到此應該就已經完成了更改。但對于集群系統這只是完成了端口修改的前半部分,外部用戶此時依然無法對集群數據庫進行連接和訪問。還需要對數據庫初始化參數文件(Spfile)的本地監聽端口號進行修改,用戶需要使用“oracle”用戶使用“sqlplus/as sysdba”登錄數據庫的相應節點并使用“alter system set local_lis tener='(ADDRESS=(PR OTOCOL=TCP)(HOST=IPVIP1)(PORT=9999))'sid=
使用命令“srvctl stop scan_listener”“srvctl config scan_listener”“srvctl modify scan_listener -p 9999”“srvctl start scan_listener”完成對集群數據庫scan監聽(listener)端口的修改,以“oracle”用戶登錄通過“sqlplus/ as sysdba”執行命令“alter system set remote_listener='SCAN_NAME:9999' ;”完成Oracle集群數據庫初始化參數文件(SPFILE)的scan端口修改。
很多年前當我們使用單機愉快玩耍的時候,很難理解為什么那么工程師維護著網絡、小型機、數據庫會變成一種職業。
隨著我們有幸進入這個領域,原來小時候我們的想法是那么天真,系統的復雜度是隨著規模不斷擴大的,企業線上業務,在應用不能終止訪問的要求下,保證數據流的持續越來越成為一個重要課題,然而為此提出的技術解決方案本身又增加了更高的復雜度,了解和掌握這些復雜度,并將這些復雜度通過技術能力變成一項簡單的操作流程,這是工程師團隊存在的意義。