ASM可以自动管理磁盘组并提供有效的数据冗余功能。使用ASM(自动存储管理)后,数据库管理员不再需要对 ORACLE中成千上万的数据文件进行管理和分类,从而简化了DBA的工作量,可以使得工作效率大大提高。
使用 ASM,可以将存储作为少量被称作 ASM 磁盘组的存储池进行管理。数据库相关文件分配给 ASM 磁盘组,ASM 管理布局和数据组织,确保实现卓越性能并防止出现存储硬件故障。使用 ASM 磁盘组可以轻松、便捷地整合存储,并简化以前需要 DBA 和系统管理员执行的管理任务。ASM 为 ASM Cluster File System (ACFS) 提供底层存储管理,后者可以集中存储数据库外的数据。
ASM提供了与平台无关的文件系统、逻辑卷管理以及软RAID服务。ASM可以支持条带化和磁盘镜像,从而实现了在数据库被加载的情况下添加或移除磁盘以及自动平衡I/O以删除“热点”。它还支持直接和异步的I/O并使用Oracle9i中引入的Oracle数据管理器 API(简化的I/O系统调用接口)。
ASM是做为单独的Oracle实例实施和部署,并且它只需要有参数文件,不需要其它的任何物理文件,就可以启动ASM实例,只有它在运行的时候,才能被其它数据访问。在Linux平台上,只有运行了OCSSD服务(Oracle安装程序默认安装)了才能和访问ASM。
B、使用ASM的好处
优点:
(1)将I/O平均分部到所有可用磁盘驱动器上以防止产生热点,并且最大化性能。在ASM中是DiskGroup概念与LVM卷组管理中VG的概念类似,也是将多块物理磁盘总成一个磁盘组,一个磁盘组中的数据是均匀分布在各个物理磁盘上的。手工添加和删除物理磁盘时,数据会自动均衡(ReBalance);
(2) 配置更简单,并且最大化推动数据库合并的存储资源利用;数据文件都存储在DiskGroup中(简称DG),管理相对简单。
(3) 内在支持大文件,支持BIGFILE文件。
(4) 在增量增加或删除存储容量后执行自动联系重分配,即自动ReBalance;
(5) 维护数据的冗余副本以提高可用性;
(6) 支持10g、11g的数据存储及RAC的共享存储管理,相对来说11g的ASM更稳定,10g中有些BUG。
(7) 支持第三方的多路径软件;如powerpath(aix)、mutlipath(linux)
(8) 使用OMF(Oracle Managed Files)方式来管理文件。
缺点:
(1) 数据库中新增一个ASM实例,维护上需要对ASM进行管理,增加了维护成本;
(2) ASM相对来说是个黑匣子,如果出问题,恢复起来也是个难点。
C、ASM冗余方式
ASM使用独特的镜像算法:不镜像磁盘,而是镜像盘区。作为结果,为了在产生故障时提供连续的保护,只需要磁盘组中的空间容量,而不需要预备一个热备(hot spare)磁盘。不建议用户创建不同尺寸的故障组,因为这将会导致在分配辅助盘区时产生问题。ASM将文件的主盘区分配给磁盘组中的一个磁盘时,它会将该盘区的镜像副本分配给磁盘组中的另一个磁盘。给定磁盘上的主盘区将在磁盘组中的某个伙伴磁盘上具有各自的镜像盘区。ASM确保主盘区和其镜像副本不会驻留在相同的故障组中。磁盘组的冗余可以有如下的形式:双向镜像文件(至少需要两个故障组)的普通冗余(默认冗余)和使用三向镜像(至少需要3个故障组)提供较高保护程度的高冗余。一旦创建磁盘组,就不可以改变它的冗余级别。为了改变磁盘组的冗余,必须创建具有适当冗余的另一个磁盘组,然后必须使用RMAN还原或DBMS_FILE_TRANSFER将数据文件移动到这个新创建的磁盘组。
三种不同的冗余方式如下:
(1)外部冗余(external redundancy)–常用
表示Oracle不帮你管理镜像,功能由外部存储系统实现,比如通过RAID技术;有效磁盘空间是所有磁盘设备空间的大小之和。
(2)默认冗余(normal redundancy)
表示Oracle提供2份镜像来保护数据,有效磁盘空间是所有磁盘设备大小之和的1/2 (使用最多)
(3)高度冗余(high redundancy)
表示Oracle提供3份镜像来保护数据,以提高性能和数据的安全,最少需要三块磁盘(三个failure group);有效磁盘空间是所有磁盘设备大小之和的1/3,虽然冗余级别高了,但是硬件的代价也最高。
D、ASM进程
ASM实例除了传统的DBWR,LGWR,CKPT,SMON,PMON等进程还包含如下四个新后台进程:
(1) RBAL:负责协调磁盘组的重新平衡活动(负责磁盘组均衡)
(2) ARB0-ARBn:在同一时刻可以存在许多此类进程,它们分别名为ARB0、ARB1,以此类推,执行实际的重新平衡分配单元移动进程。
(3) GMON:用于ASM磁盘组监控
(4) O0nn 01-10:这组进程建立到ASM实例的连接,某些长时间操作比如创建数据文件,RDBMS会通过这些进程向ASM发送信息
ASMB与ASM 实例的前台进程连接,周期性的检查两个instance的健康状况。每个数据库实例同时只能与一个ASM实例连接,因此数据库只会有一个ASMB后台进程。如一个节点上有多个数据库实例,它们只能共享一个ASM实例。
RBAL用来进行全局调用,以打开某个磁盘组内的磁盘。ASMB进程与该节点的CSS守护进程进行通信,并接收来自ASM实例的文件区间映射信息。ASMB还负责为ASM实例提供I/O统计数据
CSS集群同步服务。要使用ASM,必须确保已经运行了CSS集群同步服务,CSS负责ASM实例和数据库实例之间的同步。
注意:
ASM实例必须要先于数据库实例启动,和数据库实例同步运行,迟于数据库实例关闭。ASM 实例和数据库实例的关系可以是1:1,也可以是1:n。如果是1:n,最好为ASM 安装单独的ASM_HOME。
E、ASM支持文件类型
ASM支持datafile,logfiles,control files,archivelogs,RMAN backup sets等自动的数据库文件管理。
一般来说,一个采用ASM单实例数据库由两个DG组成。一个是datadg,另外一个是fradg。Datadg主要是存放数据文件,而fradg(flash recovery area)存放archivelog文件,control文件和备份文件等。
F、ASM实例和数据库实例对应关系
G、Cluster ASM 架构
H、相关视图
视图名 | X$基表名 | 描述 |
V$ASM_DISKGROUP | X$KFGRP | 实施磁盘发现disk discovery和列出磁盘组 |
V$ASM_DISKGROUP_STAT | X$KFGRP_STAT | 显示disk group状态 |
V$ASM_DISK | X$KFDSK, X$KFKID | 实施磁盘发现disk discovery和列出磁盘以及这些磁盘的使用度量信息 |
V$ASM_DISK_STAT | X$KFDSK_STAT,X$KFKID | 列出磁盘和其使用度量信息 |
V$ASM_FILE | X$KFFIL | 列出ASM文件也包括了元数据信息 |
V$ASM_ALIAS | X$KFALS | 列出了ASM的别名,文件和目录 |
V$ASM_TEMPLATE | X$KFTMTA | 列出可用的模板和其属性 |
V$ASM_CLIENT | X$KFNCL | 列出链接到ASM的DB实例 |
V$ASM_OPERATION | X$KFGMG | 列出rebalancing重平衡操作 |
| X$KFKLIB | 可用的ASMLIB路径 |
| X$KFDPARTNER | 列出Disk-partners关系 |
| X$KFFXP | 所有ASM文件的extent map |
| X$KFDAT | 所有ASM Disk的extent列表 |
| X$KFBH | 描述ASM cache |
| X$KFCCE | ASM block的链表 |
V$ASM_ATTRIBUTE(new in 11g) | X$KFENV(new in 11g) | Asm属性,该X$基表还显示一些隐藏属性 |
V$ASM_DISK_IOSTAT(new in 11g) | X$KFNSDSKIOST(new in 11g) | I/O统计信息 |
| X$KFDFS(new in 11g) |
|
| X$KFDDD(new in 11g) |
|
| X$KFGBRB(new in 11g) |
|
| X$KFMDGRP(new in 11g) |
|
| X$KFCLLE(new in 11g) |
|
| X$KFVOL(new in 11g) |
|
| X$KFVOLSTAT(new in 11g) |
|
| X$KFVOFS(new in 11g) |
|
| X$KFVOFSV(new in 11g) |
|
推荐教学:《Oracle教学》