Oracle RAC 内存融合

LMS:这个进程负责完成GCS的大部分工作,它会维护GRD中数据块资源的信息,完成数据块在实例之间的传递工作,相关消息的发送和接收工作。每个数据库实例中会存在多个LMS进程,名称为LMS<x>,默认的LMS进程数量是根据节点的CPU数量计算出来的。


LMD:这个进程主要负责GES相关资源的管理工作,GES资源主要指Oracle中的排队(Enqueue)资源,由于RAC数据库包含很多实例,每个实例都能够对相同的数据进行操作,所有需要LMD进程对这些队列资源进行管理和协调,每个数据库实例只包含一个LMD进程。


LCK:这个进程主要负责实例锁(实例锁的含义并不是实例级别的锁,而是指这种锁管理的资源仅限于本地实例)管理,实例级别的锁包括:library cache lock,row cachelock等,实例级别的锁是由LCK进程通过广播的方式进行管理的,当一个进程需要持有一个实例锁时,LCK进程会以广播方式向所有远程实例的LCK进程发送这个请求,而远程实例收到这个请求之后,更新自己的信息并反馈信息(如果远程实例的某个进程以不兼容的方式持有了这个锁,对应实例的LCK进程会通知持有者进程释放对应的锁,然后再返回),每个实例默认情况下只包含一个LCK进程。


GRD:在shared pool与buffer cache中保存和组织内存融合相关的所有资源的一种方式,每个数据库实例中都包含GRD的信息,所有实例的内存融合信息构成了整个GRD。LMS和LMD进程实现了对GRD的访问与管理,LMS进程负责GCS资源和锁,LMD进程负责GES资源和锁,服务器进程作为访问GRD的客户端,需要同LMS和LMD进程进行协作,完成客户端发送的请求,可以认为服务器进程是GRD的客户端,LMS和LMD进程是GRD的服务器进程。


PCM资源指数据库的块,当客户端访问一个数据库时,LMS进程会创建一个PCM资源对应这个块,并创建保护这个资源的锁结构。


PCM锁的属性

模式:PCM锁有3种模式,N(空),S(共享),X(独占)。

角色:PCM锁的角色对应数据块被修改的范围,本地(L)表示对应的块只在本地实例被修改过,全局(G)表示对应的块在多个远程实例中被修改过

PI:如果为1表示对应的块存在PI,如果为0表示对应的块不存在PI,角色为L的锁不会存在PI,PI只有对应角色为G的PCM锁才会存在,它是一个数据块在多个实例被修改之后,除了数据块的最新版本之外,在多个实例还存在没有被DBWR写入数据文件的中间版本,当PI对应的数据块被DBWR写入数据文件之后,原来的PI数据块状态会变成CR。当PI产生时,对应的改变信息被写入重做日志文件中。


猜你喜欢

转载自blog.51cto.com/13598811/2144029
今日推荐