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

10g RAC特有进程:
$ ps -ef|grep ora_
oracle    4721     1  0 Feb26 ?        00:00:00 ora_diag_ONEPIECE1
oracle    4725     1  0 Feb26 ?        00:02:26 ora_lmon_ONEPIECE1
oracle    4727     1  0 Feb26 ?        00:00:02 ora_lmd0_ONEPIECE1
oracle    4729     1  0 Feb26 ?        00:00:01 ora_lms0_ONEPIECE1
oracle    4733     1  0 Feb26 ?        00:00:01 ora_lms1_ONEPIECE1
oracle    4761     1  0 Feb26 ?        00:00:07 ora_lck0_ONEPIECE1
oracle    4772     1  0 Feb26 ?        00:00:00 ora_asmb_ONEPIECE1
oracle    4776     1  0 Feb26 ?        00:00:00 ora_rbal_ONEPIECE1
oracle    4840     1  0 Feb26 ?        00:00:00 ora_o001_ONEPIECE1

11g RAC特有进程:
$ ps -ef|grep ora_
oracle     426     1  0 Feb27 ?        00:00:08 ora_o000_RAC11G21
oracle    9082     1  0 Feb25 ?        00:01:09 ora_diag_RAC11G21
oracle    9086     1  0 Feb25 ?        00:00:27 ora_ping_RAC11G21
oracle    9088     1  0 Feb25 ?        00:00:06 ora_acms_RAC11G21
oracle    9092     1  0 Feb25 ?        00:05:27 ora_lmon_RAC11G21
oracle    9094     1  0 Feb25 ?        00:01:32 ora_lmd0_RAC11G21
oracle    9096     1  0 Feb25 ?        00:02:07 ora_lms0_RAC11G21
oracle    9100     1  0 Feb25 ?        00:00:06 ora_rms0_RAC11G21
oracle    9102     1  0 Feb25 ?        00:00:14 ora_lmhb_RAC11G21
oracle    9116     1  0 Feb25 ?        00:00:09 ora_rbal_RAC11G21
oracle    9118     1  0 Feb25 ?        00:00:05 ora_asmb_RAC11G21
oracle    9136     1  0 Feb25 ?        00:04:25 ora_lck0_RAC11G21
oracle    9138     1  0 Feb25 ?        00:00:14 ora_rsmn_RAC11G21
oracle    9295     1  0 Feb25 ?        00:00:07 ora_gtx0_RAC11G21
oracle    9297     1  0 Feb25 ?        00:00:07 ora_rcbg_RAC11G21

这篇文章会对这些RAC特有的进程做一些介绍。

LMD: Global Enqueue Service Daemon。LMD 进程主要处理从远程节点发出的资源请求。大概过程如下:
+ 一个连接发出了global enqueue 请求
+ 这个请求会被发给本节点的LMD0进程
+ 这个前台进程会处于等待状态
+ LMD0会找到这个资源的master节点是谁
+ LMD0会把这个请求发送给master节点
+ 如果需要的话,master节点会增加一个新的master资源
+ 这时从master节点可以获知谁是owner, waiter
+ 当这个资源被grant给requestor后, master节点的LMD0进程会告知requestor节点的LMD0
+ 然后requestor节点的LMD0会通知申请资源的前台进程

也就是说LMD主要处理global enqueue 的请求, 而LCK0主要处理本实例的lock.
另外,RAC上的global deadlock 也是由LMD来发现的。

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 的一些内存进行释放。

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

还有,在DRM(Dynamic Resource management)中,LMD会监控需要进行remaster的queue,然后把任务发送给LMON进程,LMON进程来实施remaster。

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

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

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

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

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

PZ:PQ slaves。PZnn进程(从99开始)用于查询GV$视图,这种查询需要在每个实例上并行执行。如果需要更多的PZ进程,会自动生成PZ98, PZ97,...(降序)。

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

LMHB: Global Cache/Enqueue Service Heartbeat Monitor。监控本地的LMON, LMD, LCK0,RMS0 and LMSn等进程是否运行正常,是否被阻塞或者已经hang了。

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

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

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

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

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

请参考官方文档:
http://docs.oracle.com/cd/E11882_01/server.112/e25513/bgprocesses.htm#REFRN104
Oracle® Database Reference
11g Release 2 (11.2)
Part Number E25513-03
F Background Processes

My Oracle Support文档:
New Background Processes In 11g (Doc ID 444149.1)

RAC数据库后台进程介绍的更多相关文章

  1. oracle rac 数据库常用命令

    oracle rac 数据库常用命令:1.所有实例和服务的状态srvclt status database -d orcl单个实例的状态:srvctl status instance -d orcl ...

  2. 关于Oracle数据库后台进程

    为了最大限度地提高性能并适应许多用户,多进程Oracle数据库系统使用后台进程.后台进程将合并功能,否则这些功能将由运行于每个用户进程的多个数据库程序处理.后台进程异步执行I / O并监视其他Orac ...

  3. 转载:【Oracle 集群】RAC知识图文详细教程(八)--Oracle 11G RAC数据库安装

    文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...

  4. 习水医院12C RAC 数据库安装文档

        环境介绍 OS: Oracle Enterprise Linux 6.4 (For RAC Nodes) DB: GI and Database 12.1.0.2 所需介质 p17694377 ...

  5. 【RAC】将单实例备份集恢复为rac数据库

    [RAC]将单实例备份集恢复为rac数据库 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...

  6. MySQL数据库引擎介绍、区别、创建和性能测试的深入分析

    本篇文章是对MySQL数据库引擎介绍.区别.创建和性能测试进行了详细的分析介绍,需要的朋友参考下   数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎 ...

  7. Postgres数据库基本介绍

    最近一直在做一个和PostgreSQL数据库相关的项目,把自己在这个过程中学习的知识记录下来.关于PostgreSQL数据库网上已经有太多的相关介绍了,为了博文的系统性还是先看一下维基百科对Postg ...

  8. [转]MySQL数据库引擎介绍、区别、创建和性能测试的深入分析

    本篇文章是对MySQL数据库引擎介绍.区别.创建和性能测试进行了详细的分析介绍,需要的朋友参考下   数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎 ...

  9. RAC 数据库的启动与关闭

    RAC数据库与单实例的差异主要表现在多个实例通过集群件来统一管理共享的资源.因此原有的单实例的管理方式,如数据库.监听器等的关闭启动等可以使用原有的方式进行,也可以通过集群管理工具,命令行来集中管理, ...

随机推荐

  1. POJ - 2955 Brackets括号匹配(区间dp)

    Brackets We give the following inductive definition of a “regular brackets” sequence: the empty sequ ...

  2. DSOFramer控件使用注意事项

    1.引用dll==>AxInterop.DSOFramer.dll ==>Interop.DSOFramer.dll ==>WindowsFormsIntegration ==> ...

  3. Hyperledger Fabric java chaincode 中文乱码问题

    开发java chaincode过程中遇到一个中文乱码的问题.都是官方的demo,请求的sdk是用java写的,部署的chaincode有两种选择(不考虑node),一种go语言写的chaincode ...

  4. hdu1693Eat the Trees(插头dp)

    传送门 先坑着,等啥时候会了再来填坑 不得不说思路真的是很妙啊 //minamoto #include<iostream> #include<cstdio> #include& ...

  5. C/C++<算法>进制转换超详细

    16转10 用竖式计算: 16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方 第0位: 5 * 16^0 = 5 第1位: F * 16^1 = 240 第 ...

  6. virtualenv模块安装

    依赖包管理模块(virtualenv) virtualenv是Python的虚拟环境,可以在同一台PC隔离不同的python开发环境.virtualenv可以创建一个隔离的python环境(沙盒).使 ...

  7. CodeForces - 1005A-Tanya and Stairways(模拟)

    Little girl Tanya climbs the stairs inside a multi-storey building. Every time Tanya climbs a stairw ...

  8. api接口测试工具和接口文档管理工具

    api接口测试工具和接口文档管理工具 1.postman(https://www.getpostman.com) Postman 是一个很强大的 API调试.Http请求的工具.她可是允许用户发送任何 ...

  9. JavaScript 中Array数组的几个内置函数

    本文章内容均参考<JavaScript高级程序设计第三版> 今天在看JavaScript书籍的时候,看到之前没有了解过的JavaScript中Array的几个内置函数对象,为了之后再开发工 ...

  10. NET Core源代码通过Autofac实现依赖注入

    查看.NET Core源代码通过Autofac实现依赖注入到Controller属性   阅读目录 一.前言 二.使用Autofac 三.最后 回到目录 一.前言 在之前的文章[ASP.NET Cor ...