简介

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)

  1. [oracle@oel6-112-rac1 Desktop]$ hostname
  2. oel6-112-rac1.localdomain

2. 检查 ASM 实例和 RAC 数据库实例的状态

  1. [oracle@oel6-112-rac1 Desktop]$ ps -ef | grep pmon
  2. oracle 3325 1 0 17:39 ? 00:00:00 asm_pmon_+ASM1
  3. oracle 3813 1 0 17:40 ? 00:00:00 mdb_pmon_-MGMTDB
  4. oracle 5806 1 0 17:42 ? 00:00:00 ora_pmon_orcl1
  5. oracle 6193 1 0 17:42 ? 00:00:00 apx_pmon_+APX1

3. 从实例 1 (rac1) 检查 RAC 数据库实例中 ASM 实例的状态

  1. [oracle@oel6-112-rac1 Desktop]$ srvctl status asm
  2. ASM is running on oel6-112-rac2,oel6-112-rac1

4. 在实例 1 (rac1) 中检查集群状态

  1. [oracle@oel6-112-rac1 Desktop]$ crsctl check cluster
  2. CRS-4537: Cluster Ready Services is online
  3. CRS-4529: Cluster Synchronization Services is online
  4. CRS-4533: Event Manager is online

5. 用于检查 Oracle Flex ASM 是否启用的命令 (rac1)

  1. [oracle@oel6-112-rac1 Desktop]$ asmcmd
  2. ASMCMD> showclustermode
  3. ASM cluster : Flex mode enabled
  4. ASMCMD> showclusterstate
  5. Normal

6. 用于更改 ASM 基数的命令 (rac1)

  1. [oracle@oel6-112-rac1 Desktop]$ srvctl status asm -detail
  2. ASM is running on oel6-112-rac2,oel6-112-rac1
  3. ASM is enabled.
  4. [oracle@oel6-112-rac1 Desktop]$ srvctl config asm -detail
  5. ASM home: /u01/app/12.1.0/grid
  6. Password file: +DATA/orapwASM
  7. ASM listener: LISTENER
  8. ASM is enabled.
  9. ASM instance count: 3
  10. Cluster ASM listener: ASMNET1LSNR_ASM

7. 用于检查 Oracle Flex ASM 是否启用的命令 (rac2)

  1. [oracle@oel6-112-rac2 Desktop]$ asmcmd
  2. ASMCMD> showclustermode
  3. ASM cluster : Flex mode enabled
  4. ASMCMD> showclusterstate
  5. Normal
  6. ASMCMD> exit

8. 如何更改 ASM 基数 (rac2)

  1. [oracle@oel6-112-rac2 Desktop]$ srvctl config asm -detail
  2. ASM home: /u01/app/12.1.0/grid
  3. Password file: +DATA/orapwASM
  4. ASM listener: LISTENER
  5. ASM is enabled.
  6. ASM instance count: 3
  7. Cluster ASM listener: ASMNET1LSNR_ASM

9. 在 RAC 数据库实例 1 (rac1) 中关闭 ASM 实例

  1. [oracle@oel6-112-rac1 Desktop]$ srvctl stop asm -node oel6-112-rac1 -stopoption abort -force

10. 在 RAC 数据库实例 1 (rac1) 中检查 ASM 实例的状态

  1. [oracle@oel6-112-rac1 Desktop]$ srvctl status asm
  2. PRCR-1070 : Failed to check if resource ora.asm is registered
  3. Cannot communicate with crsd

11. 在 RAC 数据库实例 1 (rac1) 中检查集群服务的状态

  1. [oracle@oel6-112-rac1 Desktop]$ crsctl check cluster
  2. CRS-4535: Cannot communicate with Cluster Ready Services
  3. CRS-4529: Cluster Synchronization Services is online
  4. CRS-4533: Event Manager is online

12. 在实例 1 (rac1) 中检查 ASM 和 RAC 数据库的状态

  1. [oracle@oel6-112-rac1 Desktop]$ ps -ef | grep pmon
  2. oracle 3813 1 0 17:40 ? 00:00:00 mdb_pmon_-MGMTDB
  3. oracle 5806 1 0 17:42 ? 00:00:00 ora_pmon_orcl1
  4. oracle 6193 1 0 17:42 ? 00:00:00 apx_pmon_+APX1

注:在这里,数据库实例与特定节点中运行的特定 ASM 实例关联。如果因为某种原因,ASM 实例无法启动/服务关闭,数据库实例仍然可以启动,因为数据库实例将查找同一集群中运行的 ASM 实例。图 3 描绘了 Flex ASM 的高可用特性。

13. 在 RAC 数据库实例 1 (rac1) 中检查没有 ASM 实例的正在运行的 RAC 数据库实例的状态

  1. [oracle@oel6-112-rac1 Desktop]$ . oraenv
  2. ORACLE_SID = [orcl1] ? orcl1
  3. ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/12.1.0/db_1
  4. The Oracle base remains unchanged with value /u01/app/oracle

14. 从 RAC 数据库实例 1 (rac1) 登录数据库实例

  1. [oracle@oel6-112-rac1 Desktop]$ sqlplus /nolog
  2. SQL*Plus: Release 12.1.0.1.0 Production on Wed Sep 25 18:24:36 2013
  3. Copyright (c) 1982, 2013, Oracle. All rights reserved.
  4.  
  5. SQL> connect sys/oracle@orcl as sysdba
  6. Connected.
  7.  
  8. SQL> select instance_name,instance_number from gv$instance;
  9.  
  10. INSTANCE_NAME INSTANCE_NUMBER
  11. -------------------------------------------
  12. orcl2 2
  13. orcl1 1
  14. SQL> select instance_name,instance_number from v$instance;
  15.  
  16. INSTANCE_NAME INSTANCE_NUMBER
  17. -------------------------------------------
  18. orcl2 2
  19.  
  20. SQL> connect sys/oracle@orcl as sysdba
  21. Connected.
  22.  
  23. SQL> select instance_name,instance_number from gv$instance;
  24.  
  25. INSTANCE_NAME INSTANCE_NUMBER
  26. -------------------------------------------
  27. orcl1 1

15. 从 RAC 数据库实例 1 (rac1) 连接到 RAC 数据库实例 2 (rac2) 的 ASM 实例

  1. [oracle@oel6-112-rac1 Desktop]$ . oraenv
  2. ORACLE_SID = [orcl1] ? +ASM2
  3. ORACLE_HOME = [/home/oracle] ? /u01/app/12.1.0/grid
  4. The Oracle base remains unchanged with value /u01/app/oracle
  5.  
  6. [oracle@oel6-112-rac1 Desktop]$ asmcmd --privilege sysasm --inst +ASM2
  7.  
  8. ASMCMD> lsdg
  9. State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
  10. MOUNTED EXTERN N 512 4096 1048576 15342 4782 0 4782 0 Y DATA/
  11. ASMCMD>

总结:数据库实例使用一个专用 ASM 实例,我们强制该 ASM 实例被停止工作来模拟故障,因此数据库实例重新连接到另一节点(在本示例中为节点 2 (rac2))上的现有 ASM 实例。

Oracle Database 11.2 或早期版本

如前面针对 Oracle 12c 的介绍所述,ASM 与数据库实例的关联本质上是特定的。这意味着,如果 ASM 实例无法启动,该节点/ASM 中的关联数据库实例也无法启动,从而导致该数据库无法访问。

1. 登录 RAC 数据库实例 1 (rac1)

  1. login as: oracle
  2. oracle@192.168.xx.xx's password:
  3. Last login: Fri Sep 27 06:05:44 2013

2. 检查 ASM 实例和 RAC 数据库实例的状态:

  1. [oracle@rac1 ~]$ ps -ef | grep pmon
  2. oracle 3053 1 0 05:56 ? 00:00:00 asm_pmon_+ASM1
  3. oracle 3849 1 0 05:57 ? 00:00:00 ora_pmon_flavia1

3. 在 RAC 数据库实例 1 (rac1) 中检查 ASM 实例的状态

  1. [oracle@rac1 ~]$ srvctl status asm
  2. ASM is running on rac2,rac1

4. 在 RAC 数据库实例 1 (rac1) 中检查集群的状态

  1. [oracle@rac1 ~]$ crsctl check cluster
  2. CRS-4537: Cluster Ready Services is online
  3. CRS-4529: Cluster Synchronization Services is online
  4. CRS-4533: Event Manager is online

5. 在 RAC 数据库实例 1 (rac1) 中停止 ASM 实例

  1. [oracle@rac1 ~]$ srvctl stop asm -n rac1 -o abort -f

6. 在 RAC 数据库实例 1 (rac1) 中检查 ASM 实例的状态

  1. [oracle@rac1 ~]$ srvctl status asm
  2. ASM is running on rac2

7. 检查 ASM 实例和 RAC 数据库实例 (rac1) 的状态

  1. [oracle@rac1 ~]$ ps -ef | grep pmon
  2. 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)

        转:http://www.oracle.com/technetwork/cn/articles/database/flexasm-flexcluster-benefits-odb12c-2177371-zhs.html

深入了解 Oracle Flex ASM 及其优点的更多相关文章

  1. FAQ: Oracle Flex ASM 12c / 12.1 (Doc ID 1573137.1)

    FAQ: Oracle Flex ASM 12c / 12.1 (Doc ID 1573137.1) APPLIES TO: Oracle Database - Enterprise Edition ...

  2. Oracle 下ASM磁盘总结

    Oracle 下ASM磁盘总结 文章转载: Oracle下创建ASM磁盘总结https://blog.csdn.net/okhymok/article/details/78791841?utm_sou ...

  3. 探索ORACLE之ASM概念(完整版)

    探索ORACLE之ASM概念(完整版) 本文出自https://www.jb51.net/article/43527.htm ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出 ...

  4. ORACLE之ASM学习

    ASM(Automatic Storage Management)是Oracle10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,主要用于替代操作 ...

  5. Oracle 11203 + ASM安装 for HP UX

    一,安装前准备 1.创建所需组和用户 /usr/sbin/groupadd -g 1000 oinstall/usr/sbin/groupadd -g 1020 asmadmin/usr/sbin/g ...

  6. rhel5.8安装oracle 10g ASM

    1.所有的配置和文件系统一样 2.规划: 加了8块小盘,ASM为了实验使用asmlib驱动(rhel6不再支持asmlib驱动),裸设备的2种方法(rowdevice和udev) 三块盘使用asmli ...

  7. ORACLE误删除ASM磁盘修复

    在数据库运维中,总会遇到一些粗心大意的DBA,一不小心删除一些东西,这里举例讲解在误删除ASM磁盘之后,如果用KFED工具进行恢复: [grid@RAC1 ~]$ sqlplus / as sysas ...

  8. Oracle RAC asm常用命令

    在Oracle RAC环境下,使用grid帐号执行 运行asmcmd进入asm命令模式,如: [grid@oradb-node1 ~]$ asmcmd ASMCMD> ASMCMD> du ...

  9. ORACLE之ASM概念

    一.     ASM(自动存储管理)的来由: ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,主要用于替代操作系统所提供的 ...

随机推荐

  1. python--httplib模块使用

    httplib是一个相对底层的http请求模块,其上有专门的包装模块,如urllib内建模块,goto等第三方模块,但是封装的越高就越不灵 活,比如urllib模块里请求错误时就不会返回结果页的内容, ...

  2. Java 获取本机IP

    import java.io.*; import java.util.*; import java.net.*; public class GetIP { public static void mai ...

  3. lintcode:接雨水

    接雨水 给出 n 个非负整数,代表一张X轴上每个区域宽度为 1 的海拔图, 计算这个海拔图最多能接住多少(面积)雨水. 如上图所示,海拔分别为 [0,1,0,2,1,0,1,3,2,1,2,1], 返 ...

  4. libprotobuf ERROR

    google/protobuf/wire_format.cc:1059] Encountered string containing invalid UTF-8 data while parsing  ...

  5. TCP三次握手和四次挥手协议

    相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助. TCP三次握手   所谓三次握手( ...

  6. Android是什么 之三手机之硬件形态

    手机硬件形态 本节可能与Android无关,但是Android系统现在这个阶段更多的是移动终端形态的开发平台,本节给出了Android背后的工作-Android管理的硬件是什么,Android的本质就 ...

  7. Java-数据结构与算法-二分查找法

    1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: package Test; import java.util.Arrays; public class BinarySe ...

  8. CreateFile,WriteFile,ReadFile

    注意: CreateFile 跟 fopen 不同,打开文件时不区分 文本方式 或 二进制 方式 ReadFile 或 WriteFile 都是对二进制数据进行操作 HANDLE WINAPI Cre ...

  9. RAID

    RAID(is short for redundant arrays of independent disks) 独立/廉价磁盘冗余阵列.基本思想:把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使 ...

  10. Spring AOP 创建切面

        增强被织入到目标类的所有方法中,但是如果需要有选择性的织入到目标类某些特定的方法中时,就需要使用切点进行目标连接点的定位.增强提供了连接点方位信息:如织入到方法前面.后面等,而切点进一步描述织 ...