Oracle Automatic Storage Management 概述

一、ORACLE ASM DISK GROUP
    disk group由多个磁盘组成,是ORACLE ASM管理的根本目标。每一个disk group包含管理磁盘组空间所需的元数据。磁盘组组件包括disk,files和allocation units。
    files从磁盘组中分配。任何oracle asm文件完全包含在单个disk group中。一个disk group 包含的文件可能属于多个数据库、单个数据库可以使用来自多个disk group的文件。在大多数环境下,仅需要很少的disk group,通常是两个,很少超过三个。
CREATE DISKGROUP data NORMAL REDUNDANCY
  FAILGROUP controller1 DISK
    '/devices/diska1' NAME diska1,
    '/devices/diska2' NAME diska2,
    '/devices/diska3' NAME diska3,
    '/devices/diska4' NAME diska4
  FAILGROUP controller2 DISK
    '/devices/diskb1' NAME diskb1,
    '/devices/diskb2' NAME diskb2,
    '/devices/diskb3' NAME diskb3,
    '/devices/diskb4' NAME diskb4
  ATTRIBUTE 'au_size'='4M',
    'compatible.asm' = '11.2', 
    'compatible.rdbms' = '11.2',
    'compatible.advm' = '11.2';
二、Mirroring and Failure Groups
   通过镜像存储在多个磁盘上的数据拷贝可以保护数据的完整性。当你创建一个disk group,可以基于以下冗余级别来指定ASM disk group的类型。
   1、Normal for 2-way mirroring
   2、High for 3-way mirroring
   3、External to not use Oracle ASM mirroring, such as when you configure hardware RAID for redundancy
   
   冗余级别可以控制有多少个磁盘损坏不至于导致dismount disk group或丢失数据。disk group 类型决定此disk group创建的oracle文件的镜像级别。
   oracle ASM镜像比传统的RAID镜像更灵活。对于指定为NORMAL冗余的disk group,你可以指定每个文件的冗余级别。比如有两个文件属于同一个disk group,一个文件可以有镜像,另一个文件没有镜像。
   当ORACLE ASM为镜像文件分配了一个extent,ORACLE ASM分配一个主副本和镜像副本。ORACLE ASM选择存储镜像副本和主副本的磁盘不在同一个failure group。在一个failure group中的磁盘同时故障不会导致数据丢失。
   当你创建一个disk group时你可以定义failure group。当你创建完disk group后,disk group的冗余级别将不能改变。如果在创建磁盘组时忽略了failure group,ORACLE ASM将自动将每个磁盘分配到自己的failure group,除非disk group包含的磁盘在ORACLE Exadata cell。NORMAL冗余的disk group至少需要两个failure group。HIGH冗余的disk group至少需要三个failure group,EXTERNAL冗余的disk group不需要failure group。
三、ORACLE ASM DISK
   ORACLE ASM DISK是供应给ORACLE ASM DISK GROUP的存储设备。ORACLE ASM包括:
   1、存储阵列中的磁盘或分区
   2、这个磁盘或磁盘分区
   3、逻辑卷
   4、Network-attached files (NFS)
   当你向一个disk group中添加磁盘时,你可以指定ORACLE ASM磁盘名称或ORACLE ASM自动分配一个ORACLE ASM磁盘名称。这个名称和操作系统使用的路径名不同。在集群环境中,一个磁盘在不同的节点上可能被分配不同的设备名称,但是在所有节点上有相同的ORACLE ASM磁盘名称。在集群环境中,ORACLE ASM磁盘必须被所有的节点访问。
   ORACLE ASM在disk group中所有的disk 有相同的文件扩展比例。这种分配方式保证了每个磁盘具有相同的容量、确保同一个disk group中的所有磁盘具有相同的IO负载。由于在一个磁盘组中所有的磁盘负载均衡,所以不同的oracle asm disk不能共享同一个物理驱动器。

四、Allocation Units
   每个ORACLE ASM DISK被划分为分配单元(AU)。AU是磁盘组中的基本单元。一个file extent由一个或多个AU组成。一个ORACLE ASM FILE由一个或多个file extent组成。
   当你创建一个disk group是,你可以通过设置AU_SIZE磁盘组属性值来设置SU的大小。该值可以使1,2,4,8,16,32或64MB,这取决于指定磁盘组的兼容水平。大的AU size对使用大量连续读取的数据仓库性能较好。
五、About Oracle ASM Files
   存储在ASM磁盘组的文件叫ORACLE ASM files。每个oracle ASM文件包含在一个ORACLE ASM DISK GROUP中。oracle数据库和ORACLE ASM文件中的条款进行通信。这类似于ORACLE数据库使用任何文件系统上的文件。你可以在ORACLE DISK GROUP中存储各种类型的文件。
 1)控制文件
 2)数据文件、临时文件、数据文件的副本
 3)SPFILE
 4)在线日志文件、归档日志和闪回日志
 5)RMAN备份
 6)灾难恢复配置
 7)更改跟踪位图
 8)data pump 导出文件集
  ORACLE ASM自动生成ORACLE ASM文件名作为文件创建和表空间创建的一部分。ORACLE ASM文件名以+disk group name开始。你可以指定用户友好ORACLE ASM 文件命名方式和创建一个分层目录结构。
以下各节描述ORACLE ASM文件的组成。
  1、extent
   ORACLE ASM 文件中的内容以set或collecton存储在一个disk group中。extent存储在磁盘组中的单个磁盘上。每个extent位于一个单独的磁盘上。extents由一个或多个AU组成。为了适应不断增加的文件,ORACLE ASM使用可变大小的extents。
可变大小的extents能支持更大的ORACLE ASM数据文件,减少对大型数据库SGA内存的需求、提高文件创建和打开操作的性能。初始化extent的大小和磁盘组AU的大小相等,extent在预定的范围内增加4或16倍。当指定磁盘组的compatibility属性值为11.1或更高时,该功能对于新建或调整数据文件时是自动的。
文件的extent的大小按照以下方式变化:
1)当extent为0-19999时exent的大小始终和AU的大小相等。
2)当extent为20000-39999时,extent的大小等于AU*4
3)当extent大于40000时,extent的大小为AU*16
  下图显示了ORACLE ASM 文件的extent和AU的关系。前8个分布在4个ASM磁盘上,其大小等于AU的大小。从20000开始,extent size变为AU*4。
 
 
 
 
2、Oracle ASM Striping
  ORACLE ASM 条带化主要有两个目的:
  1)平衡磁盘组中磁盘的负载
  2)降低IO延迟
粗粒度的条带化为磁盘组提供负载均衡,细粒度的条带化通过更广泛的传播负载从而减少特定文件类型的延迟。
  为了条带化数据,ORACLE ASM将文件分离成条纹,均匀的分布在磁盘组的各个磁盘上。在任何配置中细粒度的条带大小等于128KB,这将在小量IO操作时降低IO延迟。粗粒度的条带大小始终等于AU的大小(不是data extent的大小)。图1-5和图1-6是ORACLE ASM条带化的插图。在两个插图中,在由8块磁盘组成的磁盘组中AU的大小为1M(AU_SIZE = 1M)。ORACLE ASM实例的版本为11.2,磁盘组的ASM和RDBMS的compatibility属性设置为11.2,在20000extents后显示了variable extent。在前20000个extents,extent的大小为1M等于AU的大小。在下20000个extents,extent的大小为4M等于4*AU。
  为了确定该文件的stripe chunks,这些chunks使用不同字体连续的A-Z(24个字母)来标记。
  如图,该文件的stripe chunk为128K,每个128K的chunk存储在一个extent中,开始存储在disk 1的第一个extent中,然后disk 2中的第一个extent中,然后循环着存储在所有的disk上,直到整个文件全部striped。如本例所示:striping chunks首先写满每个磁盘的第一个extent,然后是每个磁盘的第二个extent,直到整个文件全部stripe。
 
 
 
 
  如下图:文件的striped chunk大小为1M,每个1M的chunk存储在一个extent中,从disk1的第一个extent开始,disk2的第一个extent,直到整个文件全部striped。在前20000个extent,AU的大小为1M,stripe chunk的大小等于AU的大小。对于variable extents,每个extent由多个AU组成,file stripe位于一个extent的AU中。striping chunks存储在所有磁盘的第一个extent的AU中,然后是下一个extent。 
 
 
3、File Templates
   templates是属性值集合,用于在创建ORACLE ASM文件时指定磁盘区域、文件镜像、striping属性。当你创建一个文件时,可以包含一个模板名字,指定基于单个文件的属性而不是整个文件类型。
   每个ORACLE 文件类型都有一个默认的模板,但是你可以根据特定需求自定义一个模板。每个disk group有每个文件类型关联的默认的template。
五、ORACLE ASM 磁盘组管理
 1、Discovering Disks
 disk discovery 进程为磁盘分配一个ORACLE ASM可以访问的操作系统名称,disk discovery找到一个磁盘组中的所有磁盘。The set of discovered disks 也包括可以添加到磁盘组的磁盘。
     一个ORACLE ASM实例需要一个ASM_DISKSTRING初始化参数值来指定discovery strings。仅需要ORACLE ASM实例有权限打开路径名。一个discovery string的确切语法取决于平台、ASMLib库、是否使用ORACLE Exadata磁盘。操作系统接受的路径名可以作为discovery strings。
2、Mounting and Dismounting Disk Groups
 在数据库实例访问磁盘组的文件前ORACLE ASM实例必须mount该磁盘组。mount该磁盘组需要discovering所有的磁盘和定位正在被mount的磁盘组的文件。
     你可以明确的dismount一个磁盘组。当磁盘组中的文件已经打开时,如果你没有使用force选项直接dismount该磁组,oracle将会报告一个错误。这可能是磁盘组中磁盘故障超过了ORACLE ASM冗余设置。如果这种情况发生,数据库将不能访问该磁盘组中的文件。 
3、 Adding and Dropping Disks
 你可以向现有的磁盘组中添加一个磁盘来增加磁盘空间和提高吞吐量。指定的discovery string的值标示你可以增加的磁盘。你要增加的磁盘必须通过ASM_DISKSTRING初始化参数被ORCLE ASM实例发现。添加磁盘后,ORACLE ASM将会重新平衡操作,将数据移动到新的磁盘上。为了尽量减少重新平衡的IO,更有效的方法是在同一时间添加多个磁盘。
    如果磁盘fail或将磁盘其他用途,你可以从磁盘组中删除一个磁盘。用ORACLE ASM disk name删除磁盘,不是discovery string指定的设备名。如果正在写的一个磁盘发生错误,oracle将会自动的删除该磁盘。 
4、Online Storage Reconfigurations and Dynamic Rebalancing
 通过移动数据重新平衡磁盘组的各个磁盘,确保每个文件都被均匀地分布在磁盘组的所有磁盘上。当所有的文件都均匀的分散,磁盘组中所有的磁盘都均匀的填充的相同的百分比,这保证了负载均衡。重平衡操作不是基于IO统计信息。ORACLE ASM重平衡操作由磁盘组中的磁盘的大小控制。
    当存储配置更改后,ORACLE ASM自动的进行重平衡操作,如当你增加、删除、sesize磁盘。power参数的设置决定了进行重平衡操作的速度。
    你可以手动启动一个重平衡来改变正在运行的重平衡的power参数值。如果一个实例的重平衡操作停止,重平衡会自动启动。数据库可以再重平衡操作期间保持正常运行。
    你可以通过设置POWER_LIMIT初始化参数来降低对数据库性能的影响。 
 
 
 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23988293/viewspace-1260099/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23988293/viewspace-1260099/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值