面對 OCR(Oracle Cluster Registry)與 OLR(Oracle Local Registry)損毀且無任何備份的極端災難場景,本文記錄雙節點 RAC 11gR2 環境下,透過 rootcrs.pl 清除叢集配置、root.sh 重建 OCR/OLR、再註冊資源的完整復原流程,供同仁參考。
/u01/app/11.2.0/grid。使用 $GRID_HOME/crs/install/rootcrs.pl 腳本(需 root 權限)。
[root@rac-one install]# ./rootcrs.pl -deconfig -force
輸出關鍵訊息:Successfully deconfigured Oracle clusterware stack on this node
[root@rac-two install]# ./rootcrs.pl -deconfig -force -lastnode
此步驟會清除 ASM、OCR、Voting Disk 等所有叢集資源配置。
此步驟等同於重新安裝 Grid Infrastructure 的配置階段。
[root@rac-two grid]# ./root.sh
關鍵輸出確認點:
ASM created and started successfully.Disk Group GIDG created successfully.Successfully accumulated necessary OCR keys.Successfully replaced voting disk group with +GIDG.OLR initialization - successful(節點 2 執行時顯示)[root@rac-one grid]# ./root.sh
節點 2 會偵測到節點 1 已建立叢集,自動加入現有叢集。
SQL> ALTER DISKGROUP DATADG MOUNT;
[root@rac-one bin]# ./crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
srvctl add listener -l LISTENER
# 若 1521 埠被 VIP 佔用,暫停 VIP 再操作
crsctl stop resource ora.rac-two.vip
srvctl add listener -l LISTENER
crsctl start resource ora.rac-two.vip
srvctl add database -d Rac -o /u01/app/oracle/product/11.2.0/db_1 -c RAC
srvctl add instance -d Rac -i Rac1 -n rac-two
srvctl add instance -d Rac -i Rac2 -n rac-one
crsctl start cluster -all
等待 2 分鐘後檢查 crsctl stat res -t,確認所有資源 ONLINE。
發現 rac-two 上有兩個 LISTENER 進程,導致資源狀態 INTERMEDIATE。
# 停止所有 listener 進程
lsnrctl stop
kill -9 <殘留 PID>
crsctl start resource ora.LISTENER.lsnr
-deconfig -force,最後節點加 -lastnode。crsctl stat res -t 所有資源狀態,驗證應用連線正常。| 操作 | 指令 |
|---|---|
| 去配置節點(非最後) | rootcrs.pl -deconfig -force |
| 去配置最後節點 | rootcrs.pl -deconfig -force -lastnode |
| 重建叢集配置 | root.sh |
| 掛載 Diskgroup | ALTER DISKGROUP <name> MOUNT; |
| 註冊 Listener | srvctl add listener -l LISTENER |
| 註冊 Database | srvctl add database -d <db_name> -o <oracle_home> -c RAC |
| 註冊 Instance | srvctl add instance -d <db_name> -i <inst_name> -n <node_name> |
| 啟動叢集 | crsctl start cluster -all |
| 檢查資源狀態 | crsctl stat res -t |