• 深入了解 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。
    image

    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 配置:
    image
    Oracle Flex ASM 配置上的 ASM 实例故障:
    image

    1. 登录 RAC 数据库实例 1 (rac1)
    [oracle@oel6-112-rac1 Desktop]$ hostname
    oel6-112-rac1.localdomain
    
    1. 检查 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
    
    1. 从实例 1 (rac1) 检查 RAC 数据库实例中 ASM 实例的状态
    [oracle@oel6-112-rac1 Desktop]$ srvctl status asm
    ASM is running on oel6-112-rac2,oel6-112-rac1
    
    1. 在实例 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
    
    1. 用于检查 Oracle Flex ASM 是否启用的命令 (rac1)
    [oracle@oel6-112-rac1 Desktop]$ asmcmd
    ASMCMD> showclustermode 
    ASM cluster : Flex mode enabled
    ASMCMD> showclusterstate
    Normal
    
    1. 用于更改 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
    
    1. 用于检查 Oracle Flex ASM 是否启用的命令 (rac2)
    [oracle@oel6-112-rac2 Desktop]$ asmcmd
    ASMCMD> showclustermode
    ASM cluster : Flex mode enabled
    ASMCMD> showclusterstate
    Normal
    ASMCMD> exit
    
    1. 如何更改 ASM 基数 (rac2)
    [oracle@oel6-112-rac2 Desktop]$ srvctl modify asm -count 2
    [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: 2
    Cluster ASM listener: ASMNET1LSNR_ASM
    
    1. 在 RAC 数据库实例 1 (rac1) 中关闭 ASM 实例
    [oracle@oel6-112-rac1 Desktop]$ srvctl stop asm -node oel6-112-rac1 -stopoption abort -force
    
    1. 在 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
    
    1. 在 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
    
    1. 在实例 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
    
    1. 从 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
    
    1. 从 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
    oracle@192.168.xx.xx's password:
    Last login: Fri Sep 27 06:05:44 2013
    
    1. 检查 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
    
    1. 在 RAC 数据库实例 1 (rac1) 中检查 ASM 实例的状态
    [oracle@rac1 ~]$ srvctl status asm
    
    ASM is running on rac2,rac1
    
    1. 在 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
    
    1. 在 RAC 数据库实例 1 (rac1) 中停止 ASM 实例
    [oracle@rac1 ~]$ srvctl stop asm -n rac1 -o abort -f
    
    1. 在 RAC 数据库实例 1 (rac1) 中检查 ASM 实例的状态
    [oracle@rac1 ~]$ srvctl status asm
    ASM is running on rac2
    
    1. 检查 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”

    image

    有三个存储选项:
    标准 ASM

    • 12c 之前的 ASM 配置模式
      Oracle Flex ASM
    • 推荐
      非 ASM 托管的存储

    image

    管理 Flex ASM

    无需 Flex ASM 特定的实例参数
    ASM 服务器实例使用自动内存管理 (AMM)

    作者:bicewow —— bicewow

    出处:http://www.cnblogs.com/bicewow/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Jboss下jaxws的开发
    Jboss as 服务器基本设置
    classloader常见问题总结
    Servlet容器 Jetty
    Jetty 的工作原理以及与 Tomcat 的比较
    resin设置jvm参数
    Solr4.0使用
    Solr 4.0部署
    Solr 搜索功能使用
    HttpSolrServer 实例管理参考,来自org.eclipse.smila.solr
  • 原文地址:https://www.cnblogs.com/bicewow/p/14751107.html
Copyright © 2020-2023  润新知