Oracle RAC系列之:ASM基本操作维护

2014-11-24 18:33:57 · 作者: · 浏览: 0

二、ASM的体系结构与后台进程


图1显示了ASM的物理构成。



从图1可以看出,在顶层是ASM磁盘组,ASM实例和数据库实例可以直接访问这些磁盘组;然后是ASM文件,每个ASM文件只能包含在一个磁盘组中,不过,一个磁盘组中可以包含属于多个数据库的多个ASM文件,并且单个数据库可以使用来自多个磁盘组的存储空间;第三部分是ASM磁盘,多个ASM磁盘组成了ASM磁盘组,但每个ASM磁盘只能属于一个磁盘组;接着是AU(分配单元),AU是ASM磁盘组分配的最小连续磁盘空间,ASM磁盘按照AU进行分区,每个AU的大小为1MB;这个结构的底层是Oracle数据块,由于AU是ASM分配的最小连续磁盘空间,因此,ASM是不允许跨分配单元拆分一个Oracle数据块的。
要使用ASM,需要在启动数据库实例之前,先启动一个名为“+ASM”的实例,ASM实例不会装载数据库,启动它的目的是为了管理磁盘组和保护其中的数据。同时,ASM实例还可以向数据库实例传递有关文件布局的信息。通过这种方式,数据库实例就可以直接访问磁盘组中存储的文件。图2显示了ASM的一般体系结构。



从图2可以看出,ASM实例与数据库实例进行通信的桥梁是ASMB进程,此进程运行在每个数据库实例上,是两个实例间信息交换的通道。ASMB进程先利用磁盘组名称通过CSS获得管理该磁盘组的ASM实例连接串,然后建立一个到ASM的持久连接,这样两个实例之间就可以通过这条连接定期交换信息,同时这也是一种心跳监控机制。
另外,在ASM实例中还存在另外一个新的进程,即RBAL,此进程负责规划和协调磁盘组的重新平衡活动。除此之外,ASM实例还有一些与数据库实例中的进程相同的后台进程,例如LGWR、SMON、PMON、DBWR 、CKPT等。
如果一个数据库实例使用ASM作为存储,那么它将多出两个后台进程,即RBAL和ASMB。RBAL 负责打开磁盘组中所有磁盘和数据,而ASMB负责和ASM实例进程通信。