每个节点都有自己的后台进程和内存结构,在RAC环境下有更多的进程来管理共享资源,这些额
外新增的进程就是用来协调节点间缓存的一致性。
LMS(Global Cache Service Process):
LMS是整个Cache Fusion体系最活跃和最忙碌的进程。它负责维护GRD中的数据块资源信息,
处理在实例之间传输的块的一致副本。LMS<N>进程接收响应来自LMD的执行锁操作的请求,
响应对GCS资源的锁管理服务请求,并将它们发送到服务队列。此外它还承担全局死锁的检测任
务并监控锁转换是否超时。所以一般在压测或者高cpu消耗型系统,可以提高这个进程的优先
级,以确保不会出现CPU不足的情况。可以通过查看x$kjmsdp查看这个守护进程的统计信息。
LMD(Global Enqueue Service Daemon):
LMD进程主要负责响应GES,也就是Oralce中的排队资源的管理工作。每一个全局队列的当前
状态存储在相应的实例共享内存(sharedpool)中。当一个会话发出了global enqueue 请求
时, 首 先 本 节点 的 LMD0 进程 会 响 应 这个 请 求 , LMD0进 程 开 始寻 找 这 个 enqueue 资 源 的
master节点。找到后将这个请求发送给master节点,如果需要的话,master节点会增加一个新
的master资源。从mater节点可以知道资源的owner和waiter,当这个资源被授予请求实例
后,master节点的LMD0会通知请求实例的LMD0,最后请求实例的LMD0通知前台进程。此外
LMD还有一个功能就是死锁检测及处理基本流程如下:1. LMD进程定期搜索各个实例的锁信
息,发现可能的死锁。2. 在可能的死锁进程被发现之后,LMD会验证死锁。3. 在得到验证之
后,LMD会选择回滚导致死锁的进程的当前SQL语句,来打破死锁。
LMON(Global Enqueue Service Monitor):
LMON主要负责整个数据库集群层面的一致性关系(CGS),监控整个集群的全局队列和资
源。在进程出现问题的情况下会执行global enqueue 恢复,保持GCS内存结构的一致性,并且
它还负责集群重新配置和锁重新配置(节点加入或离开),当一个实例加入或者离开集群后,
LMON会对lock和resource进行reconfiguration.另外LMON会在不同的实例间进行通讯检
查,如果发现对方通讯超时,就会发出节点eviction。LMON主要也是借助两种心跳机制来完成
健康检测。节点间的网络心跳(Network Heartbeat)即节点间定时发送Ping包检测节点状
态,超时时间由参数_cgs_send_timeout控制,缺省是300秒,这时的重构是IMR触发的。通过
控制文件的磁盘心跳(ControlfileHeartbeat):每个节点的CKPT进程每隔三秒更新一次控制
文件的一个数据块,这个数据块叫做Checkpoint Progress Record,由于控制文件是共享的,
相关文档
评论