簡介
Oracle Real Application Cluster (RAC) 是 Oracle 解決方案中的一個著名產品,用于保持業務資料的高可用性,Oracle RAC 允許在所有集群節點之間共享負載,采用 N-1 容錯配置來應對節點故障,其中 N 是節點總數,Oracle RAC 一直在不斷改進每個版本,此次也不例外,新的 12.1.0.1 版包含“Flex ASM”和“Flex 集群”兩個屬性,支持面向云計算的環境的各種苛刻需求,
Oracle RAC 12c 引入了兩個新概念:
中心節點: 和以前的版本一樣,它們通過專用網路相互連接,并且可以直接訪問共享存盤,這些節點可以直接訪問 Oracle 集群注冊表 (OCR) 和表決磁盤 (VD),
葉節點: 這些節點是輕型節點,彼此不互連,也不能像中心節點一樣訪問共享存盤,每個葉節點與所連接的中心節點通信,并通過所連接的中心節點連接到集群,
此拓撲允許松散耦合的應用服務器與緊密耦合的資料庫服務器形成一個集群,緊密耦合的服務器是中心服務器,與集群中的其他中心服務器共享資料庫、OCR 和表決設備的存盤并進行對等通信,松耦合的服務器是葉服務器,與集群中的單個中心服務器形成松散通信關聯,不需要與集群中的其他中心服務器或葉服務器共享存盤,也不需要與之進行對等通信,只與所關聯的中心服務器通信,在 12.1.0.1 中,葉服務器旨在提高應用的高可用性和實作多層資源管理,
在 Oracle 12c 之前,對于要使用 ASM 的資料庫實體來說,所有節點上的 ASM 實體必須已處于運行狀態,才能啟動資料庫實體,如果 ASM 實體未運行,則意味著在存盤級使用 ASM 的資料庫實體不能啟動,這實際上意味著無論采用何種技術(即 RAC、ASM 和共享存盤),均不能訪問資料庫實體,
隨著 Oracle 12c 的推出,一個名為 Oracle Flex ASM 的特性解除了上述限制,它的一個主要特性是故障切換到集群中的其他節點,本質上是一個中心和葉架構,Oracle Clusterware 通過一個替代 ASM 實體將故障節點的連接將無縫轉移到另一個成員節點,在給定集群中運行的 ASM 實體數被稱作 ASM 基數,默認值為 3,但此基數值可以使用 Clusterware 命令修改,
Oracle Flex 集群
從架構上來說,Oracle Flex 集群包括一個中心和葉架構,其中只有中心節點可以直接訪問 Oracle 集群注冊表 (OCR) 和表決磁盤 (VD),但是應用可以通過葉節點訪問資料庫,而不必在葉節點上運行 ASM 實體,通過中心節點連接到資料庫使得它對應用透明,
圖 1:描繪了一個典型的 Oracle Flex 集群,包含 4 個葉節點和 2 個中心節點,簡單地說,Oracle Flex 集群需要 Oracle Flex ASM,

Oracle Flex ASM 的實作方面
Oracle Flex ASM 可通過兩種方式實作:
- 純 12c Flex ASM(相同版本)
- Grid Infrasctructure (GI) 和資料庫都運行在 Oracle 12c 上
- Oracle 12c 之前的混合版本(不同版本)
- 和平常一樣,ASM 實體將在每個節點上運行,Flex 配置支持 12c 之前的資料庫,使用 ASM 磁盤組的兼容性引數管理各資料庫實體之間的兼容性,這種方法的優點是,如果 Oracle 12c 資料庫實體與一個 ASM 實體的連接斷開,資料庫連接將故障切換至其他服務器上的另一個 ASM 實體,通過將基數設定為 all 即可以實作這種故障切換,
使用 Oracle Flex ASM 的 Oracle RAC 12c
標準 Oracle Flex ASM 配置:

Oracle Flex ASM 配置上的 ASM 實體故障:

1. 登錄 RAC 資料庫實體 1 (rac1)
[oracle@oel6-112-rac1 Desktop]$ hostname
oel6-112-rac1.localdomain
2. 檢查 ASM 實體和 RAC 資料庫實體的狀態
[oracle@oel6-112-rac1 Desktop]$ ps -ef | grep pmon
oracle 3325 1 0 17:39 ? 00:00:00 asm_pmon_+ASM1
oracle 3813 1 0 17:40 ? 00:00:00 mdb_pmon_-MGMTDB
oracle 5806 1 0 17:42 ? 00:00:00 ora_pmon_orcl1
oracle 6193 1 0 17:42 ? 00:00:00 apx_pmon_+APX1
3. 從實體 1 (rac1) 檢查 RAC 資料庫實體中 ASM 實體的狀態
[oracle@oel6-112-rac1 Desktop]$ srvctl status asm
ASM is running on oel6-112-rac2,oel6-112-rac1
4. 在實體 1 (rac1) 中檢查集群狀態
[oracle@oel6-112-rac1 Desktop]$ crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
5. 用于檢查 Oracle Flex ASM 是否啟用的命令 (rac1)
[oracle@oel6-112-rac1 Desktop]$ asmcmd
ASMCMD> showclustermode
ASM cluster : Flex mode enabled
ASMCMD> showclusterstate
Normal
6. 用于更改 ASM 基數的命令 (rac1)
[oracle@oel6-112-rac1 Desktop]$ srvctl status asm -detail
ASM is running on oel6-112-rac2,oel6-112-rac1
ASM is enabled.
[oracle@oel6-112-rac1 Desktop]$ srvctl config asm -detail
ASM home: /u01/app/12.1.0/grid
Password file: +DATA/orapwASM
ASM listener: LISTENER
ASM is enabled.
ASM instance count: 3
Cluster ASM listener: ASMNET1LSNR_ASM
7. 用于檢查 Oracle Flex ASM 是否啟用的命令 (rac2)
[oracle@oel6-112-rac2 Desktop]$ asmcmd
ASMCMD> showclustermode
ASM cluster : Flex mode enabled
ASMCMD> showclusterstate
Normal
ASMCMD> exit
8. 如何更改 ASM 基數 (rac2)
[oracle@oel6-112-rac2 Desktop]$ srvctl config asm -detail
ASM home: /u01/app/12.1.0/grid
Password file: +DATA/orapwASM
ASM listener: LISTENER
ASM is enabled.
ASM instance count: 3
Cluster ASM listener: ASMNET1LSNR_ASM
9. 在 RAC 資料庫實體 1 (rac1) 中關閉 ASM 實體
[oracle@oel6-112-rac1 Desktop]$ srvctl stop asm -node oel6-112-rac1 -stopoption abort -force
10. 在 RAC 資料庫實體 1 (rac1) 中檢查 ASM 實體的狀態
[oracle@oel6-112-rac1 Desktop]$ srvctl status asm
PRCR-1070 : Failed to check if resource ora.asm is registered
Cannot communicate with crsd
11. 在 RAC 資料庫實體 1 (rac1) 中檢查集群服務的狀態
[oracle@oel6-112-rac1 Desktop]$ crsctl check cluster
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
12. 在實體 1 (rac1) 中檢查 ASM 和 RAC 資料庫的狀態
[oracle@oel6-112-rac1 Desktop]$ ps -ef | grep pmon
oracle 3813 1 0 17:40 ? 00:00:00 mdb_pmon_-MGMTDB
oracle 5806 1 0 17:42 ? 00:00:00 ora_pmon_orcl1
oracle 6193 1 0 17:42 ? 00:00:00 apx_pmon_+APX1
注:在這里,資料庫實體與特定節點中運行的特定 ASM 實體關聯,如果因為某種原因,ASM 實體無法啟動/服務關閉,資料庫實體仍然可以啟動,因為資料庫實體將查找同一集群中運行的 ASM 實體,圖 3 描繪了 Flex ASM 的高可用特性,
13. 在 RAC 資料庫實體 1 (rac1) 中檢查沒有 ASM 實體的正在運行的 RAC 資料庫實體的狀態
[oracle@oel6-112-rac1 Desktop]$ . oraenv
ORACLE_SID = [orcl1] ? orcl1
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/12.1.0/db_1
The Oracle base remains unchanged with value /u01/app/oracle
14. 從 RAC 資料庫實體 1 (rac1) 登錄資料庫實體
[oracle@oel6-112-rac1 Desktop]$ sqlplus /nolog
SQL*Plus: Release 12.1.0.1.0 Production on Wed Sep 25 18:24:36 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> connect sys/oracle@orcl as sysdba
Connected.
SQL> select instance_name,instance_number from gv$instance;
INSTANCE_NAME INSTANCE_NUMBER
-------------------------------------------
orcl2 2
orcl1 1
SQL> select instance_name,instance_number from v$instance;
INSTANCE_NAME INSTANCE_NUMBER
-------------------------------------------
orcl2 2
SQL> connect sys/oracle@orcl as sysdba
Connected.
SQL> select instance_name,instance_number from gv$instance;
INSTANCE_NAME INSTANCE_NUMBER
-------------------------------------------
orcl1 1
15. 從 RAC 資料庫實體 1 (rac1) 連接到 RAC 資料庫實體 2 (rac2) 的 ASM 實體
[oracle@oel6-112-rac1 Desktop]$ . oraenv
ORACLE_SID = [orcl1] ? +ASM2
ORACLE_HOME = [/home/oracle] ? /u01/app/12.1.0/grid
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@oel6-112-rac1 Desktop]$ asmcmd --privilege sysasm --inst +ASM2
ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 15342 4782 0 4782 0 Y DATA/
ASMCMD>
總結:資料庫實體使用一個專用 ASM 實體,我們強制該 ASM 實體被停止作業來模擬故障,因此資料庫實體重新連接到另一節點(在本示例中為節點 2 (rac2))上的現有 ASM 實體,
Oracle Database 11.2 或早期版本
如前面針對 Oracle 12c 的介紹所述,ASM 與資料庫實體的關聯本質上是特定的,這意味著,如果 ASM 實體無法啟動,該節點/ASM 中的關聯資料庫實體也無法啟動,從而導致該資料庫無法訪問,

1. 登錄 RAC 資料庫實體 1 (rac1)
login as: oracle
[email protected]'s password:
Last login: Fri Sep 27 06:05:44 2013
2. 檢查 ASM 實體和 RAC 資料庫實體的狀態
[oracle@rac1 ~]$ ps -ef | grep pmon
oracle 3053 1 0 05:56 ? 00:00:00 asm_pmon_+ASM1
oracle 3849 1 0 05:57 ? 00:00:00 ora_pmon_flavia1
3. 在 RAC 資料庫實體 1 (rac1) 中檢查 ASM 實體的狀態
[oracle@rac1 ~]$ srvctl status asm
ASM is running on rac2,rac1
4. 在 RAC 資料庫實體 1 (rac1) 中檢查集群的狀態
[oracle@rac1 ~]$ crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
5. 在 RAC 資料庫實體 1 (rac1) 中停止 ASM 實體
[oracle@rac1 ~]$ srvctl stop asm -n rac1 -o abort -f
6. 在 RAC 資料庫實體 1 (rac1) 中檢查 ASM 實體的狀態
[oracle@rac1 ~]$ srvctl status asm
ASM is running on rac2
7. 檢查 ASM 實體和 RAC 資料庫實體 (rac1) 的狀態
[oracle@rac1 ~]$ ps -ef | grep pmon
oracle 7885 5795 0 06:20 pts/0 00:00:00 grep pmon
總結:資料庫實體與 ASM 實體強關聯,如果 ASM 實體發生故障,同一節點上的資料庫實體也會發生故障,
為何使用 Oracle Flex ASM
- Oracle Flex ASM 支持 Oracle Database 12c 客戶端使用更大的 LUN 大小,
- 支持的最大磁盤組數為 511,
- 可以靈活地重命名磁盤組中的 ASM 磁盤,
- ASM 實體的補丁級驗證
- 滾動補丁期間禁用補丁級驗證
- 復制物理元資料
Oracle Flex ASM 中的網路增強
- 在早期版本中,集群要求:
- 一個供客戶端應用訪問的公共網路
- 一個或多個用于集群內節點間通信(包括 ASM 通信)的專用網路
- Flex ASM 增加 ASM 網路,可用于 ASM 與其客戶端之間的通信,以便隔離和分流 ASM 通信,
部署 Flex ASM
下面是 Flex ASM 安裝程式的螢屏截圖,
- 選擇選項“Advanced Installation”

有三個存盤選項:
標準 ASM
- 12c 之前的 ASM 配置模式
Oracle Flex ASM
- 推薦
非 ASM 托管的存盤

管理 Flex ASM:
- 無需 Flex ASM 特定的實體引數
- ASM 服務器實體使用自動記憶體管理 (AMM)
關于作者
Deiby Gómez 是專家 DBA 和 Oracle Ace,擁有豐富的 Oracle Exadata 資料庫云服務器和高可用性解決方案經驗,他經常出席 Oracle 活動,包括 OTN 拉美巡講、Java 日、Oracle First Symposium 和在許多大學舉行的活動,Deiby 是第一個在 Oracle LAD 上發表文章的危地馬拉人,他經常在其博客 www.oraclefromguatemala.com.gt 上發表文章,
Yenugula Venkata RaviKumar 是一個擁有逾 15 年經驗的 DBA,擅長高可用性資料庫環境(RAC、Data Guard 等)、調優和性能、遷移、備份和恢復、Oracle Exadata v1/v2/v3,精通 AIX、HP-UX 和 Linux 等作業系統,他目前居住在印度,曾參加過在印度舉行的多次 Oracle 活動并發表演講,他于 2009 年獲得 Oracle Corporation 的 Oracle 認證大師 (OCM) 稱號,
Nassyam Basha 是一名 DBA,他是 OCP 11g,精通 Data Guard、RMAN、RAC 和性能調優等 Oracle 技術,他已在從 RAC 到非 RAC 的各種平臺上完成了 90 多次 Data Guard 安裝,并使用切換和故障切換成功完成了許多業務關鍵生產資料庫的集群遷移,他積極參加 Oracle 相關論壇(如 OTN),以 CKPT 身份發表了近 10000 個帖子,他還在 Oracle-Lists 上發表文章,他經常在其博客 www.oracle-ckpt.com 上發表文章,最近還與人合著了 Oracle Data Guard 11gR2 管理指南,
轉載:https://www.oracle.com/technetwork/cn/articles/database/flexasm-flexcluster-benefits-odb12c-2177371-zhs.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/4094.html
標籤:Oracle
下一篇:Oracle許可
