RAC后台进程介绍

在RAC数据库上会比单实例数据库多一些进程,这些进程是RAC特有的,为了实现集群数据库功能而设置的。这篇文章会对RAC特有的进程做一些介绍。

1、LMSn: Global Cache Service Process。

LMSn进程会维护在Global Resource Directory (GRD)中的数据文件以及每个cached block的状态。LMSn用于在RAC的实例间进行message以及数据块的传输,这个对应的服务也就是GCS(Global Cache Service),LMS是Cache Fusion的一个重要部分。LMS进程可以说是RAC上最活跃的后台进程,会消耗较多的CPU.一般每个实例会有多个LMS进程,每个Oracle版本的默认的LMS进程数目会有所不同,大部分版本的默认值是:MIN(CPU_COUNT/2,
2))

2、LMD: Global Enqueue Service Daemon。(对应的服务叫GES服务)

LMD 进程主要处理从远程节点发出的资源请求,在多个实例之间协调对数据块的访问顺序,保证数据的一致性访问,大概过程如下:

+ 一个连接发出了global enqueue 请求

+ 这个请求会被发给本节点的LMD0进程

+ 这个前台进程会处于等待状态

+ LMD0会找到这个资源的master节点是谁

+ LMD0会把这个请求发送给master节点

+ 如果需要的话,master节点会增加一个新的master资源

+ 这时从master节点可以获知谁是owner, waiter

+ 当这个资源被grant给requestor后, master节点的LMD0进程会告知requestor节点的LMD0

+ 然后requestor节点的LMD0会通知申请资源的前台进程

GCS服务与GES服务还有GRD共同构成了RAC的Cache Fusion(缓存融合)

缓存融合是RAC内部最复杂的一部分,其中数据块是如何通过private network在实例之间传递,如何控制访问顺序,这些都很复杂,有兴趣的同学可以研究

如上总结LMD主要处理global enqueue 的请求, 而LCK0主要处理本实例的lock.

另外,RAC上的global deadlock 也是由LMD来发现的。

3、LCK0: Instance Enqueue Process。

LCK0进程主要处理非cache fustion的资源请求,比如library 和row cache 请求。

LCK0处理在实例一级的锁:

Row cache entries

Library cache entries

Result cache entries

这些实例级的锁的owner, waiter是LCK0进程。

只要这个实例的锁的owner是LCK0,那么这个实例的任何一个连接都可以使用这种cached的metedata.

如果本地的实例没有拥有这个lock,那么需要申请这个lock,前台进程会等待DFS Lock Handle。

另外,当shared pool出现压力需要释放一些内存来存放新的cursor时,LCK进程会将dictionary cache 的一些内存进行释放。

4、LMON: Global Enqueue Service Monitor。

LMON用于监控整个集群的global enqueues和resources, 而且会执行global enqueue recovery。实例异常终止后,会由LMON来进行GCS内存方面的处理。当一个实例加入或者离开集群后,LMON会对lock和resource进行reconfiguration.也就是说当某个节点出现故障时,LMON负责集群重构,GRD恢复等操作,另外LMON会在不同的实例间进行通讯检查,如果发现对方通讯超时,就会发出节点eviction,所以很多时候节点发生eviction后(ORA-481,
ORA-29740等),我们需要查看LMON的trace来了解eviction的原因。

LMON主要借助两种心跳机制完成健康检查:

1)节点之间网络心跳,可以简单理解为节点间定时发送ping包检测节点状态,如果规定时间能收到回应,就认为对方状态正常

2)通过控制文件磁盘心跳,每个节点的ckpt进程每3秒更新一次controlfile的数据快,由于controlfile是共享的,所以实例之间可以检查对方是否及时更新controlfile来判断对方的状态。

5、DIAG: Diagnostic Capture Process。

用来打印诊断信息。diag进程会响应别的进程发出的dump请求,将相关的诊断信息写到diag trace文件中。在RAC上,当发出global oradebug请求时,会由每个实例的diag进程来打印诊断信息到diag trace中。

比如:下面的命令用了“-g”,那么生成的dump信息会分别写到每个实例的diag trace文件中:

SQL>oradebug -g all hanganalyze 3

SQL>oradebug -g all dump systemstate 266

6、ASMB: ASM Background Process。

用于和ASM实例进行通讯,用来管理storage和提供statistics。当使用ASMCMD的cp命令时,需要用到ASM实例上的ASMB进程,数据库实例的spfile如果位于存于ASM上,那么也会用到ASMB进程。如果OCR存放在ASM中,也会用到ASMB。

7、RBAL:ASM Rebalance Master Process。

作为ASM磁盘组进行rebalance时的协调者(Coordinator)。在数据库实例上,由它来管理ASM磁盘组。

8、Onnn:ASM Connection Pool Process。

是从数据库实例连接到ASM实例上的一些连接池,通过这些连接池,数据库可以发送消息给ASM实例。比如,由它将打开文件的请求发送给ASM实例,这些连接池只处理一些较短的请求,不处理创建文件这种较长的请求。

------11G 特有的:

9、PING:Interconnect Latency Measurement Process。

用来检查集群中各个实例间的私网通讯状况。每个实例每隔几秒会发送给其它实例一些消息,这些消息会由其它实例的PING进程收到。发送和接收信息花费的时间会被记录下来并判断是否正常。

10、LMHB: Global Cache/Enqueue Service Heartbeat Monitor。

监控本地的LMON, LMD, LCK0,RMS0 and LMSn等进程是否运行正常,是否被阻塞或者已经hang了。

11、RMSn:Oracle RAC Management Process。

完成对RAC的一些管理任务,比如当一个新的实例加入到集群后,给这个实例创建相关的资源。

12、RSMN: Remote Slave Monitor Process。

管理后台的slave进程的创建,作为远程实例的协调者来完成一些任务。

13、GTXn: Global Transaction Process。

在RAC环境中对于XA 事务提供透明支持,维护在RAC中的XA事务的global信息,完成global事务的两阶段提交。

14、RCBG: Result Cache Background Process。

这个进程用来处理RAC上Result Cache相关的消息。

15、ACMS: Atomic Control File to Memory Service Process。

作为每个实例上的agent来保证SGA的更新在RAC的所有实例上都是同步的,或者是全局成功提交,或者由于一些问题而导致全局回滚。

时间: 2024-11-10 15:23:06

RAC后台进程介绍的相关文章

Oracle 后台进程介绍

一 进程分类: 1.服务器进程(server process): 根据客户请求完成工作.如接收和处理应用发送的SQL语句 2.后台进程(background process): 随数据库而启动,用于完成各种维护任务.如将块写到磁盘(DBWn). 维护在线重做日志(LGWR).清理异常终止的进程等. 3.从属进程(slave process):类似于后台进程,不过它们要代表后台进程或服务器进程完成一些额外工作. 二 主要讲一下后台进程: 来浏览一下主要进程: SQL> select paddr,

[RAC] oracle rac 后台进程

一.RAC后台进程 LMON:LOCK Monitor Processes 也被称为Global enqueue service monitor 监控整个集群状况,维护GCS的内存结构 监控非正常终止的进程和实例 当实例离开和加入集群时,锁和资源的重新配置 管理全局的锁和资源 监控全局的锁资源.处理死锁和阻塞 LCK:Lock Process LCK进程主要用来管理实例间资源请求和跨实例调用操作,调用操作包括数据字典等对像访问,并处理非 CACEH FUSION的CHACE资源请求,(例如dic

【ora10,4】oracle后台进程介绍:

一.SMON(System MONitor) 系统监控进程: 在数据库启动过程中,SMON排在CKPT进程之后,在Oracle9i中排在第六号的位置: PMON started with pid=2 DBW0 started with pid=3 LGWR started with pid=4 CKPT started with pid=5 SMON started with pid=6 RECO started with pid=7 SMON负责系统监视已经一些系统清理及恢复工作,这些工作主要

【RAC】RAC相关基础知识

[RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁.负载管理等框架.从而使得RAC可以脱离第三方集群件,当然,CRS与第三方集群件可以共同使用. (1).CRS进程 CRS主要由三部分组成,三部分都作为守护进程出现 <1>CRSD:资源可用性维护的主要引擎.它用来执行高可用性恢复及管理操作,诸如维护OCR及管理应用资源,它保存着集群的信息状态和OC

Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)

ORACLE集群概念和原理(二) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体系的总结,一则进行回顾复习,另则便于查询使用.本图文文档亦源于此.阅读Oracle RAC安装与使用教程前,笔者先对这篇文章整体构思和形成进行梳理.由于阅读者知识储备层次不同,我将从Oracle RAC安装前的准备与规划开始进行整体介绍安装部署Oracle RAC.始于唐博士指导,对数据库集群进行配置安装,前

Oracle RAC(Real Application Clusters)

Oracle RAC 运行于集群之上,为 Oracle 数据库提供了最高级别的可用性.可伸缩性和低成本计算能力.如果集群内的一个节点发生故障,Oracle 将可以继续在其余的节点上运行.Oracle 的主要创新是一项称为高速缓存合并的技术.高速缓存合并使得集群中的节点可以通过高速集群互联高效地同步其内存高速缓存,从而最大限度地低降低磁盘 I/O.高速缓存最重要的优势在于它能够使集群中所有节点的磁盘共享对所有数据的访问,数据无需在节点间进行分区.Oracle 是唯一提供具备这一能力的开放系统数据库

关于Oracle的rac集群和mysql Galera Cluster的想法

到了新公司,公司用的是rac,我比较熟悉mysql第三方的集群方案Galera Cluster这类多主集群, 下面是我参考了他人对rac的介绍,然后和mysql方案进行的臆测级别的分析对比. rac和mysql Galera Cluster(mgc)的对比, 1.实施和运维,rac是商业方案系统化性当然强点,mgc大多使用各种开源高可用负载均衡器,部署起来对实施人员的要求rac比较低,废话...rmb都给了甲骨文了,如果是自行配制弄得不好性能2台还不如一台,其实运维方面来说体量大了都一样: 2.

RAC基本原理

什么是RAC? 多个实例跑在多个服务器上 一个数据库存放在共享的存储上,所有实例都可以访问 实例之间通过内联网络交换数据和信息 共享存储内容:数据文件.REDO.UNDO.控制文件 参数文件可以共享也可以不共享 RAC架构: RAC的特点: 具有普通单节点的特点 每个节点的实例都有自己的SGA 每个节点的实例都有自己的后台进程 每个节点的实例都有自己的REDO LOGS (存于共享上,所有实例都可以访问) 每个节点的实例都有自己的UNDO表空间 RAC如何容错: 如果一个节点挂掉: 其他节点读取

Oracle数据库HA架构方案介绍

摘要:Oracle数据库在各类应用系统中负责存储平台所有的用户数据,数据库的可靠性及安全性直接影响平台的安全运行,目前采用的Oracle Replication方式来实现的数据库高可靠性已经显示出了弊端,本文介绍并分析了目前比较流行的几种数据库高可用性的架构:Oracle Replication.Oracle Rac.Oracle 主机HA等,希望给大家一个参考. 1 什么是高可用性(High  Availability) 高可用(HA)性有两种不同的含义,在广义环境中是指整个系统的高可用性,在