Oracle clusterware 和 Oracle RAC 的主要部件

2014-11-24 18:11:25 · 作者: · 浏览: 0

现在看相关的RAC结构的文章还不太理解。


现在看这个就很清楚其中的意思了。


如果使用了第三方的clusterware,是否reboot的决定将交给它去决定。


CRS: 集群就绪服务
主要管理注册到cluster 中的资源(包括vip,instance,db,listener,service等),它会自动重启失败的资源,一般会自动重启5次,如果依然不能重启成功,将放弃重启。


EVM: 事件管理器
主要发布一些crs 产生的事件。


ONS: Oracle Notification Service
主要是接受evmd 和 racgimon 传来的events,并把它发布给local listener 和 application。
主要有两个目的:
a) 使得应用知道集群的状态的变化,并采取相应的措施。如Fast Connection Failover.
b) 用于实现Load balancing. rdbms 的mmon 进程每隔30s 对该节点的wordload 做一次记录,然后通过racgimon 和 ONS 传递给local listener 和 application。


OPROCD:
该进程时刻在内存中运行,监控cluster。如果该进程出现故障,将会重启改节点。


RAC 的主要部件:


相对于单节点的oracle database,rac database 主要是引入了cache fusion 机制,从而减少了磁盘io的次数。在了解rac特有的一些进程之前,先了解一些概念:


GRD:Global Resource Directory
存放在本地内存中,记录共享资源当前的状态。一般一个GRD包含如下内容:dba, location, mode(N, S, X),Role (local,global), PI,XI, scn 等。在一个远程节点提出访问一个数据块的请求之后,要通过访问grd来查看当前模式是否允许远程节点的相应的操作。


Resources Master:
在每次访问一个数据块的时候,都要先访问一次Resources Master(对于每个数据块,oracle 都会为之分配一个instance,作为这个数据块的RM), 然后,Resources Master 通知ges,ges将请求信息发送给gcs,然后访问grd,一切通过之后gcs从该块的holder instance 开始相应远程节点的请求。
在一下情况,RM的位置可能发生改变:
a) 当远程节点访问这个RM的次数大于RM所在节点的次数时,RM将迁移至远程节点
b) 当RM所在节点failed以后,本节点的RM要重新分配到其他存活的节点
c)当添加新的节点后,RM也要重新分配。
RM 的重新分配由进程LMON 负责。


RAC环境特有的若干进程:


LMS—Global Cache Service Process
传输一个本地的buffer cache 到远程的buffer cache,对于要求一致性读的请求,LMS会自动rollback一个数据块来相应一致性请求。根据LMS任务量的多少,每个实例改进程的数量可以从1增加到9.


LMD—Global Enqueue Service Daemon
负责管理远程节点向Resources Master 发出的请求。它发送请求信息到request enqueue, 然后有gcs 来处理enqueue 上面的请求。


LMON—Global Enqueue Service Monitor
负责RM的重新分配


LCK0—Instance Enqueue Process
主要负责那些non-cache fusion 的请求,如library cache 和 row cache 等。