当前位置:文档之家› ORACLE中文教程—ASM管理

ORACLE中文教程—ASM管理

如果使用ASM作为存储解决方案,则数据库在读写文件时,采用类似裸设备的 方法,绕过文件系统和操作系统。ASM管理的文件可以修改文件名、以及允许 文件大小尺寸的动态扩展或收缩,再管理文件方面,ASM具有文件系统的优点。 ASM本身由两大部分组成,ASM实例和ASM磁盘组 ASM磁盘组里面只能存放Oracle数据库文件:数据文件、联机重做日志文件、 控制文件等 对ASM磁盘组的管理,则由ASM实例来完成
ASM磁盘组将每块磁盘都分割成多个大小1MB的单元,叫做分配单元 (allocation unit),对于磁盘组里的数据文件来说,ASM会将数据文件分割 成多个大小为1MB的块(chunk),并将这些chunk均匀的分布在所有的磁盘 上,这叫做coarse striping。对于联机重做日志文件和控制文件来说,因为文 件较小,因此分割成128KB大小的chunk,这叫做fine-grained striping。一个 AU里面就存放多个128KB的chunk。
这个错误只是说明我们没有定义ASM实例启动时默认要mount起来的磁 盘组而已,可以忽略。
实例启动起来以后,可以手工的 mount磁盘组
关闭ASM实例,也可以有四个参数:normal、transactional、immediate、 abort 如果没有以abort选项关闭ASM实例,且这个时侯数据库实例正在使用ASM 实例,则无法关闭ASM实例 如果以abort关闭ASM实例,首先会使用abort选项关闭连接在ASM上的数 据库实例,然后关闭ASM实例 对ASM发出startup force命令,这与数据库实例一样,先以abort选项关闭 ASM实例,然后再startup,从而启动ASM实例 对于单实例的ASM来说,如果ASM实例异常中断或发出shutdown abort、 startup force命令时,则当ASM实例启动的以后,会读取磁盘组里的日志文 件,进行实例的恢复,如果是多ASM实例,也就是配置了ASM集群,如果 其中一个实例崩溃,其他ASM实例会负责恢复该实例的数据。
ASM实例 ASM实例是用来管理元数据,这些元数据就是数据库实例在访问、读写ASM文件 时所必须的。 数据库实例可以直接打开ASM磁盘组,并从中读取ASM文件,与ASM实 例通信只是为了获取这些ASM磁盘以及连接到ASM磁盘的方法而已 ASM的ASM DgroupB=+ASM
1、RBAL:负责协调组内不同磁盘组之间的rebalance工作,reblance工作指 的是数据在不同的磁盘之间转移
2、ARBn:用来实际完成rebalance工作,可以由多个进程并发完成 rebalance的工作
3、GMON:用来监控磁盘组内有关元数据的维护操作
每个使用了ASM存储的数据库实例也有两个新的进程 1、RBAL:用来打开磁盘组里的磁盘,然后通过DBWn进程将数据写入到这 些打开的磁盘里去 2、ASMB:在第一次访问ASM文件时动态创建,他作为前台进程连入到 ASM实例,从而使得数据库实例和ASM实例之间建立了一个连接通道。通过 该通道,定期在两个实例之间传递数据,并保持两个实例都正常工作。 ASMB会访问Group Services,从中获取有关ASM实例所管理的磁盘组的信 息。 当数据库实例要向某个磁盘组里写入数据时,通过GROUP Services,数据库实例知道磁盘组是由哪个ASM实例管理的(例如DGruopA 由+ASM管理)以及连接到该磁盘组的信息,并通过RBAL进程打开磁盘组, 于是就可以将数据写入磁盘组。由于数据库实例一次只能连接到一个ASM实 例上,因此只能存在一个ASMB进程
ASM里并没有数据字典信息,不能将磁盘与磁盘组以及故障组的对应关 系记录在数据字典里面。ASM通过在物理磁盘的头部记录元数据,从而描述了每 块磁盘属于哪个磁盘组以及故障组,因此ASM里的每块磁盘都是自我描述的。
下面的例子,在linux下面模拟了一些物理的磁盘
将这些文件和裸设备关联起来。
如果要删除通过dd模拟出来 的虚拟磁盘文件的话,直接 删除模拟出来的磁盘文件还 不够,还必须执行losetup –d /dev/loopN。在这里N从1到6, 否则磁盘空间不能释放。
通过将文件分割成多个chunk,平均分布在ASM磁盘组里所有的磁盘上, 并进行条带化,我们应该确保ASM磁盘组里面的磁盘尺寸应该是一致的、转速 应该是一致的。ASM磁盘组的个数不应该过多,两个就够用了,一个用来存放 数据、一个用来存放flash recovery area。
故障组(failure group FG) 在磁盘组这么一个逻辑组里面,再次划分成更小的逻辑组,这个更小的逻辑组 就叫做故障组。通过故障组将多块磁盘组织起来。故障组主要是为了镜像。 在ASM磁盘组里面,镜像是在AU级别上完成的,而不是文件级别上。 三种镜像级别 1、外部镜像(external redundancy)不在ASM磁盘组里面提供镜像功能,如果 ASM本身就建立在硬件冗余的基础上,或者容忍数据的丢失,可以配置成外部 镜像。 2、普通镜像(normal redundancy)提供两重镜像功能,对于文件里面的每个 AU,都会存在该AU的一份副本。
分区上创建文件系统
上面的都是通过文件系统对空间进行管理,软件通过文件系统来访问存储空间 3、裸设备:不通过文件系统,而是直接由Oracle数据库实例来读写磁盘 对文件系统来说,管理文件相对容易,性能较差 对裸设备来说,管理文件相对困难,性能好
Oracle 10g中,Oracle结合了文件系统和裸设备的优点,推出了ASM的概念。
ASM:automatic storage management(自动存储管理)
Oracle10g之前,存储设备的使用情况 1、UNIX或者LINUX 操作系统上安装逻辑卷管理器(LVM) 通过LVM将多个磁盘做成卷组 在卷组上划分逻辑卷(logical volume) 在逻辑卷上创建文件系统 将文件系统挂载到某个目录下面 2、windows 将磁盘划分成不同的分区
4、asm_diskgroup:表示启动实例时,自动mount那些磁盘组,可以写多 个磁盘组名。中间以逗号分开,不要在磁盘组名两边加引号 diskgroupa,diskgroupb
5、large_pool_size,必须定义,至少为1MB
我们可以使用dbcontrol来管理ASM实例,默认情况下,没有设置ASM实例的 主页。需要进行一些转换。
输入ASM实例的 sys密码和oracle 用户及密码
单击continue
单击注销退出
重新登陆后。
创建完成ASM以后,我们可以对ASM实例进行启动和关闭。 ASM实例的启动分为以下两个阶段 1、nomount:该阶段读取spfile,根据其中的参数定义启动ASM实例
2、mount:将初始化参数asm_diskgroup所定义的磁盘组mount起来
ASM的好处
1、ASM是跨平台的,主流的硬件平台都能使用、且管理方式一致 2、数据均匀的分布在磁盘组里所有的磁盘上,实现了文件级别的条带化,提高 了读取和写入数据的性能 3、提供多重冗余级别,保证数据不丢失 4、支持在线的磁盘更换,添加或删除磁盘以后,自动重分布数据,这个过程叫 做rebalance
ASM磁盘组的概念如下
ASM磁 盘组
ASM文 件
ASM磁 盘
分配单 元(AU)
磁盘物 理块
1、ASM磁盘组可以包含多个磁盘
2、磁盘中可以包含多个文件,因为文件打散以后放在多个磁盘上,因此磁盘和 文件是多对多的关系 3、一个ASM磁盘被分成多个AU,每个AU大小是1M,一个Oracle数据块一定放 在一个AU中,不会跨多个AU,一个AU则由多个物理磁盘块组成,AU是ASM进 行扩张和收缩时的最小单位 4、一个磁盘组可以包含多个数据库文件
Group Services用来注册ASM实例所管理的磁盘组,以及连接磁盘组的信息。 当一个ASM实例与另外一个磁盘组关联时(这个过程叫做mount),他会将磁 盘组以及该磁盘组的连接信息注册到Group Services里面。 数据库实例只能与其所在的同一台主机上的ASM实例通信,如果当前主机上存 在多个数据库,则这些数据库可以共享同一个ASM实例。
创建ASM实例
ASM实例与数据库实例类似,也需要参数文件spfile 可以使用dbca完成spfile的创建 也可以手工编辑pfile,然后创建spfile
选择配置ASM以后,需要我们 运行一个脚本。
另开一个窗口,运行脚本。使用root用户执行。
ASM实例的管理员帐号也是sys,给sys输入一个密码。
管理ASM磁盘组 ASM磁盘组就是将多块磁盘组合在一起,在逻辑上作为一个整体,磁盘组里 的每块物理磁盘都有一个ASM的磁盘名称,该名称可以由ASM自动生成,也 可以由我们指定。
磁盘本身的名称在ASM磁盘组里叫做路径,例如一块磁盘的物理路径是 /dev/rdsk/c0b0t2d0s1,我们可以给这个磁盘起一个名字disk1
3、高镜像(high redundancy)提供三重镜像功能,对于文件里面的每个AU, 都会存在该AU的两份副本
磁盘组Dgroup1
故障组 (FG1)
故障组 (FG2)
ASM在进行镜像的时候,有一条规则:永远不会将AU(主AU)与他的副本放在 同一个故障组里面。假设我们有一个数据文件,由6个AU组成。其所在的磁盘组 上定义了两重镜像。AU分布如下: 磁盘组Dgroup1
使用DBCA创建的ASM实例的名字是+ASM。上面的界面出现以后,说明ASM实 例已经创建成功。我们可以以后再创建ASM磁盘组。Cancel退出。
这是一个ASM实例,数据库实例是RDBMS。
这就是pfile的内容。
ASM实例,还有几个重要的参数
1、db_unique_name:ASM实例的名字 2、asm_power_limite:默认为1,表示ASM磁盘组在进行rebalance时的 速度。取值从1到11,1表示最小,对前台的影响最小,11表示最大,对前 台用户的影响也越大 3、asm_disk_string:表示在创建磁盘组时,在指定的路径下搜索磁盘。 如果要创建磁盘组,必须设置该参数,如果设置为/dev/raw/raw,那么表 示磁盘组里面的磁盘都位于/dev/raw下面,以raw开头
相关主题