1、ASM由3个关键组件构成
ASM实例、ASM动态卷管理器(ADVM)、ASM集群文件系统(ACFS)
2、简而言之,ASM环境以非常简单的文件系统管理提供了原始磁盘I/O的性能。它简化了数据库管理,不再需要直接管理可能达到数千个的Oracle数据库文件
3、ASM的物理限制
Oracle 11gR2每个表空间中支持65533个数据文件。
ASM可以有63个磁盘组(diskgroup),共包含10000个ASM磁盘,每个ASM磁盘支持2TB数据存储,一个磁盘组可以管理100万个ASM文件。
在Oracle 11g中,一个数据文件最大为128TB,而ASM在采用外部冗余时支持140PB数据,正常冗余模式下支持42PB,高冗余模式下支持15PB.
4、ASM支持一个Oracle数据库使用的所有文件(pfile和密码文件除外)。从Oracle 11gR2开始,ACFS可用于非Oracle应用程序文件。
5、ASM条带化
分隔数据的单元称为条带大小
可以同时读写的并行条带数量称为条带宽度
ASM支持两个分条级别:精细分条(条带宽度为128KB)、粗略分条(条带宽度为1MB)
6、SAME(Stripe And Mirror Everything——对所有内容进行条带化和镜像)
7、ASM原生支持字符设备(一般又叫裸设备、原始设备、RAW),但是Linux系统最多只能有255个原始设备
安装ASMLib后可以支持块设备(即经过格式化的分区)
8、ASM实例
所有元数据的修改都是由ASM实例完成的
数据库实例连接到一个ASM实例,以创建、删除、打开、关闭文件或者改变其大小。
数据库实例直接读写由ASM实例管理的磁盘。
在一个集群中,一个节点只能有一个ASM实例。
ASM实例故障会终止本地节点中的数据库实例。
9、ASM监听
ASM监听程序在$GRID_HOME/bin目录下,默认在1521端口启动监听。
在安装了ASM服务的环境中,只需启动ASM的监听即可,它会自动监听运行在同一台计算机上的数据库服务。
10、在Oracle 11gR2之后,不再支持直接使用裸设备作为RAC集群的共享存储,只有在从10g像11g升级的情况下还支持裸设备做共享存储。在以后的安装中都应该使用ASM管理共享存储。
11、分配单元
ASM磁盘分为大量的单元或存储块,默认是以1MB大小分配。不能改变一个已有磁盘组的分配单元大小。
12、卷分配单元——是ASM在ASM动态卷分配空间中的最小存储单元。默认ASM在ASM磁盘组内部创建一个64MB的卷分配单元,这个磁盘组的默认分配单元大小为1MB.
13、故障组——是diskgroup中的一组ASM磁盘,只对正常冗余和高冗余磁盘组有用。
14、磁盘伙伴(Disk Partner)
Disk Partner限制了两个独立的磁盘故障丢失一个虚拟盘区的两个副本的可能性。每个磁盘都有有限数量的Disk Partner,冗余副本被分配到Disk Partner上。磁盘伙伴是ASM自动选择的,被放置在不同的故障组中。Disk Partner的大小、性能等都应该相同。
15、ASM管理接口
SQLPLUS,ASMCMD,ASMCA,SRVCTL
16、ASM动态性能视图
v$ASM 显示ASM实例信息
v$ASM_DISKGROUP 列出了在ASM中创建的磁盘组,还有元数据信息(如空闲空间、分配单元大小和状态)
v$ASM_FILE 列出了在v$ASM_DISKGROUP中所创建的文件
v$ASM_ALIAS 列出了再v$ASM_FILE视图中所列出的ASM文件的用户友好名称
v$ASM_DISK_IOSTAT 列出了v$ASM_DISKGROUP中列出的每个磁盘的I/O性能统计信息
v$ASM_ACFSVOLUMES 列出了ASM动态卷的元数据信息
v$ASM_OPERATION 显示了当前操作
17、活动改变目录(ACD)
ACD是一种日志记录机制,类似于RDBMS中的redo log,ACD记录了ASM实例中的所有元数据改动,当需要前滚时会用到ACD。ACD作为一个文件(大小为42MB)存储在一个ASM磁盘中,是高冗余的。
ASM的事务原子性是由ACD保证的。
18、持续操作目录(COD)
COD是ASM实例中的一种内存结构,类似于RDBMS中的undo segment,它记录了ASM操作及改变的信息。
来自客户端(例如RDBMS)的文件创建请求会使用COD来保护完整性,COD会根据ASM操作的成功或失败来提交或回滚。
19、ASM实例的初始化参数
可以在RDBMS和ASM实例中设置初始化参数,但有些参数只对ASM实例有效,以ASM开头的参数不能用于RDBMS实例。强烈建议将这些参数存储在ASM参数文件中。
INSTANCE_TYPE 这是ASM实例中的唯一强制参数,其他参数都有默认值
ASM_POWER_LIMIT 设置磁盘再平衡的功能限制,默认是1,可选0-11,数值越大,再平衡速度越快,对RDBMS造成的性能影响越大
ASM_DISKSTRING 一个用逗号分隔的字符串列表,它限制了ASM发现的磁盘集
CLUSTER_DATABASE 设置为TRUE启用集群存储,必须确保集群中所有ASM实例上的这个参数都要设置为相同值
ASM_DISKGROUPS 使用ALTER DISKGROUP ALL MOUNT命令或者由ASM在启动时挂载的磁盘组名称列表。如果没指定这个参数,那么除存储SPFILE、OCR和表决磁盘的ASM磁盘组之外,不会挂载其他磁盘组
ASM_PREFERRED_READ_FAILURE_GROUPS 这个参数在11g中被引入,通过设置此参数允许扩展集群配置中的ASM实例从本地磁盘中读取数据,而不需要总是从主副本中读取。在为扩展集群配置ASM时,应该非常仔细地选择故障组的数量,以为这一设置会对ASM读取性能产生直接影响
LARGE_POOL_SIZE ASM实例使用的内部包是从LARGE POOL中执行的,因此应当将LARGE_POOL_SIZE设置为一个大于8MB的值,至于其它缓冲区的值可以使用默认值。
20、手动创建磁盘组
手动创建磁盘组可以通过SQLPLUS(CREATE DISKGROUP),ASMCMD(mkdg命令和ASMCA(GUI工具)
从Oracle 11g开始,可以在创建时为ASM磁盘组指定不同的属性,这些属性会对ASM磁盘组的性能和可用性产生影响,这些可在创建ASM磁盘组指定的属性可以从V$ASM_ATTRIBUTE视图中查看。
ASM磁盘组的重要属性:
AU_SIZE 指定所创建的ASM磁盘组的分配单元大小,默认是1MB。不能改变一个已有ASM磁盘组的该属性,只能在创建时指定
DISK_REPAIR_TIME 此属性指定了一个时间量,ASM在等待这一时间长度后将删除一个脱机磁盘并执行再平衡操作
COMPATIBLE.ADVM 此属性默认为空。如果将使用这个磁盘组创建ASM动态卷,而且只在Oracle Grid Infrastructure 11g R2及以下版本中使用这个磁盘组,就需要设置这个属性
CELL.SMART_SCAN_CAPABLE 此属性仅对Oracle Exadata网格磁盘有效,它启用基于智能扫描的卸载处理
执行完创建ASM磁盘组命令后,ASM自动挂载新创建的磁盘组,并将磁盘组名称添加到SPFILE中的ASM_DISKGROUP参数中,以后再重启ASM实例时就会自动挂载上新创建的ASM磁盘组
如果希望ASM对文件进行镜像,则要在创建命令中指定冗余度
一个磁盘组中的磁盘应该大小相等、性能相同,用于创建磁盘组的所有磁盘应该具有一致的ASM_DISKSTRING参数,这样可以避免磁盘发现问题
简单示例:
SQL>CREATE DISKGROUP DGA NORMAL REDUNDANCY
FAILGROUP FLGRP1 DISK
'/dev/raw/raw3',
'/dev/raw/raw4'
FAILGROUP FLGRP2 DISK
'/dev/raw/raw5',
'/dev/raw/raw6';
21、向磁盘组中添加磁盘
ALTER DISKGROUP DGA ADD DISK '/dev/raw/raw7' NAME disk5;
这条语句中没有指定故障组,所以不会把这个磁盘指定给已有的故障组
22、删除磁盘组中的磁盘
ALTER DISKGROUP DGA DROP DISK '/dev/raw/raw7';
应该先添加再删除,避免空间不够的问题,添加和删除应该在同一条ALTER DISKGROUP语句中完成,这样可以减少花费在再平衡上的时间。
23、调整磁盘大小
ALTER DISKGROUP DGA RESIZE DISK '/dev/raw/raw6' SIZE 500m;
如果不设置SIZE参数,将使用这个磁盘上的所有空间
24、管理ACFS
25、ASM FTP实用工具
可以实用FTP工具对ASM磁盘组中的文件和目录进行操作(需要DBA权限),比如下载到本地
26、ASMLib
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28998293/viewspace-767568/,如需转载,请注明出处,否则将追究法律责任。