天天看點

Oracle CRS的管理與維護

CRS提供了很多指令可以管理和檢視叢集服務狀态,常用的有crs_stat、crs_start、crs_stop、crsctl等,這裡依次介紹。

1、 檢視叢集狀态

 通過crs_stat指令可以檢視叢集中所有資源的狀态,包括資源狀态、資源運作在哪個節點上、資源類型等資訊。例如:

  1. [[email protected] ~]$ crs_stat –t  
  2. Name           Type           Target    State     Host          
  3. ------------------------------------------------------------  
  4. ora....SM1.asm application    ONLINE    ONLINE    node-rac1     
  5. ora....C1.lsnr application    ONLINE    ONLINE    node-rac1     
  6. ora....ac1.gsd application    ONLINE    ONLINE    node-rac1     
  7. ora....ac1.ons application    ONLINE    ONLINE    node-rac1     
  8. ora....ac1.vip application    ONLINE    ONLINE    node-rac1     
  9. ora....SM2.asm application    ONLINE    ONLINE    node-rac2     
  10. ora....C2.lsnr application    ONLINE    ONLINE    node-rac2     
  11. ora....ac2.gsd application    ONLINE    ONLINE    node-rac2     
  12. ora....ac2.ons application    ONLINE    ONLINE    node-rac2     
  13. ora....ac2.vip application    ONLINE    ONLINE    node-rac2     
  14. ora.racdb.db   application    ONLINE    ONLINE    node-rac2     
  15. ora....b1.inst application    ONLINE    ONLINE    node-rac1     
  16. ora....b2.inst application    ONLINE    ONLINE    node-rac2     
  17. ora....test.cs application    ONLINE    ONLINE    node-rac2     
  18. ora....db1.srv application    ONLINE    ONLINE    node-rac1     
  19. ora....db2.srv application    ONLINE    ONLINE    node-rac2  

如果要更詳細的了解每個資源的名稱及狀态,還可以使用“crs_stat -l”指令,例如:

  1. [[email protected] ~]$crs_stat -l|head -n 15  
  2. NAME=ora.node-rac1.ASM1.asm  
  3. TYPE=application 
  4. TARGET=ONLINE 
  5. STATE=ONLINE on node-rac1  
  6. NAME=ora.node-rac1.LISTENER_NODE-RAC1.lsnr  
  7. TYPE=application 
  8. TARGET=ONLINE 
  9. STATE=ONLINE on node-rac1  
  10. NAME=ora.node-rac1.gsd  
  11. TYPE=application 
  12. TARGET=ONLINE 
  13. STATE=ONLINE on node-rac1  

 可以看到,這個輸出中包含了每個服務完整的名稱和運作狀态。通過了解節點運作狀态,有助于對RAC叢集的管理和維護。

還可以使用crs_stat -p <resource_name> 來檢視資源的屬性情況,包括依賴關系等等,例如:

  1. [[email protected] ~]$crs_stat -p  ora.node-rac2.LISTENER_NODE-RAC2.lsnr  

2.1 crs_stop與crs_start指令

通過crs_stop可以友善的關閉某個服務資源,例如:

  1. [[email protected] admin]$ crs_stop  ora.node-rac1.LISTENER_NODE-RAC1.lsnr  
  2. Attempting to stop `ora.node-rac1.LISTENER_NODE-RAC1.lsnr` on member `node-rac1`  
  3. Stop of `ora.node-rac1.LISTENER_NODE-RAC1.lsnr` on member `node-rac1` succeeded.  

此時,檢視node-rac1節點的LISTENER服務狀态:

  1. [[email protected] ~]$ crs_stat -t|grep  lsnr  
  2. ora....C1.lsnr application    OFFLINE   OFFLINE                 
  3. ora....C2.lsnr application    ONLINE    ONLINE    node-rac2   

從輸出可知,node-rac1節點的LISTENER服務已經處于OFFLINE狀态了。

接着啟動node-rac1節點的LISTENER服務:

  1. [[email protected] ~]$crs_start  ora.node-rac1.LISTENER_NODE-RAC1.lsnr  
  2. Attempting to start `ora.node-rac1.LISTENER_NODE-RAC1.lsnr` on member `node-rac1`  
  3. Start of `ora.node-rac1.LISTENER_NODE-RAC1.lsnr` on member `node-rac1` succeeded.  

其實RAC資料庫的監聽還可以通過如下方式啟動和關閉:

  1. [[email protected] ~]$lsnrctl start LISTENER_NODE-RAC1  
  2. [[email protected] ~]$lsnrctl stop LISTENER_NODE-RAC1  

有時候,可能需要将叢集資源全部關閉,可以通過如下指令完成:

  1. [[email protected] ~]$ crs_stop  -all  

也通過一個指令将叢集所有資源全部啟動,操作如下:

  1. [[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使用者身份:

  1. [[email protected] ~]#/app/oracrs/product/11.0.6/crs/bin/crsctl stop crs  
  2. Stopping resources.   
  3. This could take several minutes.  
  4. Successfully stopped Oracle Clusterware resources   
  5. Stopping Cluster Synchronization Services.   
  6. Shutting down the Cluster Synchronization Services daemon.   
  7. Shutdown request successfully issued.  

3、啟動與關閉CRS

在RAC資料庫中,CRS接管了資料庫的啟動和關閉等操作,叢集節點的執行個體随着CRS服務的啟動而自動啟動,但是crs也可以進行手工啟動和關閉。

管理CRS服務的指令如下:

[[email protected] ~]# /etc/init.d/init.crs {stop|start|enable|disable}

例如,要關閉某個節點的CRS服務,可以執行如下操作:

  1. [[email protected] ~]# /etc/init.d/init.crs  stop  
  2. Shutting down Oracle Cluster Ready Services (CRS):  
  3. Sep 08 10:57:14.806 | INF | daemon shutting down  
  4. Stopping resources.   
  5. This could take several minutes.  
  6.  Successfully stopped Oracle Clusterware resources   
  7. Stopping Cluster Synchronization Services.   
  8. Shutting down the Cluster Synchronization Services daemon.   
  9. Shutdown request successfully issued.  
  10. 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啟動後,主要有以下四個背景程序:

  1. [[email protected] ~]$ ps -ef|grep d.bin  
  2. root   5166  4186  0 Sep07 ? 00:02:33 /app/oracrs/product/11.0.6/crs/bin/crsd.bin reboot  
  3. oracle  5176  5170  0 Sep07 ? 00:00:05 /app/oracrs/product/11.0.6/crs/bin/evmd.bin  
  4. oracle  5840  5309  0 Sep07 ? 00:01:04 /app/oracrs/product/11.0.6/crs/bin/ocssd.bin  
  5. oracle  6306     1  0 Sep07 ? 00:00:00 /app/oracrs/product/11.0.6/crs/bin/oclskd.bin  
  6. 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

例如:

  1. [[email protected] ~]$ crsctl query css votedisk  
  2.  0.     0    /dev/raw/raw3  
  3.  1.     0    /dev/raw/raw4  
  4.  2.     0    /dev/raw/raw5  
  5. 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使用者身份,例如:

  1. [[email protected] ~]#/app/oracrs/product/11.0.6/crs/bin/crsctl \   
  2. >delete css votedisk  /dev/raw/raw5  
  3. Successful deletion of voting disk /dev/raw/raw5.  
  4. [[email protected] ~]$ crsctl query css votedisk  
  5.  0.     0    /dev/raw/raw3  
  6.  1.     0    /dev/raw/raw4  

(5)添加voting disk鏡像盤

添加一塊表決磁盤時,執行如下指令:

crsctl add css votedisk /dev/raw/raw5 -force

這個操作需要root使用者身份,例如:

  1. [[email protected] ~]#/app/oracrs/product/11.0.6/crs/bin/crsctl add css votedisk /dev/raw/raw5                                                             Now formatting voting disk: /dev/raw/raw5.  
  2. Successful addition of voting disk /dev/raw/raw5.  
  3. [[email protected] ~]$ crsctl query css votedisk  
  4. crsctl query css votedisk  
  5.  0.     0    /dev/raw/raw3  
  6.  1.     0    /dev/raw/raw4  
  7.  2.     0    /dev/raw/raw5  

5、管理OCR

 OCR磁盤主要用于記錄節點成員的配置資訊,如資料庫、服務、執行個體、vip位址、監聽器、應用程序等CRS資源配置資訊,OCR可以存儲在裸裝置或者群集檔案系統上。

(1)檢查ocr設定

可以通過如下指令檢視目前的OCR設定:

  1. [[email protected] ~]$ ocrcheck  
  2. Status of Oracle Cluster Registry is as follows :  
  3.          Version:            2  
  4.          Total space (kbytes):     4000280  
  5.          Used space (kbytes):        3840  
  6.          Available space (kbytes) :     3996440  
  7.          ID:   1806962807  
  8.          Device/File Name:  /dev/raw/raw1  
  9.                                     Device/File integrity check succeeded  
  10.          Device/File Name: /dev/raw/raw2  
  11.                                     Device/File integrity check succeeded  
  12.          Cluster registry integrity check succeeded  

 (2)OCR的備份與恢複

 預設情況下,Oracle每四個小時自動備份一次OCR,并儲存三個有效版本,但是僅儲存在叢集的某一個節點上。

要檢視自動備份OCR檔案的路徑,執行如下指令:

  1. [[email protected] ~]$ocrconfig -showbackup  
  2. node-rac2     2011/03/11 13:10:27     /app/crs/product/11.0.6/crs/cdata/rac-cluster/backup00.ocr  
  3. node-rac2     2011/03/11 09:10:25     /app/crs/product/11.0.6/crs/cdata/rac-cluster/backup01.ocr  
  4. node-rac2     2011/03/11 05:10:24     /app/crs/product/11.0.6/crs/cdata/rac-cluster/backup02.ocr  
  5. node-rac2     2011/03/10 21:10:20     /app/crs/product/11.0.6/crs/cdata/rac-cluster/day.ocr  
  6. 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裝置,例如:

  1. [[email protected] ~]$more /etc/oracle/ocr.loc  
  2. ocrconfig_loc=/dev/raw/raw1  
  3. ocrmirrorconfig_loc=/dev/raw/raw2  
  4. ocrmirrorconfig_loc=/dev/raw/raw11  
  5. 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為例

  1.  [[email protected] install]# /app/oracrs/product/11.0.6/crs/install/rootdeinstall.sh   
  2. Verifying existence of ocr.loc file  
  3. Removing contents from OCR mirror device  
  4. 2560+0 records in  
  5. 2560+0 records out  
  6. 10485760 bytes (10 MB) copied, 3.90308 seconds, 2.7 MB/s  
  7. Removing contents from OCR device  
  8. 2560+0 records in  
  9. 2560+0 records out  
  10. 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。

Oracle CRS的管理與維護

(4)删除剩餘其它檔案

CRS解除安裝程式可以删除大部分安裝程式,但是并不能完全解除安裝,是以需要手動删除未解除安裝的一些檔案,在叢集所有節點上執行如下删除指令:

  1. rm -rf /app/oracrs/product/11.0.6/crs/  
  2. /bin/rm -rf /var/tmp/.oracle  
  3. /bin/rm -f /etc/oraInst.loc  
  4. rm -rf /etc/oracle/  
  5. rm -f /etc/oratab  

所有操作執行完畢後,重新開機叢集的每個節點,重新安裝CRS即可。