Oracle10g的Asm应用于数据存储管理

摘要 随着数据库的持续运行,数据库的大小不断扩大,要求不断增大系统的存储容量,对于普通的文件系统,增加存储的过程非常复杂。Oracle10g的自动存储管理系统(automatic storage management asm)就是针对该问题而产生的,它大大简化了数据库存储系统的管理。

 

1 前言

 

如今,大型数据库系统要求尽量减少有计划的停机时间,同时随着数据库运行时间的持续增加,数据库的大小和数据库的文件数目也在不断增加,这种趋势导致磁盘容量和数据库大小每隔几年就翻一番,但是dba人数在这期间一般不会翻倍,因此要求dba管理更多和更大的数据库;还有一个问题,当数据库的存储容量不足时,向数据库添加磁盘,以增加磁盘容量时,普通的存储系统需要手工操作,过程非常复杂,而且要求数据库停机。一般包括以下步骤:(1)创建逻辑卷。(2)创建文件系统。(3)安装oracle数据软件。(4)创建并装载数据库。接着还要查找磁盘热点,移动数据文件减少竞争,并担心哪一天磁盘容量又不足,必须再添加更多的磁盘,移动所有的数据文件实现负载平衡,减少竞争。

 

可喜的是随着oracle10g新的存储管理特性asmautomatic storage management,自动存储管理)的出现,这种情况可以动态的改变了.

 

Asm集成了文件系统和卷管理器,它特别为oracle数据文件而构建。它扩展了samestripe and mirror everything)的概念以优化性能,不再需要手工io调整(合理布局数据文件避免热点),自动实现数据文件的条带和镜像,在不停机的情况下,可以向存储系统增加磁盘,并自动调整数据文件的分布;另外,asm允许创建一个存储池(称为磁盘组),并管理文件的命名和数据库文件在磁盘上的放置,这些对于用户和管理人员来说都是透明的,屏蔽了底层数据文件的管理;还可以使用sql命令,命令行接口或企业管理器改变asm的存储如添加磁盘,删除磁盘等。可见,使用asm大大简化了数据库的storage managementprovisioning

 

2 Asm的结构

 

Asm的主要组件包括磁盘组、磁盘、失败组、文件和模版,下面一一介绍:

2.1 磁盘组

 

包含一组磁盘,该组磁盘作为一个单元进行管理。它是asm中最高级的数据结构,类似于逻辑卷管理器的卷组,但Asm文件系统层在磁盘组中隐含创建,该文件系统对用户是透明的,只能通过asm数据库接口和命令行工具访问;并具有自动的文件级条带和镜像的能力,在asm磁盘组中创建的数据库文件以文件分区(file extents)存储,文件的文件分区均匀的分布在磁盘组中所有联机磁盘上,提供均匀的i/o负载。磁盘组的类型有三种:高冗余的磁盘组,提供三路镜像;正常冗余磁盘组,提供两路镜像;外部冗余磁盘组,asm不提供镜像保护,镜像级别由外部存储系统决定,它决定了磁盘组中文件的镜像级别,可以在创建磁盘组时指定磁盘组的类别。

 

2.2 磁盘

 

磁盘组中的磁盘称为asm磁盘,当asm实例启动时,它自动发现所有可用的磁盘,决定磁盘属于那个磁盘组。磁盘是一个广义的概念,它可以是一个分区,一块磁盘,一个逻辑单元号还可以是nas的文件。磁盘有各种header statuses,反映了磁盘的状态:

Former 以前磁盘是磁盘组的一部分。

Candidate 表示磁盘可用,并可以添加到磁盘组。

Member磁盘已经是磁盘组的一部分。

Provisioned 类似于candadate因为对于磁盘组可用。但是,表示该磁盘使用asmlib已经配置或可用。

2.3 失败组

 

对于不使用external redundancy的系统,asm利用失败组提供了内部冗余机制和可用性,失败组是磁盘组的一个子集,它是多个磁盘的集合,当磁盘组的某个组件损坏后,这些磁盘变得不可用。例如:磁盘控制器或整个阵列都是一个失败组。如果为磁盘组定义多个失败组,asm能够容忍单个失败组中的多个磁盘同时失败。

 

2.4 文件

 

写在asm磁盘上的文件称为asm文件,它的名字由asm自动产生,文件的格式为+group/dbname/file_type/file_type_tag.file.incarnation,称为完全合格的asm文件名。

+group磁盘组名字。

 

dbname是数据库的DB_UNIQUE_NAME

 

file_type oracle的文件类型。

 

file_type_tagoracle的文件类型有关的信息,对于特定文件它是固定的。

 

file.incarnation file/incarnation , 保证了唯一性。

 

例如asm中控制文件的名称为:

+dgroup2/sample/controlfile/Current.256.541956473

2.5 模版

 

模版是文件的属性集,在asm磁盘组中创建文件时,用来设置每种类型的数据库文件的条带和镜像属性。用户可以自定义模版。

 

3 Asm组成与工作原理:

 

3.1 Asm实例

 

Asm实例是一个特殊的oracle实例,用来管理磁盘组中的磁盘,实例通常命名为+asm,用instance-type=asm初始化参数启动,不像数据库实例,asm实例不包含物理文件,如:日志文件、控制文件。

3.2 Asm实例的后台进程:

 

Asm实例除了具有与数据库实例相同的进程如SMON, PMON, LGWR外,还包括两个与磁盘组管理有关的进程,一个是rbal,它主要协调磁盘组的重新平衡活动;另一个是arb0arb1等,这是一组从进程,在磁盘组重新平衡过程中,它们执行实际的数据分区的移动。

 

3.3 Css集群同步服务Cluster Synchronization Services

 

Asm要求安装css,并且在服务器启动时自动启动。css维持asm实例和数据库实例的同步,磁盘组装载后,asmcss注册磁盘组名,实例名和oracle home路径名。接着数据库实例使用这些注册的数据结构建tns连接串,数据库实例使用该连接串连接到asm实例,进行卷管理活动。

3.4 数据库新增进程:

 

数据库实例中新增加了三个进程以支持asm磁盘组和结构,实现asm实例与数据库实例的通信。

Rbal 该进程负责磁盘组中所有磁盘的打开。

Asmb 该进程使用磁盘组名称联系css,并得到asm连接串,接着使用该连接串连接到asm实例。使用该永久的连接,可以交换周期性的消息如:用来更新统计并提供心跳机制。在需要asm干预的操作中,如创建文件,数据库前台直接连接到asm实例执行这个操作,完成文件创建后,数据库文件分区映射由asm发送到asmb。另外,asmb还向asm实例发送数据库io 统计。

O00x 一组从进程,建立到asm实例的短暂连接,x1-10的编号。通过这个连接池,数据库进程可以向asm实例发送消息。例如打开文件,利用从进程向asm实例发送打开请求。但是,从进程不用于长时间的操作如:创建文件。从进程池连接为短暂的请求服务,消除了登录asm实例的开销,这些进程在不使用时即关闭。

3.5 数据库实例与asm实例交互

 

数据库实例是asm实例的一个客户,数据库与asm的通讯在节点内部进行,对asm文件的操作象对文件系统文件的操作一样,例如:所有的文件访问直接执行并没有asm的干预。当创建,删除,打开文件时,数据库实例与asm实例相互作用,从asm实例读取文件分布,接下来的i/o操作使用存储在数据库实例中的分区映射。如果存储配置改变,如:添加,删除磁盘或磁盘失败都会引起asm与数据库实例相互作用。

 

 

4 军卫一号向oracle10g asm的迁移

 

该过程分两步进行,第一步是数据库的升级操作;第二步是数据库文件从普通文件系统迁移到asm

4.1 数据库的升级

 

现在,军队各个医院的军卫一号信息系统数据库主要采用oracle8ioracle9i版本,只有极少数使用oracle10g第二版。要使用oracle10gasm特性,首先升级oracle数据库到oracle10goracle数据库升级有多种方法,主要有imp/exp逻辑备份工具;数据库升级助手图形化工具;还有oracle提供的升级脚本。具体的升级过程可以参考oracle文档。

4.2 数据库文件从普通文件系统向asm的迁移

 

数据库升级到oracle10g后,数据库文件的存储使用普通的文件系统,要使用asm特性,需要把数据库迁移到asm,这种迁移可以使用oraclerman工具手工迁移,还可以使用企业管理器提供的图形化工具。在实施迁移前,需要对asm磁盘组进行规划。这里我们使用了两个磁盘组每个磁盘组两块磁盘,一个是data磁盘组,主要放置数据库文件。另一个是flashrec磁盘组,主要用于oracle10g的快速恢复区,其中放置rman备份文件,数据库闪回日志等。这里具体介绍rman的手工迁移过程:

(1) 备份升级好的军卫一号数据库文件,这里要求文件的备份副本。

 

BACKUP AS COPY INCREMENTAL LEVEL 0 DATABASE

 

FORMAT '+DATA' TAG 'ORA_ASM_MIGRATION';

 

备份后归档当前日志文件,保证备份的一致性。

 

RMAN> sql 'alter system archive log current';

 

(2) asmflashrec磁盘组上创建恢复区。

 

通过设置参数DB_RECOVERY_FILE_DEST DB_RECOVERY_FILE_DEST_SIZE即可创建恢复区。

 

在文本参数文件中修改参数

 

Alter system set DB_RECOVERY_FILE_DEST_SIZE=20G;

 

Alter system set DB_RECOVERY_FILE_DEST='+FLASHREC';

 

(3) 移植控制文件到asm

 

修改参数文件中的参数control_files

 

Alter system set

 

control_files='+DATA/control01.ctl','+FLASHREC/

 

control02.ctl ' 其中一个控制文件存放在flashrec恢复区,提高了控制文件的可用性。

 

使用rmanasm上创建控制文件:

 

RMAN> shutdown immediate;

 

RMAN> startup nomount PFILE='d:tmppfile.ora';

 

RMAN> restore controlfile from ‘D:oracleproduct10.2.0oradatats control01.ctl';

 

RMAN> alter database mount;

 

RMAN> switch database to copy;

 

RMAN> recover database;

 

(4) asm移植临时文件。

 

RMAN > run {

 

set newname for tempfile 1 to '+DATA'

 

switch tempfile all;

 

}

 

(5) 打开数据库,完成数据库文件的迁移。

 

SQL> ALTER DATABASE OPEN;

 

 

 

6 Asm的管理

 

Asm的管理涉及内容比较多,主要包括磁盘组的管理如添加磁盘、删除磁盘,改变磁盘的大小,装载磁盘组,卸载磁盘组,手动重新平衡磁盘组等操作;磁盘组中文件和目录的管理;在磁盘组中创建数据库文件等。这些操作都可以通过sql命令完成,此外,oracle还提供了命令行工具asmcmd和企业管理器图形化工具,都可以对asm进行管理和操作,有关这些操作的详细地使用可以参考oracle的文档。在这里要强调的一点是asm的备份问题,asm<span style="FO

你可能感兴趣的:(数据结构,oracle,应用服务器,配置管理,企业应用)