oracle的clusterware包含兩個重要組件:OCR(包含本地組件OLR)和voting disks
--OCR管理oracle clusterware和oracle rac數據庫的配置信息
--OLR位於每個節點本地,管理着本地節點的clusterware配置信息
--voting disks管理成員關系信息。每個voting disk都必須能被集群中的所有節點訪問。
在12C中,必須將OCR和voting disks中放在asm中(12c不支持塊設備和裸設備;12.2不再支持其他共享文件系統)。
(11g文檔是這么寫的:必須將ocr和voting disk放在asm中,或者放在經過認證的集群文件系統中)
11.2中,oracle oui不支持裸設備、塊設備。但是如果是從之前版本升級上來的,可以繼續支持塊設備、裸設備。oracle肯定是建議使用asm。
為了增加可用性,oracle建議配置多個voting disks文件。如果是使用了asm磁盤組。asm會確保voting disks被配置成了normal冗余或high冗余。如果是使用其他共享文件系統,需要手動指定多份設置。
不需要停掉集群的情況下,可以動態添加、替換voting disks。
管理OCR和OLR的工具有ocrconfig、ocrdump、ocrcheck
OLR和OCR類似,只是位於集群中節點的本地,包含特定節點的配置信息。OLR包含clusterware的可管理信息,如不同服務之間的依賴關系,OHAS需要使用這些信息。OLR默認存放路徑是grid_home/cdata/host_name.olr。
1.遷移OCR到asm
如果是從11.2之前升級到11.2,asm磁盤兼容性必須設置>=11.2;
如果是從12c之前升級到12c,asm磁盤兼容性必須設置>=11.2.0.2。
(1)查看當前運行版本
$ crsctl query crs activeversion Oracle Clusterware active version on the cluster is [11.2.0.4.0]
(2)在所有節點上啟動asm
(3)將ocr增加到asm磁盤組
# ocrconfig -add +new_disk_group
OCR會繼承磁盤組的冗余性!
(4)移除之前的存儲配置
# ocrconfig -delete old_storage_location
2.從asm遷移到其他共享存儲類型
(1)查看當前運行版本
$ crsctl query crs activeversion
(2)添加新的文件作為ocr存放的位置
# ocrconfig -add file_location
(3)移除原先的asm配置
# ocrconfig -delete +asm_disk_group
3.增加一個OCR Location
# ocrconfig -add +asm_disk_group | file_name
4.移除一個OCR Location
# ocrconfig -delete +asm_disk_group | file_name
5.替換OCR位置
(1)首先檢查一下
$ ocrcheck $ crsctl check crs
(2)替換OCR位置
# ocrconfig -replace current_ocr_location -replacement new_ocr_location
如果只有一個ocr位置,只有先添加后刪除 # ocrconfig -add new_ocr_location # ocrconfig -delete current_ocr_location
6.本地節點修復OCR
如果集群在節點關閉之后發生了培訓變更,而該節點是集群的唯一節點,在啟動該節點前就要進行OCR修復了。
修復OCR包含增加、刪除、替換OCR。例如:
# ocrconfig -repair -add /dev/sde1 # ocrconfig -repair -replace current_ocr_location -repalcement target_ocr_location
7.重載OCR
OCR具有防止數據丟失的機制。如果配置了多份鏡像的OCR,當clusterware無法訪問鏡像OCR位置,也不能確定當前可以訪問的OCR位置是否包含最新的配置信息的時候,clusterware會阻止對當前可以訪問的OCR的修改。
此外,進程也會阻止該節點上的clusterware的啟動。clusterware和數據庫的alert日志都會受到報警信息。如果這個問題只是發生在某個節點,可以從其它節點啟動集群數據庫。
如果集群中的任何節點都沒法啟動,用戶可以選擇修復OCR或者還原OCR。如果修復或還原都不行,還可以選擇重載OCR。重載OCR需要重載所有的OCR,不過這種情況可能會導致部分信息丟失。
修復就用ocrconfig -repair。如果要重載orc,使用命令ocrconfig -overwirte。
在重載OCR之前,應該先進行嘗試OCR修復。
8.備份OCR
(1)自動備份
clusterware每隔四小時自動備份OCR文件。且會保留最近的三份OCR。由CRSD進行備份。此外,crsd還會做每天和每周一次備份。備份頻率和保留期限是不可以調整的。
(2)手動備份
ocrconfig -manualbackup執行備份。OLR只是支持手動備份。
(3)查看備份
$ ocrconfig -showbackup db2 2017/09/03 14:32:04 /u01/app/11.2.0/grid/cdata/oradb-cluster/backup00.ocr db2 2017/09/03 10:32:03 /u01/app/11.2.0/grid/cdata/oradb-cluster/backup01.ocr db2 2017/09/03 06:32:03 /u01/app/11.2.0/grid/cdata/oradb-cluster/backup02.ocr db2 2017/09/02 02:32:00 /u01/app/11.2.0/grid/cdata/oradb-cluster/day.ocr db2 2017/08/26 06:32:31 /u01/app/11.2.0/grid/cdata/oradb-cluster/week.ocr
(4)修改備份路徑
# ocrconfig -backuploc file_name (指定備份路徑)
9.還原OCR
如果沒有放在asm中:
(1)查看列出節點
# olsnodes
(2)關閉clusterware
# crsctl stop crs 如果關不了,可以強制關閉 # crsctl stop crs -f
(3)(如果是放在集群文件或者網絡文件系統)還原OCR
# ocrconfig -restore file_name
(4)啟動clusterware
# crsctl start crs
如果是asm,要完成以下步驟:
(1)查看列出節點
# olsnodes
(2)關閉clusterware
# crsctl stop crs 如果關不了,可以強制關閉 # crsctl stop crs -f
(3)啟動clusterware
只在某個節點執行,以exclusive模式啟動
# crsctl start crs -excl -nocrs 忽略啟動過程中產生的錯誤信息。
(4)檢查crsd進程是否運行
$ crsclt stat res ora.crsd -init 如果運行,要關閉掉crsd進程 # crsctl stop resource ora.crsd -init
(5)把asm磁盤組mount到本地。如果本地無法mount,先把asm中的磁盤組先drop掉。
SQL> drop diskgroup disk_group_name force including contents;
(6)還原OCR
# ocrconfig -restore file_name
(7)再次檢查OCR
# ocrcheck
(8)關閉clusterware
# crsctl stop crs -f
(9)剩余節點修復OCR
使用ocrconfig -repair -replace命令逐一執行
(10)啟動clusterware
# crsctl start crs
(11)驗證
$ cluvfy comp ocr -n all -verbose Verifying OCR Integrity ...PASSED Verification of OCR integrity was successful. CVU operation performed: OCR integrity Date: Sep 3, 2017 3:41:01 PM CVU home: /u01/app/12.2.0/grid/ User: grid
OCR問題診斷
診斷工具有ocrdump、ocrcheck
除了自動備份的OCR文件,也可以將OCR內容export和import,但是需要關閉才能獲得一致性結果。
ocrconfig -restore和ocrconfig -manualbackup命令使用的ocr文件格式是兼容的;ocrconfig -export和ocrconfig -import命令使用的ocr文件格式是兼容的。但是這前后兩者卻是不兼容的。
import OCR(linux平台)
(1)列出所有集群節點
$ olsnodes
(2)停止clusterware
# crsctl stop crs 如果不能正常關閉,可以強制關閉 # crsctl stop crs -f
(3)在其中一個節點,以排他模式啟動clusterware
# crsctl start crs -excl 忽略啟動過程中的報錯信息 檢查crsd進程是否運行,如果運行要關閉它 # crsctl stop resource ora.crsd -init
(4)import OCR
# ocrconfig -import file_name 如果導入的是集群文件系統或網絡文件系統,直接到步驟7
(5)驗證OCR的完整性
# ocrcheck
(6)關閉clusterware
# crsctl stop crs -f
(7)再次啟動 clusterware
# crsctl start crs
(8)驗證在集群所有節點上的OCR完整性
$ cluvfy comp ocr -n all -version
Oracle Local Registry(OLR)
可以使用ocrcheck、ocrdump、ocrconfig加上參數-local來管理OLR
1.檢查OLR的狀態
# ocrcheck -local
Status of Oracle Local Registry is as follows :
Version : 4
Total space (kbytes) : 409568
Used space (kbytes) : 1060
Available space (kbytes) : 408508
ID : 1941521711
Device/File Name : /u01/app/12.2.0/grid/cdata/db12c1.olr
Device/File integrity check succeeded
Local registry integrity check succeeded
Logical corruption check succeeded
2.dump出OLR的內容
# ocrdump -local
3.導入導出OLR的內容
# ocrconfig –local –export file_name
# ocrconfig –local –import file_name
4.手動備份OLR
# ocrconfig –local –manualbackup
5.還原OLR
# crsctl stop crs
# ocrconfig -local -restore file_name
# ocrcheck -local
# crsctl start crs
$ cluvfy comp olr
