深入了解 Oracle Flex ASM 及其优点
簡介
?
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.localdomain2. 檢查 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_+APX13. 從實例 1 (rac1) 檢查 RAC 數據庫實例中 ASM 實例的狀態
[oracle@oel6-112-rac1 Desktop]$ srvctl status asm ASM is running on oel6-112-rac2,oel6-112-rac14. 在實例 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 online5. 用于檢查 Oracle Flex ASM 是否啟用的命令 (rac1)
[oracle@oel6-112-rac1 Desktop]$ asmcmd ASMCMD> showclustermode ASM cluster : Flex mode enabled ASMCMD> showclusterstate Normal6. 用于更改 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_ASM7. 用于檢查 Oracle Flex ASM 是否啟用的命令 (rac2)
[oracle@oel6-112-rac2 Desktop]$ asmcmd ASMCMD> showclustermode ASM cluster : Flex mode enabled ASMCMD> showclusterstate Normal ASMCMD> exit8. 如何更改 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_ASM9. 在 RAC 數據庫實例 1 (rac1) 中關閉 ASM 實例
[oracle@oel6-112-rac1 Desktop]$ srvctl stop asm -node oel6-112-rac1 -stopoption abort -force10. 在 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 crsd11. 在 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 online12. 在實例 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/oracle14. 從 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 2SQL> connect sys/oracle@orcl as sysdba Connected.SQL> select instance_name,instance_number from gv$instance;INSTANCE_NAME INSTANCE_NUMBER ------------------------------------------- orcl1 115. 從 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 +ASM2ASMCMD> 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 oracle@192.168.xx.xx's password: Last login: Fri Sep 27 06:05:44 20132. 檢查 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_flavia13. 在 RAC 數據庫實例 1 (rac1) 中檢查 ASM 實例的狀態
[oracle@rac1 ~]$ srvctl status asm ASM is running on rac2,rac14. 在 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 online5. 在 RAC 數據庫實例 1 (rac1) 中停止 ASM 實例
[oracle@rac1 ~]$ srvctl stop asm -n rac1 -o abort -f6. 在 RAC 數據庫實例 1 (rac1) 中檢查 ASM 實例的狀態
[oracle@rac1 ~]$ srvctl status asm ASM is running on rac27. 檢查 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 配置模式
- 推薦
?
-
管理 Flex ASM:
-
無需 Flex ASM 特定的實例參數
-
ASM 服務器實例使用自動內存管理 (AMM)
?轉:http://www.oracle.com/technetwork/cn/articles/database/flexasm-flexcluster-benefits-odb12c-2177371-zhs.html
?
-
轉載于:https://www.cnblogs.com/andy6/p/5881180.html
總結
以上是生活随笔為你收集整理的深入了解 Oracle Flex ASM 及其优点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NDN与TCP/IP
- 下一篇: shell脚本应用(二)