Oracle clusterware 和 Oracle RAC 的主要部件


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

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

Oracle clusterware 主要有以下主要部件:
CSS: 集群同步服务
主要管理整个集群内各个节点间的情况,包括节点的添加和减少。与之对应的是ocssd 进程,如果改进程出现故障将会导致节点重启。如果使用了第三方的clusterware,css 通过第三方clusterware 管理节点间的信息。
关于是否使用第三方clusterware,css 的不同在init.crsd 中有如下定义:
# FAST_REBOOT - take out the machine now. We are concerned about
# data integrity since the other node has evicted us.
# SLOW_REBOOT - We can rely on vendor clusterware to delay sending
# the reconfig to the other node due to its IO fencing
# guarantees. So trigger its diagnostic reboot.

如果使用了第三方的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 等。

相关内容