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
本文原創,轉載請注明出處、作者
如有錯誤,歡迎指正
作者:czmmiao 文章出處:http://czmmiao.iteye.com/blog/1758360