標籤:
OCR就好比Windows的一個註冊表,儲存了所有與叢集,RAC資料庫相關的配置資訊。而且是公用的配置,也就是說多個節點共用相同的配置資訊。因此該配置應當儲存於共用磁碟。本文主要基於Oracle 10g RAC描述了叢集的OCR以及OCR產生的健忘問題。
一、OCR的特點
類似於Windows註冊表,用於儲存所有與叢集,RAC資料庫相關的配置資訊
被多個節點所共用,因此,只能儲存於共用磁碟。支援單disk以及鏡像方式來存放。大小通常100MB-1GB。
在Oracle 10g中,只能儲存於裸裝置或者ocfs檔案系統,以及nfs,gfs檔案系統。Oracle 11g中可以直接存放在asm中。
整個叢集及RAC資料庫配置需要在OCR中來進行維護。換句話說,就像windows註冊表的匯入匯出,修改、更新索引值等。
通常情況下,OCR中的配置資訊會隨著使用工具對其進行自動更新。如SRVCTL,DBCA,OEM,NETCA等。
而OCR的配置與維護則通常包括OCR的校正,備份,查看OCR的內容,添加移出OCR檔案,重定位,修複OCR檔案。
OCR磁碟最多隻能有兩個,一個Primary OCR 和一個Mirror OCR,兩個OCR 磁碟互為鏡像,以防止OCR 磁碟的單點故障。
註:叢集,我們通常指的是clusterware,而RAC資料庫,即是基於叢集之上的資料庫。
二、OCR包含的內容
OCR中通常包含下列內容
節點成員資訊
資料庫執行個體,節點,以及其他的映射關係
ASM
資源配置資訊(vip,services等等)
服務特性(Service characteristics)
Oracle叢集中相關進程的資訊
CRS控制的第三方應用程式資訊
三、OCR的工作過程
由於OCR存放於共用儲存,因此在Cluster中的每個節點都通過本地OCR進程訪問OCR緩衝在其記憶體中維護著的一個副本。同時由於對OCR
的所有操作必須確保OCR內容完整性,所以在ORACLE Clusterware運行過程中,並不是所有結點都能操作OCR Disk。 只有一個OCR進程對共
享儲存中的OCR進行讀寫操作。這個節點叫作OCR Master結點。此進程負責重新整理(refresh)其自己擁有的本機快取以及Cluster中其他節點
的OCR cache。也就是說,OCR用戶端查詢都是通過本地OCR進程來查詢本地的一個OCR副本,而當用戶端需要更新OCR時,它們將通過本地OCR
進程與那個扮演讀寫OCR檔案的進程OCR Master進行互動。
#下面是一個兩節點的RAC,可以看出ocr master節點起初在第一個節點,後來轉移到第二個節點,再後來又到第一個節點。
#這是由於節點一關閉或節點一上的叢集處於不可用狀態導致ocr master節點發生了轉移。
[email protected]:/u01/oracle/crs/log/bo2dbp/cssd> cat ocssd.log | grep "master node"
[ CSSD]CLSS-3001: local node number 1, master node number 1
[ CSSD]CLSS-3001: local node number 1, master node number 1
[ CSSD]CLSS-3001: local node number 1, master node number 1
[ CSSD]CLSS-3001: local node number 1, master node number 1
[ CSSD]CLSS-3001: local node number 1, master node number 2
[ CSSD]CLSS-3001: local node number 1, master node number 1
[email protected]:~> grep -i "master node" $ORA_CRS_HOME/log/bo2dbp/cssd/ocssd.log | tail -1
[ CSSD]CLSS-3001: local node number 1, master node number 1
OCR用戶端應用有:Oracle通用安裝器(OUI)、SRVCTL、企業管理器(EM)、DBCA、DBUA、NetCA和虛擬網路協議助理(VIPCA)。
此外,OCR維護管理著CRS內部中定義的各種應用程式的資源的依賴和狀態資訊,特別是Database、Instance、Services和節點的應用程式。
OCR設定檔的名字是ocr.loc,Linux下位於/etc/oracle/ocr.loc。
後附OCR結構圖
四、OCR儲存內容的表現形式
同樣地與Windows註冊表來類比,OCR其儲存內容的表現形式與其相同,是採用索引值對的方式來展現。
整個OCR 的資訊是樹形結構,有3個大分支。分別是SYSTEM,DATABASE 和CRS。
每個分支下面又有許多小分支。這些記錄的資訊只能由root使用者修改。
可以使用ocrdump命令將其內容全部匯出或者按分支進行匯出。
五、健忘症
健忘是由於某個節點更新了OCR中的內容,而叢集中的另外一些節點此時處於關閉,維護或重啟階段,OCR Master進程來不及將其資訊更新
到這些異常節點緩衝而導致的不一致。譬如,在A節點發出了添加ocr鏡像的命令,在這個時候B節點處於重啟階段。重啟後A已經更新完畢,
而此時B並不知道已經為ocr增加了一個新的鏡像磁碟,健忘由此而生。
如下例,節點bo2dbp添加了新的ocr之後,設定檔發生了變化,此時節點bo2dbs的ocr.loc會被更新,如果bo2dbs處於關閉或重啟階段,則
該檔案得不到該更新,此即位健忘一例。
[email protected]:~> more /etc/oracle/ocr.loc
#Device/file getting replaced by device /dev/raw/raw11
ocrconfig_loc=/dev/raw/raw1
ocrmirrorconfig_loc=/dev/raw/raw11 #可以看到增加了ocrmirror位置
local_only=false
Author : Robinson Cheng
Blog : http://blog.csdn.net/robinson_0612
六、OCR結構圖
轉:http://blog.csdn.net/leshami/article/details/8572625
Oracle RAC OCR 與健忘症