GSD global services daemon (GSD)
与rac的管理工具dbca srvctl oem进行交互,用来完成实例的启动关闭等管理任务。
为了保证这些管理工具运行正常必须在所有的节点上先start gsd,并且一个GSD进程支持在
一个节点的多个rac.gsd进程位于$ORACLE_HOME/bin目录下,其log文件 为$oracle_home
/srvm/log/gsdaemon.log
例如:
假设使用oem工具来启动一个实例,oem把该 任务传递给相应的智能引擎,该智能引擎生成
一个包含SRVCTL命令的脚本文件,GSD进程读取该脚本文件并且执行该脚本,最后GSD把
执 行结果返回给智能引擎,近而智能引擎返回给OEM.
又例如假设使用srvctl工具关闭所有的实例,GSD进程接受来自SRVCTL工具发出的请 求,并
在本地节点上执行该请求,然后把执行结果返回给SRVCTL会话。
LMON:GLOBAL ENQUEUE SERVICE MONITORLMON
主要监测群集内的全局队列和全局资源,管理实例和处理异常并相应的群集队列进行恢复操作。
LMD:GLOBAL ENQUEUE SERVICE DAEMONLMD进程
主要管理对全局队列和资源的访问,并更新相应队列的状态,处理来自于其他实例
的资源请 求。每一个全局队列的当前状态存储在相应的实例共享内存中,该状态表明该实例
具有相应的权利使用该资源。一个实例(master)的共享内存中存 在一个特殊的队列,该队
列纪录来自其他远程实例的资源请求,当远程实例的LMD进程发出一个资源请求时,该请求
指向master实例的 LMD,当master实例的LMD进程受到该请求后,在共享内存中的特殊队列
中监测该资源是否无效,如果有效则LMD进程更新该资源对列的状 态,并通知请求资源的
LMD进程该资源队列可以使用了,如果资源队列正在被其他实例使用或者当前无效,则
LMD进程通知正在使用中的实例 的LMD进程应该释放该资源,等资源释放变得有效时,
MASTER实例的LMD进程更新该资源队列的状态并通知请求资源实例的LMD进程该资源
队 列可以使用了。另外LMD进程也负责队列的死锁问题。。。
LMSn:GLOBAL CACHE SERVICE PROCESS(n 0~9)
LMS进程主要用来管理集群内数据块的访问,并在不同实例的BUFFER CACHE中传输块
镜像。LMS进程跨集群管理数据库的请求, 并保证在所有实例的BUFFER CACHE中一个
数据块的镜像只能出现一次。LMS进程靠着在实例中传递消息来协调数据块的访问,当
一 个实例请求数据块时,该实例的LMD进程发出一个数据块资源的请求,该请求只向
MASTER数据块的实例的LMD进程,MASTER实例的LMD 进程同时正在使用的实例的LMD
进程释放该资源,这时拥有该资源的实例的LMS进程会创建一个数据块镜像的一致性读
然后把该数据块传递到 请求该资源的实例的BUFFER CACHE中。
LMS进程保证了在每一时刻只能允许一个实例去更新数据块,并负责保持该数据块的
镜像纪 录(包含更新数据块的状态FLAG),RAC提供了10个LMS进程,该进程数量随着
节点间的消息传递的数据的增加而增加。
LCK LCK
进程主要用来管理实例间资源请求和跨实例调用操作,调用操作包括数据字典等对象
的访问;并处理出CACEH FUSION的CHACE资源请求(例如:DICTIONARY CACHE)
DIAG:DIAGNOSABILITY DAEMONDIAG进程
主要用来捕获实例中失败进程的诊断信息,并生成相应的TRACE文件(该trace
文件保存在 backupground_dump_dest/cdmp_timestamp目录下),该进程不
需要进行配置更不应该被停止。该进程自动启动不 需要进行调整,如果该进程失效则自动
重新启动。