现在的位置: 首页 > 综合 > 正文

Oracle 11g R2 ASM:了解 Oracle ASM 基本概念

2013年09月05日 ⁄ 综合 ⁄ 共 5945字 ⁄ 字号 评论关闭

  • About Oracle ASM Instances

  • About Oracle ASM Disk Groups

  • About Mirroring and Failure Groups

  • About Oracle ASM Disks

  • About Oracle ASM Files


About Oracle ASM Instances

Oracle ASM 实例基于和 Oracle Database 实例相同的技术构建。Oracle ASM instance 具有类似于 Oracle 数据库实例的 System Global Area (SGA) 和后台进程。但是,Oracle ASM 执行的任务比数据库实例要少, Oracle ASM SGA 要比数据库实例的 SGA 小很多。此外,Oracle ASM 对服务器的性能影响非常小。Oracle ASM 实例负责
mount 磁盘组,使 Oracle ASM 文件对数据库实例可用;Oracle ASM 实例不会 mount 数据库。

Oracle ASM 安装在 Oracle Grid Infrastructure home 中,而 Oracle Database 则安装在单独的 Oracle home 中。Oracle ASM 和数据库实例都需要共享访问磁盘组中的磁盘。 Oracle ASM 实例负责管理磁盘组的元数据,为数据库实例提供文件的布局信息。

Oracle ASM 使用 Oracle ASM 元数据来控制磁盘组。Oracle ASM 元数据位于磁盘组中,包含如下信息:

  • 磁盘和所属磁盘组的对应关系

  • 磁盘组上可用空间大小

  • 磁盘组上文件的文件名

  • 磁盘组数据文件的 extent 的位置

  • 记录有关自动更改元数据块的信息的 redo log

  • Oracle ADVM 卷信息

Oracle ASM 可以通过 Oracle Clusterware 软件实现集群化;每个集群节点一个 Oracle ASM 实例。如果同一个节点上存在多个同步的数据库实例,则这些数据库实例共用该节点上的一个 Oracle ASM 实例。

如果一个节点上的 Oracle ASM 实例失败,则该节点上的所有数据库实例也会失败。与文件系统驱动器不一样,一个 Oracle ASM 实例失败不需要重启操作系统。在 Oracle RAC 环境中,幸存节点上的 Oracle ASM 实例和数据库实例会自动从失败节点上的 Oracle ASM 实例进行恢复。

图 1-1 显示的是一个单节点 Oracle ASM 实例服务于多个数据库实例的配置。Oracle ASM 实例负责管理元数据,并未 Oracle ASM 文件提供空间分配。当数据库实例创建或打开一个 Oracle ASM 文件时,数据库实例首先会向 Oracle ASM 实例发出相应请求。然后,Oracle ASM 会作出响应,为数据库实例提供文件的 extent 位图信息。

在图 1-1 中有两个磁盘组:一个磁盘组有4块盘,另一个有2块盘。数据库对这两个磁盘组都可以访问。图 1-1 显示只需一个 Oracle ASM 实例便可为多个数据库实例提供服务的配置。

Figure 1-1 Oracle ASM for Single-Instance Oracle Databases

图 1-2 显示的是 Oracle RAC 环境中的一个 Oracle ASM 集群,其中 Oracle ASM 提供了一个集群化的存储池。每个节点一个 Oracle ASM 实例,集群中的多个 Oracle RAC 数据库或单实例数据库提供服务。所有数据库都整合起来,共用两个 Oracle ASM 磁盘组。

Figure 1-2 Oracle ASM Cluster Configuration with Oracle RAC

如  图 1-3 所示,一个集群化存储池可以被多个单实例 Oracle 数据库所共用。在这种情况下,多个数据库共享共用的磁盘组。共享 Oracle ASM 存储池可以通过 Oracle Clusterware 实现。需要注意的是,在这类环境中不需要获得 Oracle RAC license。

无论您是否要在节点上安装 Oracle RAC,要在多个节点上共享磁盘组,必须在要共享的所有节点上安装 Oracle Clusterware。单独节点上的 Oracle ASM 实例不需要成为 Oracle ASM 集群的一部分。但是,如果该 Oracle ASM 实例不属于某个 Oracle ASM 集群,则节点之间就无法彼此进行通信。不属于一个 Oracle ASM 集群的多个节点无法共享 Oracle ASM 磁盘组。

Figure 1-3 Oracle ASM Cluster with Single-Instance Oracle Databases



About Oracle ASM Disk Groups

磁盘组由多块磁盘组成,是 Oracle ASM 管理的基本对象。每个磁盘组包含磁盘组中用于空间管理的元数据。磁盘组组件包括磁盘、文件和分配单元。

Oracle ASM 文件是在磁盘组中进行分配的,所有 Oracle ASM 文件都完全包含在单个磁盘组内。一个磁盘组可以包含属于多个数据库的文件,一个数据库可以使用来自多个磁盘组的温家安。对于大多数安装配置来说,一般只需要2到3个磁盘就足矣。


About Mirroring and Failure Groups

镜像技术可以通过在多块磁盘中存储数据副本保护数据完整性。在创建磁盘组时,需要按照如下三种冗余级别指定 Oracle ASM 磁盘组的类型:

  • Normal:2-way mirroring

  • High:3-way mirroring

  • External: 不使用 Oracle ASM 镜像技术,使用 RAID 等硬件冗余技术

冗余级别控制能够承受多大程度的磁盘故障而不用 dismount 磁盘组或丢失数据。磁盘组类型决定了 Oracle 在磁盘组中创建文件的镜像级别。

Oracle ASM 镜像比传统的 RAID 镜像要灵活许多。对于指定未 Normal 冗余级别的磁盘组,可以为每个 Oracle ASM 文件指定冗余级别。例如,两个共享同一磁盘组的文件,可以为其中一个文件创建镜像,另一个不创建镜像。

当 Oracle ASM 为镜像文件分配一个 extent 时,Oracle ASM 会分配一个 primary copy 和一个 mirror copy。 Oracle ASM 会选择与 primary copy 所在磁盘组同步的 failure group (故障组)来存储 mirror copy。故障组用于存放数据的镜像副本,以实现每个副本存放在不同故障组中的磁盘上,这样当一个故障组中的所有磁盘发生故障时,也不会导致数据丢失。

在创建 Oracle ASM 磁盘组时,可以为磁盘组定义故障组。磁盘组创建后,就无法再修改该磁盘组的冗余级别。如果忽略故障组指定,则 Oracle ASM 会将每个磁盘放进自己的故障组中(包含 Oracle Exadata cell 上的磁盘的磁盘组除外)。Normal 冗余磁盘组需要至少两块故障组。High 冗余磁盘组需要至少三块磁盘组。External 冗余的磁盘组不需要使用故障组。


About Oracle ASM Disks

Oracle ASM 磁盘是用于配置 Oracle ASM 磁盘组的存储设备。Oracle ASM 磁盘示例包括:

  • 存储阵列上的磁盘或分区

  • 一整块磁盘或磁盘上的分区

  • 逻辑卷

  • NFS (Network-attached files)

在向磁盘组中添加磁盘时,可以手动分配 Oracle ASM 磁盘名称,也可以让 Oracle ASM 自动分配 Oracle ASM 磁盘名称。此名称与操作系统使用的路径名称不同。在一个集群中,一块磁盘在不同节点上可能会被分配不同的操作系统设备名称,但是该磁盘在所有节点上都具有相同的 Oracle ASM 磁盘名称。在集群中,Oracle ASM 磁盘必须可以从共用该磁盘组的所有实例进行访问。

Oracle ASM 会将文件均衡地分布在磁盘组中的所有磁盘上。这种分配方式按照相同的容量级别维护每块磁盘,确保磁盘组中的所有磁盘都具有相同的 I/O 负载。由于 Oracle ASM 将负载均衡分散于磁盘组中的所有磁盘上,不同的 Oracle ASM 磁盘不必共用同一物理驱动器。

Allocation Units

每块 Oracle ASM 磁盘被分为若干个分配单元 (AU)。分配单元是磁盘组空间分配的基本单位。一个文件 extent 由一个或多个分配单元组成。Oracle ASM 文件由一个或多个文件 extent 组成。

在创建磁盘组时,可以使用  AU_SIZE 磁盘组属性指定 Oracle ASM 分配单元的大小。该值可以设置为 1、2、4、8、16、32 或 64 MB,具体情况视特定磁盘组的兼容性级别而定。对于数据仓库类型的应用,存在大量的 sequential reads,较大的 AU 大小,通常可以提供更佳的性能优势。

About Oracle ASM Files

存储在 Oracle ASM 磁盘组中的文件称为 Oracle ASM 文件。每个 Oracle ASM 文件包含在单个 Oracle ASM 磁盘组中。Oracle Database 以文件形式与 Oracle ASM 进行交互。这与 Oracle Database 使用任意文件系统上的文件类似。Oracle ASM 磁盘组中可以存放以下类型的文件:

  • 控制文件

  • 数据文件、临时数据文件和数据文件副本

  • SPFILE

  • Online redo log、 archive log 和 Flashback log

  • RMAN 备份

  • 灾难恢复配置

  • Change tracking bitmap

  • Data Pump dumpset

Oracle ASM 会在创建文件和表空间时自动生成 Oracle ASM 文件名称。 Oracle ASM 文件名以加号 (+) 开头,后跟磁盘组名称。可以为 Oracle ASM 文件指定用户友好的别名,为别名创建层次目录结构。

Oracle ASM 文件包含如下组件:

  • Extents

  • Oracle ASM Striping

  • File Templates

Extents

Oracle ASM 文件的内容是以一组或一系列存储在磁盘组内各个磁盘上的  extent 的形式存放在磁盘组中。 每个 extent 位于一个单独的磁盘。Extent 又由一个或多个 allocation unit (AU) 组成。为了适应文件大小的不断增加,Oracle ASM 使用可变大小的 extent。

对于非常大的数据库而言,可变大小的 extent 可以支持更大的 Oracle ASM 数据文件,减少 SGA 内存的请求次数,提高文件创建和打开的性能。初始化 extent 的大小等于磁盘组分配单元的大小,按照预定的系数 4 或 16 不断地增加。当特定的磁盘组兼容性属性设置为 11.1 以上时,此特性会自动新建数据文件,并充值数据文件的大小。

Extent 大小按照如下方式变化:

  • 在前 20000 extent 集  (0 - 19999) 内,extent 的大小始终等于磁盘组的 1*AU。

  • 在下一个  20000 extent 集 (20000 - 39999)内,extent 的大小等于 4*AU。

  • 在 40000+以上的 extent 集, extent 的大小等于 16*AU。

图 1-4 显示的是 Oracle ASM 文件 extent 与分配单元之间的关系。前 8 个 extent (0 to 7) 分布于 4 个 Oracle ASM 磁盘,大小等于 1*AU。在前一个 20000 extent 集之后,下一个 20000 extent 集 (20000 - 39999) 内,extent 的大小变为 4*AU。This is shown as bold rectangles extent 20000 ~ 20007
的大小变为了 4*AU,下图用粗体矩形标签注明。

Figure 1-4 Oracle ASM File Allocation in a Disk Group

Oracle ASM Striping

Oracle ASM 条带化主要有以下两个目的:

  • 将负载均衡分散在磁盘组中的所有磁盘上

  • 减少 I/O 延迟

ASM 条带化分为粗粒度条带化和细粒度条带化。粗粒度的条带化为磁盘组提供负载均衡,而细粒度条带化则可以通过广泛地分散负载减少特定文件类型的 I/O 延迟。

为了对数据进行条带化,Oracle ASM 将文件条带化存储,将文件中的数据均匀分布于磁盘组中的所有磁盘上。在任何配置中,细粒度条带的大小始终等于 128 KB;这可以为小型的 I/O 操作提供较低的  I/O 延迟。粗粒度条带的大小始终等于 AU size (非 数据 extent 的大小)。

图 1-5 和图 1-6 展示了 Oracle ASM 文件条带化。在 2 个图中,AU 大小都为 1 M (AU_SIZE = 1M) ,磁盘组为 8 块磁盘构成。实例版本为 Oracle ASM 11g Release 2 (11.2),磁盘组的 ASM 和 RDBMS 兼容性属性设置为 11.2,图中显示了在前20000个extent之后,extent
的大小发生了变化。对于前 
20,000 个 extent,extent 的大小为 1 M 等于 1*AU。对于下一个 20,000 extent 集,extent 的大小为 4 M,等于 4*AU。

在图 1-5 中,文件以 128 K 小块(以 A……X 为标签)的形式进行条带化,每个 128 K 小块都存储在一个 extent 中,从磁盘 1中的第一个 extent 开始,依次是磁盘 2 中的第一个 extent,然后以循环方式依次分布于所有磁盘,直到整个文件都被条带化。如本例中所示,条带化的小块首先填满每个磁盘的第一个 extent,然后再填每个磁盘的第二个 extent,直至整个文件全被条带化。

Figure 1-5 Oracle ASM Fine-Grained Striping

在图 1-6 中,文件以 1 M 小块(以 A……X 为标签)为单位进行条带化,其中每个 1 M 小块唯一地存储在一个 extent 中,从磁盘 1 的第一个 extent 开始,依次是磁盘 2 的第一个 extent, 然后以循环方式依次分布于所有磁盘,直到整个文件都被条带化。 对于前 20,000 个 extent,extent 的大小等于 1*AU (1M),条带的大小等于 extent 大小和分配单元的大小。对于可变的 extent,一个
extent 由多个分配单元组成,文件条带位于 extent 的 AU 内。在条带化延伸至下一个 extent 之前,条带化的小块都位于所有磁盘的第一个 extent 的分配单元内。

Figure 1-6 Oracle ASM Coarse-Grained Striping

File Templates

模板是用于在创建 Oracle ASM 文件时指定磁盘区域、文件镜像以及条带化属性的一系列属性值。在创建一个文件时,可以包含一个模板名称,按照各个文件而不是文件类型分配所需的属性。

默认的模板是用于所有 Oracle 文件类型,可以定制模板来满足特定的需求。所有磁盘组对于每种文件类型都有一个默认的模板。


转载请注明作者出处及原文链接,否则将追究法律责任:

作者:xiangsir

原文链接:http://blog.csdn.net/xiangsir/article/details/10249637

QQ:444367417

MSN:xiangsir@hotmail.com




抱歉!评论已关闭.