【IT168技术点评】
自动存储管理(Automatic Storage Management)技术是Oracle 数据库 10g 第 1 版中引入的专用文件系统,它提供了专门为 Oracle 数据库文件建立的文件系统与卷管理器的垂直整合功能。ASM 在所有可用的资源中分布 I/O 负载,以便在免除手动 I/O 调节需要(通过分散数据库文件来避免热点)的同时优化性能。ASM 帮助 DBA 管理动态数据库环境,让 DBA 能够在扩大数据库规模的情况下,无需关闭数据库以调整存储分配。
在Oracle11g数据库中,在高可用性方面、可扩展性方面、安全性方面以及管理方面进一步的扩展了自动存储的强大功能。这些增强的自动存储管理的功能主要体现在下面几个技术细节上:
一、 自动存储管理的快速镜像重新同步
在Oracle10g数据库中,只要自动存储管理中的磁盘不能写入的时候,自动存储管理就会离线掉这个磁盘,这个离线磁盘的数据此后不可被读取,而且当离线之后,自动存储管理会把这个磁盘从磁盘组中删除。这个是一个代价相当高的操作过程,需要花费几个小时才可以完成,即使只是磁盘出现短暂的故障。Oracle11g数据库引进的自动存储管理快速镜像重新同步特性能够极大的减少磁盘出现短暂故障的重新同步需要的时间。当磁盘由于短暂的故障导致离线,自动存储管理会跟踪到离线后被修改过的分配单元,当磁盘故障被修复之后,自动存储管理可以只需要同步那些离线后被修改过的分配单元达到迅速的重新同步,这个增强的特性是基于被影响的自动存储管理的磁盘内容没有被损坏或者是修改过的前提。在Oracle11g中,如果你对相应的磁盘组设置了参数DISK_REPAIR_TIME,当自动存储管理的磁盘路径失效的时候,磁盘只会被离线而不会被从磁盘组中删除掉。这个参数保证在磁盘离线的时候自动存储管理会等待你完成磁盘恢复之后能够重新被同步,默认值为3.6小时,基本适用于大多数的环境下。
自动存储的快速镜像重新同步基于每个磁盘组,在创建了磁盘组之后,可以使用ALTER DISKGROUP来设置参数,例如:
ALTER DISKGROUP dgroupA SET ATTRIBUTE 'DISK_REPAIR_TIME'='3H';
如果在离线状态下无法修复一个存在问题的磁盘组,那么可以使用ALTER DISKGROUP DROP DISKS IN FAILGROUP FORCE命令,存储在这些磁盘上的原始数据能够被在这个磁盘组的其他好的磁盘上重建一个冗余的拷贝来保证数据的不丢失。
通过查询V$ASM_ATTRIBUTE视图可以查看当前的自动存储管理磁盘组的属性,V$ASM_DISK视图或者V$ASM_DISK_IOSTAT视图的REPAIR_TIMER列可以查看离线后还剩余多久时间自动存储管理会删除一个离线的磁盘。V$ASM_OPERATION视图的OPERATION列能显示目前同步的操作的具体内容。
二、自动存储管理的首选镜像读取
在Oracle10g的自动存储管理中,当配置一个故障磁盘组的时候,通常都会从首要的镜像分配单元拷贝上读取数据。但是,从靠近一个节点的故障磁盘组读取分配单元效率会更高一些,即使是从次要的分配单元。尤其是针对于RAC扩展的集群配置,从本地节点的一个分配单元拷贝上读取数据将能够提高性能。对于Oracle11g数据库,就能够通过一个全新的实例级别的初始化参数ASM_PREFERRED_READ_FAILURE_GROUPS来配置首选镜像读取,这个参数将指定一个首选镜像读取的列表,在这些故障磁盘组中的磁盘都成为首选读取的磁盘。因此,每个节点都能读取其本地磁盘,这将极大的提高效率和性能,减少网络阻塞。这个初始化参数是个多值参数,如果设置有多个故障磁盘组,可以用逗号隔开,故障磁盘组的名字的指定必须是磁盘组名加上字符“.”。这个参数可以使用ALTER SYSTEM命令来动态修改,并且只能适用于自动存储管理的实例。当节点扩展到集群的时候,这个参数应该被设置为对应当前实例的本地的磁盘。
在V$ASM_DISK视图中新增了一列PREFERRED_READ,如果磁盘属于首选读取故障磁盘组,那么这个值就是Y。V$ASM_DISK_IOSTAT视图可以找出关于首选读取故障磁盘组的性能问题。V$ASM_DISK_IOSTAT视图可以显示出每一个自动存储管理客户端的I/O统计数据,如果从一个数据库实例上查询这个视图,那么将只能获取关于这个数据库实例的相应数据。
可以使用Oracle企业管理器来给每一个自动存储管理实例指定一组磁盘作为首选读取磁盘。在Oracle11g数据库中,首选读取故障磁盘组可以在Oracle企业管理器中配置,这个设置只会在磁盘组创建或者磁盘组MOUNT之前生效,并且应用到最新打开的数据文件或者最新装载的数据文件的分配单元匹配。
三、自动存储管理的可扩展性和性能的增强
在Oracle11g数据库中,自动存储管理支持1,4,16和64M变量的分配单元大小。这个是自动的特性,使得自动存储管理可以支持大的文件大小分配单元以便提高内存的使用效率。自动存储管理对于每个分配单元的大小都使用预先定义的数量,一旦一个文件达到一定的阀值,下个分配单元大小将会被使用,一个自动存储管理的文件从1M的分配单元开始,当文件不停的增大,分配单元大小也会增大到4M,16M,或者64M,这个增大基于预先定义的文件大小阀值。由于需要一些分配单元指针来描述文件,在共享池中需要较少的内存来管理分配单元匹配,在大文件配置中已经被禁止。使用可变的分配单元大小来部署使用自动存储管理的Oracle数据库可以是几百TB的大小,甚至是几PB的大小,可变大小的分配单元的管理是完全自动化不需要任何的管理员手工操作。当分配单元大小增长并且小的不连续的分配单元大小被释放,重新平衡操作将执行一个碎片整理的操作。在分配的过程中自动存储管理将会自动执行碎片整理,如果请求的大小不可用,那么会潜在的影响分配的次数,提供更加快速的文件打开,减少存储文件分配单元所需要的内存。
四、自动存储管理的SYSASM权限
Oracle11g数据库中引进了一个新的称之为SYSASM的权限,专门用于执行自动存储管理的管理任务。使用SYSASM权限而不是SYSDBA系统权限能够分割开自动存储管理的管理工作和数据库的管理工作,以便提高系统的安全性。在Oracle11g数据库中,针对SYSASM和SYSDBA的操作系统组是一样的,默认的针对SYSASM安装组是dba组。在将来的版本中,会要分割开成不同的组,并且SYSDBA用户将会被限制访问自动存储管理实例。如果你登录自动存储管理实例作为SYSDBA用户,将会在相应的alert.log文件中写入告警信息 。
五、自动存储管理的兼容性
为了支持Oracle10g数据库和Oracle11g数据库的磁盘组的异构环境,因此存在两种不同的适用于自动存储管理磁盘的兼容性,每种磁盘组的兼容性独立管理:
RDBMS兼容性:是允许实例mount磁盘组的最小兼容性的RDBMS实例的版本。这个兼容性规定了在自动存储管理和数据库实例中间信息交换的格式。一个自动存储管理的实例可以支持不同的RDBMS的客户端运行不同的兼容性设定。每个实例的数据库兼容性版本的设定必须大于等于其使用的所有磁盘组的RDBMS兼容性。运行数据库实例的Oracle主目录一般都不同于运行自动存储管理实例的Oracle主目录,这也就意味着数据库实例可以运行在不同于自动存储管理实例的软件版本上。当数据库实例第一次连接到自动存储管理实例,将会确认所能支持的最高版本。数据库设定的数据库软件版本的兼容性参数和RDBMS兼容性设定参数将决定一个数据库实例是否能mount被给与的磁盘组 。
自动存储管理兼容性:这是一个永久固定性的参数设定用来控制磁盘上自动存储管理元数据的数据结构格式。一个磁盘组的自动存储管理兼容性的参数值必须大于等于RDBMS兼容性参数。一个文件的内容格式取决于数据库实例。例如,一个磁盘组的自动存储管理兼容性参数设置为11.0,然而RDBMS兼容性参数设置为10.1.这也就意味着磁盘组只能被自动存储管理Oracle软件版本是11.0或者之后版本管理,任何数据库客户端软件版本是10.1或者之后版本的都可以使用这个磁盘组。
磁盘组的兼容性参数必须小心设置,因为设置了这个参数之后将会是一个不可撤销的操作。可是使用CREATE DISKGROUP或者ALTER DISKGROUP命令来设置磁盘组兼容性参数。
六、自动存储管理的ASMCMD命令的功能增强
ASMCMD命令现在包含了自动存储管理元数据的备份和恢复功能,允许从一个已经存在的具有准确的模板名字和别名目录结构的自动存储管理磁盘组创建自动存储管理磁盘组。这使得手工创建自动存储磁盘组更加容易。
自动存储管理元数据备份和恢复工作在下面两种模式下。
备份模式:分析自动存储管理的固定表和视图来收集相关已经存在的磁盘和故障磁盘组配置、模板和别名目录结构的信息,这些元数据信息可以被dump出来成一个文本文件。
恢复模式:AMBR读取之前产生的文件来重建磁盘组和元数据。你能控制AMBR在恢复模式中的行为,是做一个full、nodg还是newdg的恢复操作。这三种子模式的区别是你是否想包含创建磁盘组,和改变磁盘组的属性。
Lsdsk命令用于列出自动存储管理的磁盘信息。这个命令可以在两种模式下运行。
已连接模式:ASMCMD命令使用V$和GV$视图获取相应的磁盘信息。
未连接模式:ASMCMD命令扫描磁盘头来获取磁盘信息,已连接模式总是首先被使用。
在正常或者高冗余的磁盘组上能够自动修复坏块,在一个自动存储管理的磁盘组上出现
I/O读取失败的时候,自动存储管理会从镜像拷贝上读取来修复坏块,然后写入并且重新分配。
相关文章