數據庫管理357期 2025-08-14
數據庫管理-第357期 23ai:試玩Extended Cluster(20250814)
作者:胖頭魚的魚缸(尹海文) Oracle ACE Pro: Database PostgreSQL ACE Partner 10年數據庫行業經驗 擁有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等認證 墨天輪MVP,ITPUB認證專家 圈內擁有“總監”稱號,非著名社恐(社交恐怖分子) 公眾號:胖頭魚的魚缸 CSDN:胖頭魚的魚缸(尹海文) 墨天輪:胖頭魚的魚缸 ITPUB:yhw1809 IFClub:胖頭魚的魚缸 除授權轉載并標明出處外,均為“非法”抄襲

本期來玩一玩23ai上的Extended Cluster,也被稱為Extended RAC。
1 簡介
Oracle Extended Cluster由位于多個位置(稱為站點,site)的節點組成。如果其中一個站點發生故障,另一個站點將作為活動備用。
一般來說,Oracle ASM和Oracle數據庫都是為在數據中心使用企業級共享存儲而設計的。然而,光纖通道技術使您能夠在兩個或多個數據中心之間分配計算和存儲資源,并通過以太網電纜和光纖通道將它們連接起來,分別滿足計算和存儲需求。
Oracle建議您部署具有normal冗余磁盤組的Oracle Extended Cluster。您可以將節點和故障組分配給站點。站點包含故障組,故障組包含磁盤。對于正常冗余磁盤組,磁盤組提供一級故障保護,可以容忍站點或故障組的故障。
同時Oracle不建議site之間的距離超過100KM。

2 環境說明
這里仍然部署的是23.8內測版,基本安裝過程可以參考《數據庫管理-第334期 Oracle Database 23ai測試版RAC部署文檔(20250607)》。本次安裝的集群變化內容主要有:
- 操作系統使用Oracle Linux 9.6
- 3個節點
- 公網和私網均未配置多網卡
- 磁盤組均使用normal冗余



這里沒有做存儲復制,相當于用一套存儲模擬兩個site都能訪問到的存儲,在實際生產部署Extended Cluster需要確保多個site的存儲能夠一致,且節點能夠正常識別對應磁盤,這一硬件配置成本較高。
3 配置Extended Cluster
3.1 檢查當前集群狀態
crsctl get cluster extended crsctl query cluster site -all

3.2 手動備份OCR信息
su - ocrconfig -manualbackup

3.3 配置site
在第一個節點(db01)執行,執行下面命令過程中,:
su -
cd /u01/app/23.0.0/grid/crs/install
./rootcrs.sh -converttoextended -first -sites chengdu,chongqing -site chengdu
# -first 第一個執行的節點
# -sites 指定有哪些site
# -site 指定本節點的site,后續節點只需要指定本節點的site即可

執行converttoextended的節點數據庫實例將不可用

節點2(db02)執行:
cd /u01/app/23.0.0/grid/crs/install
./rootcrs.sh -converttoextended -site chengdu


節點3(db03)執行:
cd /u01/app/23.0.0/grid/crs/install
./rootcrs.sh -converttoextended -site chongqing


這是db01和db02已經到了site:chengdu,而db03到了site:chongqing。
3.4 刪除多余site
需要刪除多余的site:db。
crsctl delete cluster site db

3.5 配置ASM磁盤與site關聯
這是一個我認為的可選操作
首先需要關閉數據庫:
su - oracle srvctl stop database -db racdb

然后調整ASM磁盤:
su - grid sqlplus / as sysasm
select a.group_number,a.name gname,b.name dname from v$asm_diskgroup a,v$asm_disk b where a.group_number=b.group_number and a.name='DATA';

所有節點執行:
alter diskgroup data dismount;
一個節點執行:
alter diskgroup data mount restricted;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0000' SITE chengdu;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0001' SITE chengdu;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0002' SITE chengdu;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0003' SITE chengdu;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0004' SITE chengdu;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0005' SITE chengdu;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0006' SITE chengdu;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0007' SITE chengdu;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0008' SITE chongqing;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0009' SITE chongqing;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0010' SITE chongqing;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0011' SITE chongqing;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0012' SITE chongqing;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0013' SITE chongqing;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0014' SITE chongqing;
ALTER DISKGROUP DATA RENAME DISK 'DATA_0015' SITE chongqing;

檢查ASM磁盤:
select a.group_number,b.name dname,b.site_name from v$asm_diskgroup a,v$asm_disk b where a.group_number=b.group_number and a.name='DATA';

重新掛載磁盤:
alter diskgroup data dismount;
alter diskgroup data mount; --所有節點執行
啟動數據庫:
su - oracle srvctl start database -db racdb

3.6 檢查集群
su - grid crsctl get cluster extended crsctl query cluster site -all

4 其他維護命令
4.1 添加site
crsctl add cluster site site_name [-guid site_guid] eg. crsctl add cluster site mianyang
4.2 修改site
crsctl modify cluster site site_name {–n node1, node2, ... | -s {rejuvenate | quarantine} | [-local]}
eg.
crsctl modify cluster site chengdu –n node1

總結
本期簡單演示了在Oracle 23ai測試版RAC集群上轉換成Extended Cluster的操作。
老規矩,知道寫了些啥。




