簡介
?
Oracle Real Application Cluster (RAC) 是 Oracle 解決方案中的一個著名產(chǎn)品,用于保持業(yè)務(wù)數(shù)據(jù)的高可用性。Oracle RAC 允許在所有集群節(jié)點之間共享負載,采用 N-1 容錯配置來應(yīng)對節(jié)點故障,其中 N 是節(jié)點總數(shù)。Oracle RAC 一直在不斷改進每個版本,此次也不例外。新的 12.1.0.1 版包含“Flex ASM”和“Flex 集群”兩個屬性,支持面向云計算的環(huán)境的各種苛刻需求。
Oracle RAC 12c 引入了兩個新概念:
中心節(jié)點:?和以前的版本一樣,它們通過專用網(wǎng)絡(luò)相互連接,并且可以直接訪問共享存儲。這些節(jié)點可以直接訪問 Oracle 集群注冊表 (OCR) 和表決磁盤 (VD)。
葉節(jié)點:?這些節(jié)點是輕型節(jié)點,彼此不互連,也不能像中心節(jié)點一樣訪問共享存儲。每個葉節(jié)點與所連接的中心節(jié)點通信,并通過所連接的中心節(jié)點連接到集群。
此拓撲允許松散耦合的應(yīng)用服務(wù)器與緊密耦合的數(shù)據(jù)庫服務(wù)器形成一個集群。緊密耦合的服務(wù)器是中心服務(wù)器,與集群中的其他中心服務(wù)器共享數(shù)據(jù)庫、OCR 和表決設(shè)備的存儲并進行對等通信。松耦合的服務(wù)器是葉服務(wù)器,與集群中的單個中心服務(wù)器形成松散通信關(guān)聯(lián),不需要與集群中的其他中心服務(wù)器或葉服務(wù)器共享存儲,也不需要與之進行對等通信,只與所關(guān)聯(lián)的中心服務(wù)器通信。在 12.1.0.1 中,葉服務(wù)器旨在提高應(yīng)用的高可用性和實現(xiàn)多層資源管理。
在 Oracle 12c 之前,對于要使用 ASM 的數(shù)據(jù)庫實例來說,所有節(jié)點上的 ASM 實例必須已處于運行狀態(tài),才能啟動數(shù)據(jù)庫實例。如果 ASM 實例未運行,則意味著在存儲級使用 ASM 的數(shù)據(jù)庫實例不能啟動。這實際上意味著無論采用何種技術(shù)(即 RAC、ASM 和共享存儲),均不能訪問數(shù)據(jù)庫實例。
隨著 Oracle 12c 的推出,一個名為 Oracle Flex ASM 的特性解除了上述,它的一個主要特性是故障切換到集群中的其他節(jié)點。本質(zhì)上是一個中心和葉架構(gòu),Oracle Clusterware 通過一個替代 ASM 實例將故障節(jié)點的連接將無縫轉(zhuǎn)移到另一個成員節(jié)點。在給定集群中運行的 ASM 實例數(shù)被稱作 ASM 基數(shù),默認值為 3。但此基數(shù)值可以使用 Clusterware 命令修改。
Oracle Flex 集群
從架構(gòu)上來說,Oracle Flex 集群包括一個中心和葉架構(gòu),其中只有中心節(jié)點可以直接訪問 Oracle 集群注冊表 (OCR) 和表決磁盤 (VD)。但是應(yīng)用可以通過葉節(jié)點訪問數(shù)據(jù)庫,而不必在葉節(jié)點上運行 ASM 實例。通過中心節(jié)點連接到數(shù)據(jù)庫使得它對應(yīng)用透明。
圖 1:描繪了一個典型的 Oracle Flex 集群,包含 4 個葉節(jié)點和 2 個中心節(jié)點。簡單地說,Oracle Flex 集群需要 Oracle Flex ASM。
Oracle Flex ASM 的實現(xiàn)方面
Oracle Flex ASM 可通過兩種方式實現(xiàn):
-
純 12c Flex ASM(相同版本)
-
Grid Infrasctructure (GI) 和數(shù)據(jù)庫都運行在 Oracle 12c 上
-
-
Oracle 12c 之前的混合版本(不同版本)
-
和平常一樣,ASM 實例將在每個節(jié)點上運行,F(xiàn)lex 配置支持 12c 之前的數(shù)據(jù)庫。使用 ASM 磁盤組的兼容性參數(shù)管理各數(shù)據(jù)庫實例之間的兼容性。這種方法的優(yōu)點是,如果 Oracle 12c 數(shù)據(jù)庫實例與一個 ASM 實例的連接斷開,數(shù)據(jù)庫連接將故障切換至其他服務(wù)器上的另一個 ASM 實例。通過將基數(shù)設(shè)置為 all 即可以實現(xiàn)這種故障切換。
-
使用 Oracle Flex ASM 的 Oracle RAC 12c
標準 Oracle Flex ASM 配置:
Oracle Flex ASM 配置上的 ASM 實例故障:
1. 登錄 RAC 數(shù)據(jù)庫實例 1 (rac1)
[oracle@oel6-112-rac1 Desktop]$ hostname oel6-112-rac1.localdomain
2. 檢查 ASM 實例和 RAC 數(shù)據(jù)庫實例的狀態(tài)
[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 數(shù)據(jù)庫實例中 ASM 實例的狀態(tài)
[oracle@oel6-112-rac1 Desktop]$ srvctl status asm ASM is running on oel6-112-rac2,oel6-112-rac1
4. 在實例 1 (rac1) 中檢查集群狀態(tài)
[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 基數(shù)的命令 (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 基數(shù) (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 數(shù)據(jù)庫實例 1 (rac1) 中關(guān)閉 ASM 實例
[oracle@oel6-112-rac1 Desktop]$ srvctl stop asm -node oel6-112-rac1 -stopoption abort -force
10. 在 RAC 數(shù)據(jù)庫實例 1 (rac1) 中檢查 ASM 實例的狀態(tài)
[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 數(shù)據(jù)庫實例 1 (rac1) 中檢查集群服務(wù)的狀態(tài)
[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 數(shù)據(jù)庫的狀態(tài)
[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
注:在這里,數(shù)據(jù)庫實例與特定節(jié)點中運行的特定 ASM 實例關(guān)聯(lián)。如果因為某種原因,ASM 實例無法啟動/服務(wù)關(guān)閉,數(shù)據(jù)庫實例仍然可以啟動,因為數(shù)據(jù)庫實例將查找同一集群中運行的 ASM 實例。圖 3 描繪了 Flex ASM 的高可用特性。
13. 在 RAC 數(shù)據(jù)庫實例 1 (rac1) 中檢查沒有 ASM 實例的正在運行的 RAC 數(shù)據(jù)庫實例的狀態(tài)
[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 數(shù)據(jù)庫實例 1 (rac1) 登錄數(shù)據(jù)庫實例
[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 數(shù)據(jù)庫實例 1 (rac1) 連接到 RAC 數(shù)據(jù)庫實例 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>
總結(jié):數(shù)據(jù)庫實例使用一個專用 ASM 實例,我們強制該 ASM 實例被停止工作來模擬故障,因此數(shù)據(jù)庫實例重新連接到另一節(jié)點(在本示例中為節(jié)點 2 (rac2))上的現(xiàn)有 ASM 實例。
Oracle Database 11.2 或早期版本
如前面針對 Oracle 12c 的介紹所述,ASM 與數(shù)據(jù)庫實例的關(guān)聯(lián)本質(zhì)上是特定的。這意味著,如果 ASM 實例無法啟動,該節(jié)點/ASM 中的關(guān)聯(lián)數(shù)據(jù)庫實例也無法啟動,從而導(dǎo)致該數(shù)據(jù)庫無法訪問。
1. 登錄 RAC 數(shù)據(jù)庫實例 1 (rac1)
login as: oracle oracle@192.168.xx.xx's password: Last login: Fri Sep 27 06:05:44 2013
2. 檢查 ASM 實例和 RAC 數(shù)據(jù)庫實例的狀態(tài):
[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 數(shù)據(jù)庫實例 1 (rac1) 中檢查 ASM 實例的狀態(tài)
[oracle@rac1 ~]$ srvctl status asm ASM is running on rac2,rac1
4. 在 RAC 數(shù)據(jù)庫實例 1 (rac1) 中檢查集群的狀態(tài)
[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 數(shù)據(jù)庫實例 1 (rac1) 中停止 ASM 實例
[oracle@rac1 ~]$ srvctl stop asm -n rac1 -o abort -f
6. 在 RAC 數(shù)據(jù)庫實例 1 (rac1) 中檢查 ASM 實例的狀態(tài)
[oracle@rac1 ~]$ srvctl status asm ASM is running on rac2
7. 檢查 ASM 實例和 RAC 數(shù)據(jù)庫實例 (rac1) 的狀態(tài)
[oracle@rac1 ~]$ ps -ef | grep pmon oracle 7885 5795 0 06:20 pts/0 00:00:00 grep pmon
總結(jié):數(shù)據(jù)庫實例與 ASM 實例強關(guān)聯(lián)。如果 ASM 實例發(fā)生故障,同一節(jié)點上的數(shù)據(jù)庫實例也會發(fā)生故障。
?
為何使用 Oracle Flex ASM
-
Oracle Flex ASM 支持 Oracle Database 12c 客戶端使用更大的 LUN 大小。
-
支持的最大磁盤組數(shù)為 511。
-
可以靈活地重命名磁盤組中的 ASM 磁盤。
-
ASM 實例的補丁級驗證
-
滾動補丁期間禁用補丁級驗證
-
-
復(fù)制物理元數(shù)據(jù)
Oracle Flex ASM 中的網(wǎng)絡(luò)增強
-
在早期版本中,集群要求:
-
一個供客戶端應(yīng)用訪問的公共網(wǎng)絡(luò)
-
一個或多個用于集群內(nèi)節(jié)點間通信(包括 ASM 通信)的專用網(wǎng)絡(luò)
-
-
Flex ASM 增加 ASM 網(wǎng)絡(luò),可用于 ASM 與其客戶端之間的通信,以便隔離和分流 ASM 通信。
部署 Flex ASM
下面是 Flex ASM 安裝程序的屏幕截圖。
-
-
選擇選項“Advanced Installation”
-
有三個存儲選項:
-
12c 之前的 ASM 配置模式
Oracle Flex ASM
-
推薦
非 ASM 托管的存儲
-
-
管理 Flex ASM:
-
無需 Flex ASM 特定的實例參數(shù)
-
ASM 服務(wù)器實例使用自動內(nèi)存管理 (AMM)
?轉(zhuǎn):http://www.oracle.com/technetwork/cn/articles/database/flexasm-flexcluster-benefits-odb12c-2177371-zhs.html
?
-