天天看點

管理OCR與Voting Disk(原創)

voting disk 概述 

http://czmmiao.iteye.com/blog/1577531

維護voting disk

注意:對voting disk的更改必須用root來進行,添加或删除voting disk都必須在crs資源關閉的情況下進行,同時即使在crs關閉情況下仍然需要使用-force參數 

檢視voting disk

# ./crsctl query css votedisk

 0.     0    /dev/raw/raw2

備份voting disk 

#dd if=/dev/raw/raw2 f=/home/oracle/voting_disk.bak 

恢複voting disk 

#dd if=/home/oracle/voting_disk.bak f=/dev/raw/raw2

添加和删除voting disk

# raw -qa

/dev/raw/raw1:  bound to major 8, minor 17

/dev/raw/raw2:  bound to major 8, minor 33

/dev/raw/raw3:  bound to major 8, minor 58

# ./crsctl stop crs

stopping resources.

successfully stopped crs resources

stopping cssd.

shutting down css daemon.

shutdown request successfully issued.

# ./crsctl add css votedisk /dev/raw/raw4 -force

now formatting voting disk: /dev/raw/raw4

clsfmt returned with error [4].

failed 9 to initailize votedisk /dev/raw/raw4.

# ./crsctl add css votedisk /dev/raw/raw3 -force

now formatting voting disk: /dev/raw/raw3

successful addition of votedisk /dev/raw/raw3. 

 1.     0    /dev/raw/raw4

 2.     0    /dev/raw/raw3

located 3 votedisk(s).

# ls -l /dev/raw/raw*

crw-rw---- 1 oracle oinstall   162, 1 jan  1 20:19 /dev/raw/raw1

crw-rw---- 1 oracle oinstall   162, 2 jan  1 20:18 /dev/raw/raw2

crw-rw---- 1 oracle oinstall   162, 3 jan  1 20:22 /dev/raw/raw3

-rw-r--r-- 1 root   root     10240000 jan  1 20:18 /dev/raw/raw4

可以看到在沒有/dev/raw/raw4裝置的情況下執行添加voting disk指令時,報錯并在/dev/raw/目錄下建立了raw4檔案,我們必須删除該檔案

# ./crsctl delete css votedisk /dev/raw/raw4 -force

successful deletion of votedisk /dev/raw/raw4.

crw-rw---- 1 oracle oinstall   162, 1 jan  1 20:34 /dev/raw/raw1

# rm -f /dev/raw/raw4 

 1.     0    /dev/raw/raw3

located 2 votedisk(s).

ocr概述

ocr 負責維護整個叢集的配置資訊,包括rac以及clusterware資源,包括的資訊有節點成員、資料庫、執行個體、服務、監聽器、應用程式等。為了解決叢集 的“健忘”問題,整個叢集會有一份配置ocr,最多兩分ocr,一個primary ocr和一個mirror ocr互為鏡像,以防ocr的單點故障。關于“健忘”可以參閱筆者的

http://czmmiao.iteye.com/admin/blogs/1629166

oracle 把叢集的配置檔案放在共享存儲上叫做ocr disk。 節點通過ocr process讀寫ocr。 但隻有一個節點能夠讀寫ocr disk 叫ocr master節點,其它節點通過本節點的ocr process 向master node的ocr process送出請求,由master ocr process完成實體讀寫,并同步所有節點ocr cache中的内容。就ocr而言,每個叢集都會有一個master節點,這個節點一半來說是叢集中生存時間最長的那個節點(生存時間最長也就意味着該節 點越穩定)。

我們在安裝clusterware的在選擇ocr的存儲位置時,如果選擇"normal redundancy",則會存儲兩份互相鏡像的ocr。如果選擇"external redundancy"則表明存儲本身已經坐了備援配置,不需要建立鏡像ocr。該位置會記錄在/etc/oracle/ocr.loc(linux)或 /var/opt/oracle/ocr.loc(solaris)中。

ocr存儲的配置資訊是以目錄樹的形式來記錄一系列“鍵-值”對應資訊 的。ocr記錄着 crs程序管理資源的所有配置資訊,大小約為100mb。ocr key:有3個大分支,分别是system.css,database 和crs。每個分支下面又有許多小分支。這些記錄的資訊隻能由root使用者修改。 

由于 ocr的資訊十分重要,oracle會每4小時隊其做一次備份,并且保留最後的3個備份,以及前一天、前一周的最後一個備份。這個備份由master node的crsd程序完成,備份的預設位置為$crs_home/crs/cdata/<cluster_name>目錄下。每次備份後, 備份檔案的名字會自動變更,以反映備份時間順序,最近一次備份叫做backup00.ocr。建議dba除了在本地保留這些備份外,還應在其他儲存設備上 保留一份備份,以防止意外的存儲故障。

ocrdump 

如果想閱讀ocr資訊,可以使用ocrdump指令将ocr的内容以ascii的方式列印出,但是這個指令不能用作ocr的備份恢複,隻能用作閱讀,

指令格式:ocrdump [-stdout] [filename] [-keyname name] [-xml]

參數說明:

-stdout:把内容列印輸出到螢幕上

filename:内容輸出到檔案中

-keyname:隻列印某個鍵及其子健内容

-xml:以xml格式列印輸出

示例:把system.css鍵的内容以.xml格式列印輸出到螢幕

#./ocrdump -stdout -keyname system.css -xml|more 

這個指令在執行過程中,會在$crs_home\log\<node_name>\client目錄下産生日志檔案,檔案名ocrdump_<pid>.log,如果指令執行出現問題,可以從這個日志檢視問題原因。

ocrcheck 

ocrcheck指令用于檢查ocr内容的一緻性,指令執行過程會在$crs_home\log\nodename\client目錄下産生ocrcheck_<pid>.log日志檔案。 這個指令不需要參數。

#./ocrcheck

status of oracle cluster registry is as follows :

         version                  :          2

         total space (kbytes)     :     163668

         used space (kbytes)      :       4348

         available space (kbytes) :     159320

         id                       : 1345945283

         device/file name         : /dev/raw/raw1

                                    device/file integrity check succeeded

                                    device/file not configured

         cluster registry integrity check succeeded

ocrconfig

檢視自動備份資訊

#./ocrconfig -help

$ ocrconfig -showbackup

czmmiao2     2012/12/26 17:26:16     /u01/app/oracle/product/10.2.0/db_1/cdata/crs

czmmiao2     2012/12/18 21:12:37     /u01/app/oracle/product/10.2.0/db_1/cdata/crs

czmmiao1     2012/12/16 21:54:20     /u01/app/oracle/product/10.2.0/db_1/cdata/crs

$ ls -l /u01/app/oracle/product/10.2.0/db_1/cdata/crs

total 29880

-rw-r--r-- 1 root   root     5083136 dec  7 16:05 backup00.ocr

-rw-r--r-- 1 root   root     5083136 nov 27 19:14 backup01.ocr

-rw-r--r-- 1 oracle dba      5083136 nov 26 22:32 backup02.ocr

-rw-r--r-- 1 oracle dba      5083136 nov 26 22:32 day.ocr

-rw-r--r-- 1 oracle oinstall   22084 jan  1 20:52 ocrdumpfile

-rw-r--r-- 1 root   root     5083136 dec 16 21:54 temp.ocr

-rw-r--r-- 1 oracle dba      5083136 nov 26 22:32 week.ocr

使用導出,導入進行備份和恢複 

oracle推薦在對叢集做調整時,比如增加,删除節點之前,應該對ocr做一個備份,可以使用export備份到指定檔案,如果做了replace或者restore等操作,oracle建議使用cluvfy comp ocr -n all指令來做一次全面的檢查。

successfully stopped crs resources 

# ./ocrconfig -export ocrexp.exp       #導出ocr 

# ls -l ocrexp.exp 

-rw-r--r-- 1 root root 102935 jan  1 21:17 ocrexp.exp

# ./crsctl start crs

attempting to start crs stack 

the crs stack will be started shortly

# dd if=/dev/zero of=/dev/raw/raw1 bs=1m        #破壞ocr

dd: writing `/dev/raw/raw1': no space left on device

160+0 records in

159+0 records out

167685120 bytes (168 mb) copied, 18.0218 seconds, 9.3 mb/s

# ./ocrcheck

prot-601: failed to initialize ocrcheck

# ./runcluvfy.sh comp ocr -n all

verifying ocr integrity

unable to retrieve nodelist from oracle clusterware.

verification cannot proceed.

# ./ocrconfig -import ocrexp.exp        #導入ocr

移動和删除ocr

移動ocr時,不能直接修改ocr,必須要先添加鏡像才能修改,否則會報錯

# ./ocrconfig -replace ocr /dev/raw/raw3

prot-1: failed to initialize ocrconfig

# ./ocrconfig -replace ocrmirror /dev/raw/raw3        #建立鏡像ocr

         used space (kbytes)      :       4344

         available space (kbytes) :     159324

         id                       :   38625139

         device/file name         : /dev/raw/raw3

# cat /etc/oracle/ocr.loc 

#device/file /dev/raw/raw3 getting replaced by device /dev/raw/raw3 

ocrconfig_loc=/dev/raw/raw1

ocrmirrorconfig_loc=/dev/raw/raw3 

# ./ocrconfig -replace ocr /dev/raw/raw4        #修改primary ocr位置

         device/file name         : /dev/raw/raw4

# ./ocrconfig -replace ocrmirror               #删除鏡像ocr

#device/file /dev/raw/raw3 being deleted 

ocrconfig_loc=/dev/raw/raw4

參考至:《大話oracle rac》張曉明著

               http://blog.csdn.net/inthirties/article/details/5431368

               http://blog.csdn.net/tianlesoftware/article/details/6049378

本文原創,轉載請注明出處、作者

如有錯誤,歡迎指正

郵箱:[email protected]

作者:czmmiao  文章出處:http://czmmiao.iteye.com/blog/1758360