Oracle11gR2——RAC的组件

来源:互联网 发布:数码印刷软件 编辑:程序博客网 时间:2024/05/01 10:55
1、Oracle集群件组件

构成Oracle集群件的后台进程和服务是CRSd、OCSSd、OPROCd、EVMd和ONS。另外Oracle集群件还包括OCR及表决磁盘。


a、集群就绪服务——CRSd:它为Oracle集群件提供了高可用性的框架,并管理集群资源的状态:启动、停止、监视集群资源,并把发生故障的集群资源重定位到集群中的可用节点。

集群资源包括如:虚拟IP、数据库实例、监听器或第三方应用程序等。

CRSd对资源进行管理,例如启动和停止应用程序资源的服务及故障转移。它生成独立的进程来管理应用程序资源。

CRSd有两种运行模式,在计划内的集群件启动期间,它以reboot模式启动;在计划外关闭之后,它以restart模式启动。在reboot模式中,CRSd启动受其管理的所有资源。在restart模式中,它保

持原来的状态,并使资源返回关闭前的状态。

CRS管理Oracle集群注册表(OCR),并将当前已知状态存储在OCR中。

CRS在UNIX中以root身份运行,在Windows上以LocalSystem身份运行,在发生故障时会自动重新启动。

CRS需要公共IP、私有IP和虚拟IP才能运行。在开始安装CRS之前,公共和私有接口应当处于运行状态,而且能够相互执行ping操作。


b、集群同步服务——OCSSd:它提供对节点成员关系的访问,并支持基本集群服务,包含集群组服务和集群锁定。OCSSd的故障会导致计算机重新启动,以避免“脑裂”。OCSSd以Oracle用户身份运行

,并通过“节点集群”和“组”成员资格服务来管理Oracle集群件的配置。OCSSd以两种心跳机制来提供这些服务:网络心跳和磁盘心跳。网络心跳的目的是查看Oracle集群的有效性,而磁盘心跳则

帮助确认脑裂的情况。因为OCSSd如此重要,所以它发生故障时,将重启计算机。单实例使用ASM的情况下,也需要这一服务。

CSS提供基本的组服务支持。组服务是一种分布式组成员资格系统,它允许应用程序协调活动,以得出一个公共的结果。

锁服务提供了基本的集群范围内序列化锁定功能。它使用FIFO机制来管理锁定。

节点服务使用OCR来存储数据,并在重新配置期间更新信息。它还管理OCR数据,这些OCR数据在其他方面是静态的。


c、事件管理记录器——EVMd:evmd进程以Oracle用户身份运行。假设Oracle集群由两个集群节点组成:节点A和节点B。当节点B离开集群时,节点A上的ocssd进程发出一个离开FAN事件,节点A上的

evmd进程将它发布到节点A上的crsd进程,因为crsd进程是离开FAN时间的订阅者。Oracle提供了evmwatch和evmget实用工具,用于在标准输出上查看FAN事件。


d、进程监控器——OPROCd:11gR2中已废弃。


e、Oracle通知服务——ONS:该进程是在安装Oracle集群件期间配置的,在CRS启动时会在每个集群节点上启动该进程。只要集群资源的状态发生改变每个集群节点上的ONS进程就会相互通信,并交

换高可用性事件信息。CRS触发这些HA事件,并将它们传送到ONS进程,然后ONS进程将这一高可用性事件信息发布到中间层。如果应用程序需要与FAN事件集成,则必须安装ONS服务。


f、11gR2中的集群件启动进程——OHASd(高可用性服务守护进程):它来启动所有其他Oracle集群件守护进程。

在安装OGI时,Oracle向/etc/inittab文件中添加一项:h1:35:respawn:/etc/init.d/init.ohasd run >/dev/null 2>&1 </dev/null

/etc/inittab文件执行带有run参数的/etc/init.d/init.ohasd控制脚本,它生成ohasd.bin可执行文件。/etc/init.d/init.ohasd控制脚本根据ohasdrun集群控制文件的值(restart、reboot、s

top)启动OHASd。

OHASd使用集群资源启动其他集群件守护进程。OHASd对每个集群件守护进程都有一个资源,这些资源存储在Oracle本地注册表中。这些守护进程资源使用代理管理集群件守护进程,如启动、停止

和监控集群件守护进程。有四种主要代理:oraagent、orarootagent、cssdagent和cssdmonitor。这些代理对各自的集群件守护进程执行启动、停止、检查和清理操作。


g、集群注册表——OCR:用来存储Orcle集群件中所定义的全部集群资源的元数据、配置和状态信息。这些注册表文件是二进制文件。

OCR用于引导CSS,提供端口信息、集群中的节点和类似信息。

CSSd在集群创建阶段更新OCR,集群建立之后,OCR就用于只读操作。在资源状态变化、服务器启停、网络故障转移以及策略变化时会更新OCR。

可以在Oracle集群件的安装期间镜像OCR文件。尽管这一点非常重要,但它并非强制进行。Oracle在一个名为ocr.loc的文本文件中存储了OCR文件的位置。

[root@node1 ~]# less /etc/oracle/ocr.loc
ocrconfig_loc=+ASM_DG
local_only=FALSE

Oracle在每个集群节点上使用OCR的一个内存中副本来优化各个客户端针对OCR的查询,但是一个集群中不允许有一个以上的CRSd进程向共享OCR文件中写入内容。

CRSd进程刷新所有集群节点上的OCR缓存,客户端与本地CRSd进程通信,以访问OCR的本地副本,并通过本地CRSd进程与主CRSd进程联系,以获得物理OCR二进制文件的任意更新。

OCR还保存着集群资源的依赖信息。

OCR文件每4小时自动备份一次,这些备份保存一周,被循环覆盖。OCR的最近3个成功备份可以在下列目录中找到:

$GRID_HOME/cdata/clustername


h、Oracle本地注册表——OLR:OLR是11gR2引入的,它只存储与本地节点有关的信息,OLR存储OHASd通常需要的信息(集群的版本配置等)。

Oracle在一个名为/etc/oracle/olr.loc的文件中保存了OLR的位置:$GRID_HOME/cdata/hostname.olr


i、表决磁盘:必须为共享磁盘,它保存了节点之间的心跳信息。如果有任何节点不能ping表决磁盘,那么集群立即确认通信故障,将该节点从集群组中逐出。


j、虚拟IP:在公共IP子网中配置这个IP,监听器将会被配置为监听VIP,而不是公共IP。

当一个节点停机时,VIP会被自动故障转移到其他节点之一,这一过程不需要等待TCP超时。


k、单一客户端访问名称——SCAN(11gR2中引入):集群可以有1~3个SCAN监听器和SCAN VIP,客户端仅以SCAN VIP进行连接,因此集群节点发生变化时并不需要改变客户端的连接配置。

每个数据库实例都是用数据库初始化参数REMOTE_LISTENER将自己注册到本地监听器和SCAN监听器。

 
2、Oracle内核组件

由于缓冲区缓存和共享池在Oracle RAC环境中是全局的,因此管理这些内存结构需要附加的后台进程。

Oracle RAC环境中的Oracle内核组件是每个实例中的附加后台进程集合。

全局资源目录——GRD:集群中的所有资源构成一个集中资源仓库,称为全局资源目录GRD,它是集成的,分布式的。

每个实例掌握着某一组资源,所有实例加起来构成GRD。

GRD由两个服务管理,它们是全局缓存服务(GCS)和全局队列服务(GES)。

当一个实例离开或者加入集群时,GRD将重新分配。

GRD管理所有资源的锁定或所有权。GRD包含GCS和GES,GCS处理数据块,GES处理队列和其他全局资源。

GCS和GES使用一下进程管理资源:

LMS——全局和缓存服务进程:又名锁管理服务器,它可以从数据块所在的实例的缓冲区向请求实例的缓冲区缓存中传递数据块的一致性副本;它还可以从LMD建立的服务队列中获取请求,以执行所

请求的锁操作;LMS进程管理对GCS资源的“锁管理器服务器”请求,并将它们发送到一个由LMS进程处理的服务队列;LMS还负责全局锁的死锁检测,并监控对话的超时。

每个实例最多可以拥有10个LMS进程,实际数量根据节点之间的消息通信流量发生变化,也可以使用隐藏参数手动调整,只有在非常特殊的情况下,才需要调整该参数。

LMON——全局队列服务监控器:又名锁监控器,它负责管理GES,它在进程死亡时维持GCS内存的一致性,LMON还负责在有实例加入或离开集群时进行集群重新配置和锁重新配置。

LMON进程监控整个集群,以管理全局资源,它管理实例死亡以及任意故障实例的相关恢复。总的来说,LMON处理与全局资源有关的恢复部分。

LMD——全局队列服务守护进程:LMD进程负责死锁检测和全局资源请求。

LCK0——实例队列进程:它管理实例资源请求和对共享资源的跨实例调用。

DIAG:DIAG的工作与实例无关,通过DIAG框架和oradebug实用工具实现集群范围内的调试。

如果DIAG进程死亡,PMON进程会重新启动一个DIAG。
0 0
原创粉丝点击