1 ASM 作为Oracle推荐的首选方案,除了具有集群文件系统的功能,同时
还集成了冗余,I/O分散等卷管理器的功能.可以通过两种方式使用ASM,
包括建立在裸设备上,如果安装ASMLIB, 也可以建立在块设备上.
2 ASM Instance 与RDBMS 的交互
当ASM实例挂载一个磁盘组之后,ASM会把Disk Group Name, ASM Instance
Name, Oracle Home Path等信息注册到CSS,这些信息会被用来构造Connect
String.
当RDBMS启动过程中需要访问某个ASM File时, RDBMS会和CSS联系,从CSS中获
取Connect String, 然后发起一个到ASM实例的连接,这条ASM和RDBMS实例之间
的初始连接叫作 Umbilicu(脐带), 只要RDBMS打开ASM File,这个连接就会保持
活动.直到所有ASM File都被RDBMS实例关闭之后,这个连接才会关闭.
3 SGA
ASM 的SGA和RDBMS没有区别, 也包括Buffer Cache, Shared Pool, Large Pool
等部分,需要注意的是Shared Pool, 因为Extent Map也放在这部分内存中.
Extent Map: 存储RDBMS实例中的存储分配单元Extent与ASM实例中的分配单元AU
的对应关系.
4 后台进程
ASM实例:
1) RBAL: rebalancer进程,负责规划ASM磁盘组的Reblance活动
2) ABRn: 是RBAL进程的子进程,真正完成Reblance活动
RDBMS实例:
1) RBAL: 负责打开每个磁盘组的所有磁盘
2) ASMB: 这个进程作为ASM实例和数据库实例之间的信息通道.这个进程负责与
ASM实例的通信,它先利用Diskgroup name从CSS获得管理该Diskgroup的ASM实例的
连接串,然后建立到ASM的持久连接,两个实例通过这条连接定期交换信息,同时也
是一种心跳机制.
3)O0nn 01-10:这组进程建立到ASM实例的连接,某些长时间操作比如创建数据文件,
RDBMS会通过这些进程向ASM发送信息
5 文件
ASM实例的运行表面上看不需要任何文件,实际上ASM也需要许多"文件"用来保证正常
运行,只是这些文件是Oracle内部维护的, 对于DBA不可见,而且也不需要DBA的干预.
6 存在的问题
问题记录:
1) Oracle文档一再强调的在线添加/删除DiskGroup, Disk, 在ASM层面的管理操作
时不影响应用系统, 在RAC层面, 对某一个节点上ASM操作,这个节点上的RDBMS必须
Shutdown, ASM 实例必须Dismount. 但由于这是RAC, 业务不会受到影响, 还可以
走另一个节点. 不是这样的.
ASM 与RAC 并没有必然的关联, Oracle一再强调的可以在线管理,是指DiskGroup组
之间不会互相影响.假定你想删除一个DiskGroup,只要这个DiskGroup上的文件在RDBMS
不是 ACTIVE的就行.
2) 对ASM的理解,ASM其实就是LVM披上了Oracle的马甲,
Disk对应PV, Diskgroup 对应VG,
3) ASM 实例的Spfile, 或pfile 在哪里呢?
$ORACLE_HOME/dbs/spfile+ASM.ora