作者 | JiekeXu
来源 | JiekeXu之路(ID: JiekeXu_IT)
转载请联系授权 | (微信ID:xxq1426321293)
大家好,我是 JiekeXu,很高兴又和大家见面了,今天分享一篇深入了解 Oracle Flex ASM 及其优点。本文首发于微信公众号【JiekeXu之路】,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达!
Oracle Flex ASM 允许 Oracle ASM 实例运行在与数据库服务器分离的物理服务器上。通过这种部署,更大的 Oracle ASM 实例集群可以支持更多的数据库客户端,同时减少整个系统的 Oracle ASM占用空间。当使用 Oracle Flex ASM 时,Oracle ASM 客户端被配置为直接访问存储。
使用 Oracle Flex ASM,可以将所有存储需求合并到一组磁盘组中。所有这些磁盘组都由运行在单个集群中的一小组 Oracle ASM 实例装载和管理。可以通过基数设置指定 Oracle ASM 实例的数量。默认值是三个实例。
集群是一组提供组成员关系服务的节点。每个集群都有一个全局惟一的名称。每个集群都有一个或多个 Hub 节点。中心节点可以访问 Oracle ASM 磁盘。每个集群至少有一个专用网络和一个公共网络。如果集群使用 Oracle ASM 存储,那么它至少有一个 Oracle ASM 网络。一个单一的网络可以被用作私有和 ASM 网络。出于安全原因,Oracle ASM 网络不应该是公开的。集群中只能运行一个 Oracle Flex ASM 配置。
在 Oracle Flex ASM 中,一个 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 集群注册表 (OCR) 和表决磁盘 (VD)。但是应用可以通过叶节点访问数据库,而不必在叶节点上运行 ASM 实例。通过中心节点连接到数据库使得它对应用透明。
图 1:描绘了一个典型的 Oracle Flex 集群,包含 4 个叶节点和 2 个中心节点。简单地说,Oracle Flex 集群需要 Oracle Flex ASM。
三、Oracle Flex ASM 的实现方面
Oracle Flex ASM 可通过两种方式实现:
标准 Oracle Flex ASM 配置:
Oracle Flex ASM 配置上的 ASM 实例故障:
[oracle@oel6-112-rac1 Desktop]$ hostname
oel6-112-rac1.localdomain
[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
[oracle@oel6-112-rac1 Desktop]$ srvctl status asm
ASM is running on oel6-112-rac2,oel6-112-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
[oracle@oel6-112-rac1 Desktop]$ asmcmd
ASMCMD> showclustermode
ASM cluster : Flex mode enabled
ASMCMD> showclusterstate
Normal
[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
[oracle@oel6-112-rac2 Desktop]$ asmcmd
ASMCMD> showclustermode
ASM cluster : Flex mode enabled
ASMCMD> showclusterstate
Normal
ASMCMD> exit
[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
[oracle@oel6-112-rac1 Desktop]$ srvctl stop asm -node oel6-112-rac1 -stopoption abort -force
[oracle@oel6-112-rac1 Desktop]$ srvctl status asm
PRCR-1070 : Failed to check if resource ora.asm is registered
Cannot communicate with crsd
[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
[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 的高可用特性。
[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
[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
[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 实例。可以看到对于一个任意一个节点的ASM 实例的意外关闭/启动,都不会影响该节点上的数据库状态,这大大增强了RAC 的高可用性。
如前面针对 Oracle 12c 的介绍所述,ASM 与数据库实例的关联本质上是特定的。这意味着,如果 ASM 实例无法启动,该节点 /ASM 中的关联数据库实例也无法启动,从而导致该数据库无法访问。
login as: oracle
oracle@192.168.xx.xx's password:
Last login: Fri Sep 27 06:05:44 2013
[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
[oracle@rac1 ~]$ srvctl status asm
ASM is running on rac2,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
[oracle@rac1 ~]$ srvctl stop asm -n rac1 -o abort -f
[oracle@rac1 ~]$ srvctl status asm
ASM is running on rac2
[oracle@rac1 ~]$ ps -ef | grep pmon
oracle 7885 5795 0 06:20 pts/0 00:00:00 grep pmon
总结:数据库实例与 ASM 实例强关联。如果 ASM 实例发生故障,同一节点上的数据库实例也会发生故障。
五、Oracle Flex ASM 中的网络增强
下面是 Flex ASM 安装程序的屏幕截图。
选择选项“Advanced Installation”
有三个存储选项:
标准 ASM
Oracle Flex ASM
非 ASM 托管的存储
六、管理 Flex ASM:
原文链接:https://www.oracle.com/cn/technical-resources/article/flex-asm-benefits.html
官方文档:http://docs.oracle.com/database/121/OSTMG/GUID-BC1A02CA-1355-4013-A874-1896C4EAB266.htm
http://docs.oracle.com/database/121/OSTMG/GUID-545C311D-24C6-421A-ACBE-CA29E1FDA0A6.htm
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/ostmg/manage-flex-asm.html#GUID-545C311D-24C6-421A-ACBE-CA29E1FDA0A6
今天的分享就到这里了,如果本文对您有一丁点儿帮助,请多支持“在看”与转发,不求小费了哪怕是一个小小的赞,您的鼓励都将是我熬夜写文章最大的动力,让我有一直写下去的动力,最后一起加油,奥利给!