Oracle 11g R2(GI)啟動過程
11gR2 叢集管理軟體(GI) 啟動順序和診斷方法簡介
在這篇文章裡我們會對11gR2GI 的啟動順序進行介紹,並且對常見的GI啟動時遇到的問題和對應的解決辦法進行介紹。
基本上我們可以把GI的啟動過程分成3個階段,ohasd階段,構建叢集階段,啟動資源階段。
首先,ohasd階段。
1. /etc/inittab檔案中的指令碼
h1:35:respawn:/etc/init.d/init.ohasd run
>/dev/null 2>&1 </dev/null
被調用,產生下面的進程
root 4865 1 0 Dec02 ? 00:01:01 /bin/sh /etc/init.d/init.ohasd
run
所以如果說你沒有發現這個進程,那麼說明
+init.ohasd 指令碼可能沒有被調用
+ os運行在不正確的層級
+ 一些S* ohasd指令碼掛起, 例如S96ohasd
+ GI沒有配置自動啟動(crsctl enable crs)
之後,ohasd.bin 進程會被啟動,這個時候OLR會被訪問,所以,如果ohasd.bin不能正常工作,就需要查看OLR是否存在而且能夠被正常訪問。OLR存放在$GRID_HOME/cdata/${HOSTNAME}.olr
2. ohasd.bin進程會啟動對應的agents(orarootagent,oraagent, cssdagnet 和 cssdmonitor) 來啟動叢集的初始化資源。如果說,您發現這些agent進程不能啟動,很多時候都是由於路徑$GRID_HOME/bin 下的可執行檔存在問題,例如,檔案使用權限設定有問題,檔案corruption.
接下來,構建叢集階段。
1. Mdnsd 進程透過多播(Multicast)發現叢集中的節點和所有的網卡資訊。所以,一定要確定叢集中的網卡支援多播。而且節點間的通訊正常。
2. Gpnpd 進程啟動,發布構建叢集所需要的bootstrap 資訊,並且在叢集的所有節點之間同步gpnp profile。當然,同步是透過mdnsd實現的。所以,如果是這個進程存在問題,您需要確認節點間的通訊正常,而且gpnp
profile (<gi_home>/gpnp/profiles/peer/profile.xml)存在而且可以被訪問。
3. Gipcd 進程啟動,這個進程負責管理叢集中所有的私網(cluster
interconnect)網卡。當然,私網資訊是通過gpnpd獲得的,所以,如果這個進程存在問題,您需要確認gpnpd 進程正常運行。
4. Ocssd.bin 進程啟動。這個進程首先通過gpnp profile中的資訊發現表決盤(Voting Disk),之後通過gpnpd 進程獲得叢集私網資訊,和其他的節點建立串連。所以,如果ocssd.bin不能正常運行,您需要確認一下的資訊
+ gpnp profile 存在而且可以被訪問。
+ gpnpd 進程正常運行。
+ 表決盤所在的asm disk 或裝置能夠正常被訪問。
+ 節點私網間的通訊正常。
5. 啟動其他的初始化進程:ora.ctssd, ora.asm, ora.cluster_interconnect.haip, ora.crf, ora.crsd
等。
注意:以上的過程是同時進行的。也就是說ocssd.bin, gpnpd.bin 和 gipcd.bin 同時啟動,直到gpnpd.bin正常運行,ocssd.bin 和 gipcd.bin 才能獲得相應的資訊,在gpnpd.bin沒有正常運行之前,ocssd.bin 和 gipcd.bin 中出現的無法訪問gpnp profile錯誤是可以忽略掉的。
最後,資源啟動階段。在這個階段,主要是通過crsd進程啟動各個資源。
1. Crsd進程啟動。這個進程需要訪問OCR,如果您的OCR是存放在ASM上,需要確保
ASM執行個體正常運行,並且OCR所在的ASM磁碟組已經裝載。如果OCR存放在裸裝置上,那麼需要確保對應的裝置正常運行。
2. Crsd 啟動對應的agents(orarootagent,
oraagent_<rdbms_owner>, oraagent_<gi_owner> )。如果agent不能啟動,很多時候都是由於路徑$GRID_HOME/bin 下的可執行檔存在問題,例如,檔案使用權限設定有問題,檔案corruption.
3. 所有的資源啟動。
ora.net1.network : 網路資源,這個資源負責管理叢集的公網,scanvip, vip,
listener資源都依賴於這個資源。所以,如果這個資源存在問題,vip, scanvip 和listener 都會offline,您需要檢查公網是否存在問題。
ora.<scan_name>.vip:scan對應的vip資源,最多可以有3個。
ora.<node_name>.vip : 節點對應的vip 資源
ora.<listener_name>.lsnr: 監聽程式資源。在這裡我們要注意,從11gR2開始,listener.ora檔案會自動產生,不再需要手動修改。
ora.LISTENER_SCAN<n>.lsnr: scan 監聽程式。
ora.<磁碟組名>.dg: ASM 磁碟組資源。這個資源會在磁碟組被mount時建立,dismount時刪除。
ora.<資料庫名>.db: 資料庫資源。在11gR2中執行個體資源已經不再存在了,新的資料庫資源會管理rac 資料庫的所有執行個體,而資料庫包含哪些執行個體,是通過資源參數“USR_ORA_INST_NAME@SERVERNAME(<node name> )”來決定的。另外,如果您的資料庫儲存在ASM磁碟上,那麼資料庫資源會依賴於對應的磁碟組資源,這個dependency是自動添加的。但是,如果資料庫被轉移到了其他的磁碟組之後,原有的dependancy不會被自動刪除,需要手動刪除(crsctl modify res ……)。
ora.<服務名>.svc:資料庫服務資源。從11gR2 開始,這個資源只有一個了,不會像10gR2一樣,每個資料庫服務資源套件含,srv 和cs 兩個資源。
ora.cvu :這個資源從11.2.0.2被引入,定期對叢集執行cluvfy操作,驗證叢集是否存在一些配置上的問題
ora.ons : ONS資源,和之前版本的功能,基本相同。
另外,我們對診斷GI啟動問題所需要查看的檔案進行簡單的介紹
$GRID_HOME/log/<node_name>/ocssd <==
ocssd.bin 日誌
$GRID_HOME/log/<node_name>/gpnpd <== gpnpd.bin 日誌
$GRID_HOME/log/<node_name>/gipcd <== gipcd.bin 日誌
$GRID_HOME/log/<node_name>/agent/crsd <== crsd.bin 日誌
$GRID_HOME/log/<node_name>/agent/ohasd <== ohasd.bin
日誌
$GRID_HOME/log/<node_name>/mdnsd <== mdnsd.bin 日誌
$GRID_HOME/log/<node_name>/client <== 使用者使用GI 工具(ocrdump, crsctl, ocrcheck, gpnptool等等)對叢集進行操作的日誌。
$GRID_HOME/log/<node_name>/ctssd <== ctssd.bin
日誌
$GRID_HOME/log/<node_name>/crsd <== crsd.bin 日誌
$GRID_HOME/log/<node_name>/cvu <== cluvfy 日誌輸出。
$GRID_HOME/bin/diagcollection.sh <== 通過這個指令碼獲得更全面的診斷記錄。
最後,叢集的通訊端檔案(/var/tmp/.Oracle
或 /tmp/.oracle),由於叢集中很多進程之間的通訊都是通過ipc實現的,所以,這些通訊端檔案一定要存在而且許可權正確。
以上,我們對GI啟動的順序和基本的診斷方法進行了簡單的介紹,希望能夠為大家在診斷GI啟動問題時能夠提供一些協助。
Oracle 11g 在RedHat Linux 5.8_x64平台的安裝手冊
Linux-6-64下安裝Oracle 12C筆記
在CentOS 6.4下安裝Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虛擬機器中安裝步驟
Debian 下 安裝 Oracle 11g XE R2