CRS提供了很多指令可以管理和檢視叢集服務狀态,常用的有crs_stat、crs_start、crs_stop、crsctl等,這裡依次介紹。
1、 檢視叢集狀态
通過crs_stat指令可以檢視叢集中所有資源的狀态,包括資源狀态、資源運作在哪個節點上、資源類型等資訊。例如:
- [[email protected] ~]$ crs_stat –t
- Name Type Target State Host
- ------------------------------------------------------------
- ora....SM1.asm application ONLINE ONLINE node-rac1
- ora....C1.lsnr application ONLINE ONLINE node-rac1
- ora....ac1.gsd application ONLINE ONLINE node-rac1
- ora....ac1.ons application ONLINE ONLINE node-rac1
- ora....ac1.vip application ONLINE ONLINE node-rac1
- ora....SM2.asm application ONLINE ONLINE node-rac2
- ora....C2.lsnr application ONLINE ONLINE node-rac2
- ora....ac2.gsd application ONLINE ONLINE node-rac2
- ora....ac2.ons application ONLINE ONLINE node-rac2
- ora....ac2.vip application ONLINE ONLINE node-rac2
- ora.racdb.db application ONLINE ONLINE node-rac2
- ora....b1.inst application ONLINE ONLINE node-rac1
- ora....b2.inst application ONLINE ONLINE node-rac2
- ora....test.cs application ONLINE ONLINE node-rac2
- ora....db1.srv application ONLINE ONLINE node-rac1
- ora....db2.srv application ONLINE ONLINE node-rac2
如果要更詳細的了解每個資源的名稱及狀态,還可以使用“crs_stat -l”指令,例如:
- [[email protected] ~]$crs_stat -l|head -n 15
- NAME=ora.node-rac1.ASM1.asm
- TYPE=application
- TARGET=ONLINE
- STATE=ONLINE on node-rac1
- NAME=ora.node-rac1.LISTENER_NODE-RAC1.lsnr
- TYPE=application
- TARGET=ONLINE
- STATE=ONLINE on node-rac1
- NAME=ora.node-rac1.gsd
- TYPE=application
- TARGET=ONLINE
- STATE=ONLINE on node-rac1
可以看到,這個輸出中包含了每個服務完整的名稱和運作狀态。通過了解節點運作狀态,有助于對RAC叢集的管理和維護。
還可以使用crs_stat -p <resource_name> 來檢視資源的屬性情況,包括依賴關系等等,例如:
- [[email protected] ~]$crs_stat -p ora.node-rac2.LISTENER_NODE-RAC2.lsnr
2.1 crs_stop與crs_start指令
通過crs_stop可以友善的關閉某個服務資源,例如:
- [[email protected] admin]$ crs_stop ora.node-rac1.LISTENER_NODE-RAC1.lsnr
- Attempting to stop `ora.node-rac1.LISTENER_NODE-RAC1.lsnr` on member `node-rac1`
- Stop of `ora.node-rac1.LISTENER_NODE-RAC1.lsnr` on member `node-rac1` succeeded.
此時,檢視node-rac1節點的LISTENER服務狀态:
- [[email protected] ~]$ crs_stat -t|grep lsnr
- ora....C1.lsnr application OFFLINE OFFLINE
- ora....C2.lsnr application ONLINE ONLINE node-rac2
從輸出可知,node-rac1節點的LISTENER服務已經處于OFFLINE狀态了。
接着啟動node-rac1節點的LISTENER服務:
- [[email protected] ~]$crs_start ora.node-rac1.LISTENER_NODE-RAC1.lsnr
- Attempting to start `ora.node-rac1.LISTENER_NODE-RAC1.lsnr` on member `node-rac1`
- Start of `ora.node-rac1.LISTENER_NODE-RAC1.lsnr` on member `node-rac1` succeeded.
其實RAC資料庫的監聽還可以通過如下方式啟動和關閉:
- [[email protected] ~]$lsnrctl start LISTENER_NODE-RAC1
- [[email protected] ~]$lsnrctl stop LISTENER_NODE-RAC1
有時候,可能需要将叢集資源全部關閉,可以通過如下指令完成:
- [[email protected] ~]$ crs_stop -all
也通過一個指令将叢集所有資源全部啟動,操作如下:
- [[email protected] ~]$ crs_start -all
2.2 crsctl指令
crsctl指令功能非常強大,它可以檢查CRS背景程序運作狀态、可以添加/删除表決磁盤、可以啟動/關閉叢集所有資源、可以啟動/關閉CRS服務等等,下面簡單介紹下此指令的幾個常用參數組合。
檢測node-rac1節點的狀态:
[[email protected] ~]$crsctl check cluster -node node-rac1
node-rac1 is ONLINE
檢查cssd服務的運作狀态:
[[email protected] ~]$crsctl check cssd
Cluster Synchronization Services appears healthy
檢查CRS的運作版本:
[[email protected] ~]$crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [11.1.0.6.0]
檢視css加載的子產品:
[[email protected] ~]$ crsctl lsmodules css
The following are the Cluster Synchronization Services modules::
CSSD
COMMCRS
COMMNS
停止本節點所有CRS資源:
[[email protected] ~]$crsctl stop resources
Stopping resources.
This could take several minutes.
Successfully stopped Oracle Clusterware resources
啟動本節點所有CRS資源:
[[email protected] ~]$crsctl start resources
Starting resources.
Successfully started CRS resources
在本節點關閉CRS服務,此操作需要root使用者身份:
- [[email protected] ~]#/app/oracrs/product/11.0.6/crs/bin/crsctl stop crs
- Stopping resources.
- This could take several minutes.
- Successfully stopped Oracle Clusterware resources
- Stopping Cluster Synchronization Services.
- Shutting down the Cluster Synchronization Services daemon.
- Shutdown request successfully issued.
3、啟動與關閉CRS
在RAC資料庫中,CRS接管了資料庫的啟動和關閉等操作,叢集節點的執行個體随着CRS服務的啟動而自動啟動,但是crs也可以進行手工啟動和關閉。
管理CRS服務的指令如下:
[[email protected] ~]# /etc/init.d/init.crs {stop|start|enable|disable}
例如,要關閉某個節點的CRS服務,可以執行如下操作:
- [[email protected] ~]# /etc/init.d/init.crs stop
- Shutting down Oracle Cluster Ready Services (CRS):
- Sep 08 10:57:14.806 | INF | daemon shutting down
- Stopping resources.
- This could take several minutes.
- Successfully stopped Oracle Clusterware resources
- Stopping Cluster Synchronization Services.
- Shutting down the Cluster Synchronization Services daemon.
- Shutdown request successfully issued.
- Shutdown has begun. The daemons should exit soon.
CRS服務關閉後,與此節點相關的叢集執行個體也将随之停止,同時此節點的vip位址也将轉移到另一個節點。
接着啟動CRS服務,執行如下操作:
[[email protected] ~]# /etc/init.d/init.crs start
Startup will be queued to init within 30 seconds.
CRS啟動後,主要有以下四個背景程序:
- [[email protected] ~]$ ps -ef|grep d.bin
- root 5166 4186 0 Sep07 ? 00:02:33 /app/oracrs/product/11.0.6/crs/bin/crsd.bin reboot
- oracle 5176 5170 0 Sep07 ? 00:00:05 /app/oracrs/product/11.0.6/crs/bin/evmd.bin
- oracle 5840 5309 0 Sep07 ? 00:01:04 /app/oracrs/product/11.0.6/crs/bin/ocssd.bin
- oracle 6306 1 0 Sep07 ? 00:00:00 /app/oracrs/product/11.0.6/crs/bin/oclskd.bin
- oracle 30233 30185 0 10:01 pts/1 00:00:00 grep d.bin
下面簡單介紹下每個程序的含義:
ocssd:用于管理與協調叢集中各節點的關系,并用于節點間通信。該程序非常重要,如果這個程序異常中止,會導緻系統自動重新開機。在某些極端情況下,如果ocssd無法正常啟動,就會導緻作業系統循環重新開機。
crsd:監控節點各種資源,當某個資源發生異常時,自動重新開機或者切換該資源。
evmd:是一個基于背景的事件檢測程式。
oclskd:該守護程序是Oracle 11g(11.1.0.6)新增的一個背景程序,主要用于監控RAC資料庫節點執行個體,當某個執行個體挂起時,就重新開機該節點。
4、管理Voting disk
Voting disk(表決磁盤)主要用于記錄節點成員資訊,例如包含哪些節點成員、節點添加删除資訊的記錄等。
(1)檢視Voting disk
要檢視Voting disk資訊,可執行如下指令:
crsctl query css votedisk
例如:
- [[email protected] ~]$ crsctl query css votedisk
- 0. 0 /dev/raw/raw3
- 1. 0 /dev/raw/raw4
- 2. 0 /dev/raw/raw5
- Located 3 voting disk(s).
(2)備份Voting disk
Voting disk的資訊很重要,需要定期備份votedisk,例如:
[[email protected] ~]$dd if=/dev/raw/raw3 of=/tmp/votedisk.bak
這樣就把備份到了/tmp目錄下。
(3)恢複Voting disk
例如:
[[email protected] ~]$dd if=/tmp/votedisk.bak of=/dev/raw/raw3
(4)删除voting disk鏡像盤
如果要删除一塊表決磁盤,可以執行如下指令:
crsctl delete css votedisk /dev/raw/raw5 -force
這個操作需要root使用者身份,例如:
- [[email protected] ~]#/app/oracrs/product/11.0.6/crs/bin/crsctl \
- >delete css votedisk /dev/raw/raw5
- Successful deletion of voting disk /dev/raw/raw5.
- [[email protected] ~]$ crsctl query css votedisk
- 0. 0 /dev/raw/raw3
- 1. 0 /dev/raw/raw4
(5)添加voting disk鏡像盤
添加一塊表決磁盤時,執行如下指令:
crsctl add css votedisk /dev/raw/raw5 -force
這個操作需要root使用者身份,例如:
- [[email protected] ~]#/app/oracrs/product/11.0.6/crs/bin/crsctl add css votedisk /dev/raw/raw5 Now formatting voting disk: /dev/raw/raw5.
- Successful addition of voting disk /dev/raw/raw5.
- [[email protected] ~]$ crsctl query css votedisk
- crsctl query css votedisk
- 0. 0 /dev/raw/raw3
- 1. 0 /dev/raw/raw4
- 2. 0 /dev/raw/raw5
5、管理OCR
OCR磁盤主要用于記錄節點成員的配置資訊,如資料庫、服務、執行個體、vip位址、監聽器、應用程序等CRS資源配置資訊,OCR可以存儲在裸裝置或者群集檔案系統上。
(1)檢查ocr設定
可以通過如下指令檢視目前的OCR設定:
- [[email protected] ~]$ ocrcheck
- Status of Oracle Cluster Registry is as follows :
- Version: 2
- Total space (kbytes): 4000280
- Used space (kbytes): 3840
- Available space (kbytes) : 3996440
- ID: 1806962807
- Device/File Name: /dev/raw/raw1
- Device/File integrity check succeeded
- Device/File Name: /dev/raw/raw2
- Device/File integrity check succeeded
- Cluster registry integrity check succeeded
(2)OCR的備份與恢複
預設情況下,Oracle每四個小時自動備份一次OCR,并儲存三個有效版本,但是僅儲存在叢集的某一個節點上。
要檢視自動備份OCR檔案的路徑,執行如下指令:
- [[email protected] ~]$ocrconfig -showbackup
- node-rac2 2011/03/11 13:10:27 /app/crs/product/11.0.6/crs/cdata/rac-cluster/backup00.ocr
- node-rac2 2011/03/11 09:10:25 /app/crs/product/11.0.6/crs/cdata/rac-cluster/backup01.ocr
- node-rac2 2011/03/11 05:10:24 /app/crs/product/11.0.6/crs/cdata/rac-cluster/backup02.ocr
- node-rac2 2011/03/10 21:10:20 /app/crs/product/11.0.6/crs/cdata/rac-cluster/day.ocr
- node-rac2 2011/03/10 21:10:20 /app/crs/product/11.0.6/crs/cdata/rac-cluster/week.ocr
恢複OCR的方法也很簡單,例如:
[[email protected] ~]$ocrconfig –restore \
> /app/oracrs/product/11.0.6/crs/cdata/rac-cluster/backup01.ocr
其實OCR也可以通過手動的方式導出、導入,方法如下:
手動導出:ocrconfig -export /tmp/ocr_bak
手動導入:ocrconfig -import /tmp/ocr_bak
(3)添加OCR鏡像盤
向磁盤組中添加OCR磁盤的基本步驟如下:
執行指令crsctl stop crs停掉CRS服務
建立用于鏡像OCR的RAW裝置,例如:/dev/raw/raw11
執行“ocrconfig –export”指令導出OCR的資訊
修改/etc/oracle/ocr.loc檔案,添加新增的raw裝置,例如:
- [[email protected] ~]$more /etc/oracle/ocr.loc
- ocrconfig_loc=/dev/raw/raw1
- ocrmirrorconfig_loc=/dev/raw/raw2
- ocrmirrorconfig_loc=/dev/raw/raw11
- local_only=FALSE
執行指令“ocrconfig -import”将OCR備份資訊導入磁盤
檢查ocr設定資訊,看是否增加成功
最後用“crsctl start crs”啟動CRS服務
6、快速解除安裝CRS
CRS安裝非常簡單,但是如果CRS出現問題,需要重新安裝時,解除安裝CRS并不是一件輕松的事情,下面就重點講述下如何在Linux下解除安裝CRS程式。
(1)關閉CRS服務
在解除安裝CRS之前,必須要停止CRS服務,即執行:
/etc/init.d/init.crs stop
如果無法停止crs服務,那麼就将CRS服務禁用,即:
/etc/init.d/init.crs disable
然後重新開機系統。
(2)執行删除腳本
首先在叢集中的所有節點上執行$ORA_CRS_HOME/install/rootdelete.sh,這裡以節點node-rac1為例
- [[email protected] install]# /app/oracrs/product/11.0.6/crs/install/rootdeinstall.sh
- Verifying existence of ocr.loc file
- Removing contents from OCR mirror device
- 2560+0 records in
- 2560+0 records out
- 10485760 bytes (10 MB) copied, 3.90308 seconds, 2.7 MB/s
- Removing contents from OCR device
- 2560+0 records in
- 2560+0 records out
- 10485760 bytes (10 MB) copied, 3.84383 seconds, 2.7 MB/s
接着,在機(集)群中的任意一個節點上執行$ORA_CRS_HOME/install/rootdeinstall.sh。
(3)用圖形界面OUI解除安裝crs
首先在CRS安裝包目錄下啟動CRS安裝歡迎界面,然後在歡迎界面點選“Installed Products”,接着會彈出如下界面: 在這個界面中可以看到已經安裝的CRS資訊,點選右下角的“Remove”按鈕,開始解除安裝CRS。
(4)删除剩餘其它檔案
CRS解除安裝程式可以删除大部分安裝程式,但是并不能完全解除安裝,是以需要手動删除未解除安裝的一些檔案,在叢集所有節點上執行如下删除指令:
- rm -rf /app/oracrs/product/11.0.6/crs/
- /bin/rm -rf /var/tmp/.oracle
- /bin/rm -f /etc/oraInst.loc
- rm -rf /etc/oracle/
- rm -f /etc/oratab
所有操作執行完畢後,重新開機叢集的每個節點,重新安裝CRS即可。