RAC与单实例instance多出以下后台进程:
现将各个后台进程及CRS服务进程做简单总结:
一、后台进程
LMS - Gobal Cache Service Process 全局缓存服务进程
LMD- Global Enqueue Service Daemon全局查询服务守护进程
LMON- Global Enqueue Service Monitor全局查询服务监视进程
LCK0- Instance Enqueue Process实例查询进程
DIAG(Diagnostic Daemon) 诊断守护进程
下面分别介绍每个后台进程的功能:
1、LMON--Lock Monitor Processes
监控整个集群状况,维护GCS的内存结构。
处理非正常终止的进程和实例。
当实例离开和加入集群时,锁和资源的重新配置。
管理全局的锁和资源。
监控全局的锁资源,处理死锁和阻塞。
2、LMSn-- Lock Monitor Services
LMS进程主要用来管理集群内数据块的访问,并在不同实例的BUFFER CACHE中传输块镜像。
当在某个数据块上发生一致性读时,LMS负责回滚该数据块,并将它copy到请求的实例上。
每个RAC节点至少有2个LMS进程。
3、LCK--Lock Process
LCK进程主要用来管理实例间资源请求和跨实例调用操作,调用操作包括数据字典等对象的访问;
并处理非CACEH FUSION的CHACE资源请求(例如:DICTIONARY CACHE或row cache的请求)
由于LMS进程负责主要的锁管理功能,所以每个实例只有一个LCK进程。
4、LMD--Lock Monitor Daemon Process
LMD进程主要管理对全局队列和资源的访问,并更新相应队列的状态,处理来自于其他实例的资源请求。
每一个全局队列的当前状态存储在相应的实例共享内存中,该状态表明该实例具有相应的权利使用该资源。
一个实例(master)的共享内存中存在一个特殊的队列,该队列纪录来自其他远程实例的资源请求,当远程实例的LMD进程发出一个资源请求时,该请求指向master实例的LMD,当master实例的LMD进程受到该请求后,在共享内存中的特殊队列中监测该资源是否无效,如果有效则LMD进程更新该资源对列的状态,并通知请求资源的LMD进程该资源队列可以使用了,如果资源队列正在被其他实例使用或者当前无效,则LMD进程通知正在使用中的实例的LMD进程应该释放该资源,等资源释放变得有效时,MASTER实例的LMD进程更新该资源队列的状态并通知请求资源实例的LMD进程该资源队列可以使用了。
二、RAC的服务进程
独立的服务CRS
CRS- 集群资源服务
CSS - 集群同步服务
EVMD 事件管理服务
ONS--事件的发布及订阅服务
1、CRS--Cluster Ready Services
管理集群内高可用操作的基本程序。
CRS管理的任何事物被称之为资源
数据库、实例、监听、虚拟IP(VIP)地址、应用进程等等
CRS是根据存储于OCR中的资源配置信息来管理这些资源
当一资源的状态改变时,CRS进程生成一个事件。
2、CSS--Cluster Synchronization Service
管理集群节点的成员资格
控制哪个结点为集群的成员、结点在加入或离开集群时通知集群成员来控制集群的配置信息
此进程发生故障导致集群重启
3、EVM--Event Management
事件管理守护进程。
发布CRS创建事件的后台进程
4、ONS--Oracle Notification Service
通信的快速应用通知事件的发布及订阅服务