场景一:数据库实例启动
1)数据库实例的rbal和asmb进程被启动。
2)数据库实例的asmb进程和css进行通信,获得连接asm实例需要的连接串,以及获得asm磁盘组的基本信息。
3)数据库实例的asmb进程将获得的信息传递给数据库实例的rbal进程,rbal进程通知asmb进程需要访问的asm文件信息。
4)数据库实例的asmb进程和ASM实例的asmb进程通信获得对应的信息。
5)数据库实例的rbal进程根据收到的信息访问对应的ASM磁盘,并打开相应的ASM文件。
6)数据库实例的asmb进程向ASM实例上的asmb进程发送心跳信息。
场景二:创建ASM文件
1)数据库实例的rbal进程通知asmb进程需要创建的文件。
2)数据库实例的asmb进程和ASM实例的asmb进程通信,获得需要的extent map信息。
3)数据库实例的rbal进程根据收到的信息访问对应的asm磁盘并创建文件。
场景三:数据库前台进程访问磁盘组上的数据
1)数据库前台进程和数据库实例的o00<x>进程通信,申请需要的信息。
2)数据库实例的o00<x>进程创建到ASM实例的连接,并生成在ASM实例的o00<x>进程。
3)ASM实例的o00<x>进程将需要的extent map信息返回给数据库实例的o00<x>进程。
4)数据库实例的o00<x>进程将对应的extent map信息返回给数据库前台进程。
5)数据库前台进程将收到的extent map信息转换成对应的数据文件和数据块信息,访问对应的数据块。
ASM实例负责管理磁盘组的元数据,而真正的I/O操作由数据库实例中的进程来完成的。