ASM(Automatic Storage Management)是Oracle10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle本身提供的卷管理器,主要用于替代操做系统所提供的LVM,它不只支持单实例,同时对RAC的支持也是很是好。linux
ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle本身提供的卷管理器,主要用于替代操做系统所提供的LVM,它不只支持单 实例,同时对RAC的支持也是很是好。ASM能够自动管理磁盘组并提供有效的数据冗余功能。使用ASM(自动存储管理)后,数据库管理员再也不须要对 ORACLE中成千上万的数据文件进行管理和分类,从而简化了DBA的工做量,可使得工做效率大大提升。算法
ASM它提供了以平台无关的文件系统、逻辑卷管理以及软RAID服务。ASM能够支持条带化和磁盘镜像,从而实现了在数据库被加载的状况下添加或移除磁盘以及自动平衡I/O以删除“热点”。它还支持直接和异步的I/O并使用Oracle9i中引入的Oracle数据管理器 API(简化的I/O系统调用接口)。数据库
ASM是作为单独的Oracle实例实施和部署,而且它只须要有参数文件,不须要其它的任何物理文件,就能够启动ASM实例,只有它在运行的时候,才能被其它数据访问。在Linux平台上,只有运行了OCSSD服务(Oracle安装程序默认安装)了才能和访问ASM。安全
优势:架构
(1)将I/O平均分部到全部可用磁盘驱动器上以防止产生热点,而且最大化性能。在ASM中是DiskGroup概念与LVM卷组管理中VG的概念相似,也是将多块物理磁盘总成一个磁盘组,一个磁盘组中的数据是均匀分布在各个物理磁盘上的。手工添加和删除物理磁盘时,数据会自动均衡(ReBalance);oracle
(2) 配置更简单,而且最大化推进数据库合并的存储资源利用;数据文件都存储在DiskGroup中(简称DG),管理相对简单。异步
(3) 内在的支持大文件,支持BIGFILE文件。性能
(4) 在增量增长或删除存储容量后执行自动联系重分配,即自动ReBalance;spa
(5) 维护数据的冗余副本以提升可用性;操作系统
(6) 支持10g、11g的数据存储及RAC的共享存储管理,相对来讲11g的ASM更稳定,10g中有些BUG。
(7) 支持第三方的多路径软件;如powerpath(aix)、mutlipath(linux)
(8) 使用OMF(Oracle Managed Files)方式来管理文件。
缺点:
(1) 数据库中新增一个ASM实例,维护上须要对ASM进行管理,增长了维护成本;
(2) 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,虽然冗余级别高了,可是硬件的代价也最高。
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。
ASM支持datafile,logfiles,control files,archivelogs,RMAN backup sets等自动的数据库文件管理。
通常来讲,一个采用ASM单实例数据库由两个DG组成。一个是datadg,另一个是fradg。Datadg主要是存放数据文件,而fradg(flash recovery area)存放archivelog文件,control文件和备份文件等。
视图名 |
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) |
|
http://www.jb51.net/article/43527.htm
http://blog.csdn.net/tianlesoftware/article/details/5314541
http://docs.oracle.com/cd/B28359_01/server.111/b31107/asmcon.htm#OSTMG036