Oracle 数据库实例与ASM实例的通信

场景一:数据库实例启动

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操作由数据库实例中的进程来完成的。



猜你喜欢

转载自blog.51cto.com/13598811/2140161