rac后台进程说明及一些概念

来源:互联网 发布:2015网络十大神曲 编辑:程序博客网 时间:2024/06/06 02:38

参考:http://blog.itpub.net/670493/viewspace-1024937/


rac后台进程说明及一些概念

1.GSD global services daemon

GSDrac的管理工具dbca srvctl oem进行交互,用来完成实例的启动关闭等管理任务。为了保证这些管理工具运行正常必须在所有的节点上先start gsd,并且一个GSD进程支持在

一个节点的多个rac.gsd进程位于$ORACLE_HOME/bin目录下,其log文件为$oracle_home/srvm/log/gsdaemon.log

例如:

假设使用oem工具来启动一个实例,oem把该任务传递给相应的智能引擎,该智能引擎生成一个包含SRVCTL命令的脚本文件,GSD进程读取该脚本文件并且执行该脚本,最后GSD

执行结果返回给智能引擎,近而智能引擎返回给OEM.又例如假设使用srvctl工具关闭所有的实例,GSD进程接受来自SRVCTL工具发出的请求,并在本地节点上执行该请求,然后把执行结果返回给SRVCTL会话。

2.LMON:GLOBAL ENQUEUE SERVICE MONITOR

LMON主要监测群集内的全局队列和全局资源,管理实例和处理异常并相应的群集队列进行恢复操作。监控全局锁定(global enqueues)及其资源,并提供global enqueues资源的恢复操作。enqueues是用来进行串行化行更新的共享的内存结构。

[@more@]

3.LMD:GLOBAL ENQUEUE SERVICE DAEMON

LMD进程主要管理对全局队列和资源的访问,并更新相应队列的状态,处理来自于其他实例的资源请求。每一个全局队列的当前状态存储在相应的实例共享内存中,该状态表明该实例具有相应的权利使用该资源。一个实例(master)的共享内存中存在一个特殊的队列,该队列纪录来自其他远程实例的资源请求,当远程实例的LMD进程发出一个资源请求时,该请求指向master实例的LMD,master实例的LMD进程受到该请求后,在共享内存中的特殊队列中监测该资源是否无效,如果有效则LMD进程更新该资源对列的状态,并通知请求资源的LMD进程该资源队列可以使用了,如果资源队列正在被其他实例使用或者当前无效,则LMD进程通知正在使用中的实例的LMD进程应该释放该资源,等资源释放变得有效时,MASTER实例的LMD进程更新该资源队列的状态并通知请求资源实例的LMD进程该资源队列可以使用了。另外LMD进程也负责队列的死锁问题。。。

4.LMSn:GLOBAL CACHE SERVICE PROCESS(n 0~9)

LMS进程主要用来管理集群内数据块的访问,并在不同实例的BUFFER CACHE中传输块镜像。LMS进程跨集群管理数据库的请求,并保证在所有实例的BUFFER CACHE中一个数据块的镜像只能出现一次。LMS进程靠着在实例中传递消息来协调数据块的访问,当一个实例请求数据块时,该实例的LMD进程发出一个数据块资源的请求,该请求只向MASTER数据块的实例的LMD进程,MASTER实例的LMD进程同时正在使用的实例的LMD进程释放该资源,这时拥有该资源的实例的LMS进程会创建一个数据块镜像的一致性读,然后把该数据块传递到请求该资源的实例的BUFFER CACHE中。LMS进程保证了在每一时刻只能允许一个实例去更新数据块,并负责保持该数据块的镜像纪录(包含更新数据块的状态FLAG),RAC提供了10LMS进程,该进程数量随着节点间的消息传递的数据的增加而增加。

5. lock process(LCK)

LCK进程主要用来管理实例间资源请求和跨实例调用操作,调用操作包括数据字典等对象的访问;并处理非CACEH FUSIONCHACE资源请求(例如:DICTIONARY CACHErow cache的请求)

6.DIAG:DIAGNOSABILITY DAEMON

DIAG进程主要用来捕获实例中失败进程的诊断信息,并生成相应的TRACE文件(该trace文件保存在backupground_dump_dest/cdmp_timestamp目录下),该进程不需要进行配置更不应该被停止。该进程自动启动不需要进行调整,如果该进程失效则自动重新启动。

7Operating System-Dependent(OSD)

是指依赖操作系统的一些参数、软件等。RAC通过操作系统相关的软件来访问操作系统和一些于CLUSTER相关的服务进程。OSD软件可能由Oracle提供(windows平台)或由硬件厂商提供(unix平台)。

OSD包括三个自部分:

The Cluster Manager(CM):集群监视器监视节点间通信,并通过interconnect来协调节点操作。同时还提供CLUSTER中所有节点和实例的统一视图。CM还控制CLUSTER的成员资格。

The Node Monitor(节点监视器):节点监视器提供节点内各种资源的状态,包括节点、interconnect硬件和软件和共享磁盘等。

The Interconnect

8Real Application Cluster Shared Disk Component

RAC中这部分组件和单实例Oracle数据库中的没有什么区别。包括一个或多个控制文件、一系列联机重做日志文件、可选的归档日志文件、数据文件等。

RAC中使用服务器参数文件会简化参数文件的管理,可以将全局参数和实例特定的参数存储在同一个文件中。

9Real Application Cluster-Specific Daemon and Instance Processes

包含两部分:

The Global Service DaemonGSD:在每个节点上都运行一个全局服务后台进程,用于接收客户端如DBCAEM等发出的管理消息,并完成相应的管理任务,比如实例的启动和关闭。

RAC中特别的实例进程:

Global Cache Service Processes(LMSn):控制到远端实例的消息的流量,管理全局数据块的访问。还用于在不同实例的缓冲区之间传递BLOCK的映射。

Global Enqueue Service Monitor(LMON):监视全局队列和集群间的资源交互,执行全局队列的恢复操作。

Global Enqueue Service Daemon(LMD):管理全局队列和全局资源访问。对于每个实例,LMD管理来自远端的资源请求。

Lock Processes(LCK):管理除Cache Fusion以外的资源请求,比如libraryrow cache的请求。

Diagnosability Daemon(DIAG):在实例中捕获进程失败的诊断数据。

10The Global Cache and Global Enqueue Service

全局缓存服务(GCS)和全局队列服务(GES)是RAC的集成组件,用于协调对共享数据库和数据库内的共享资源的同时访问。 GCSGES(它们都是基本的RAC进程)发挥了关键作用。GCS确保数据的单个系统图像,即使数据被多个实例访问。GCSGES是实时应用集群的集成组件,它们协调对共享数据库的同时访问,还协调对数据库和数据库缓存内共享资源的同时访问。GESGCS共同维护全局资源目录(Global Resource DirectoryGRD)来记录有关资源和队列的信息。GRD保存在内存中,存储在所有实例上。每个实例都管理部分目录。分布式特性是RAC容错的关键点。协调共享缓存服务器内的并发任务称为同步。同步使用私有互连和大量消息传输。下面这些类型的资源需要同步:数据块和队列。GCS整体维护数据块模式,并负责实例间的数据块传输。LMS进程处理GCS消息,并完成大多数GCS处理。队列是一种共享内存结构,它串行化对数据库资源的访问。它可以是局部的,也可以是全局的。Oracle3种模型中使用队列:①空(N)模式;②共享(S)模式;③独占(X)模式。数据块是读写入和读写出缓冲器的基本结构。它通常是最经常被请求的资源。GES维护或处理字典缓存、库缓存、事务锁定和DDL锁定的同步。换句话说,GES管理队列而不是数据块。为了同步访问数据字典缓存,需要在独占模式和单节点集群数据库中使用闩锁。在集群数据库缓存中使用全局队列。

GCSGES包括以下特性:

应用透明性;

分布式结构的全局资源目录:只要还存在一个节点,即使出现一个或多个节点失败,GCSGES仍然可以保证全局资源目录的完整性;

资源控制:GCSGES会选择一个实例来管理所有的资源信息,这个实例叫做resource masterGCSGES会根据数据访问方式阶段性的评估和修改resource master。这种方式会减少网络流量和资源获取时间;

GCSGESCM之间的交互:GCSGES独立于CM。但同时GCSGES依赖于CM提供的各个节点上实例的状态信息。一旦无法取得某个实例的信息,则Oracle会马上关闭没有响应的实例,来保证整个RAC的完整性。

11、缓存熔合和资源协调:

因为实时应用集群中的每个节点都有自己的内存(缓存)(不与其他节点共享),所以RAC必须协调不同节点的缓存,同时减少可能降低性能的其他磁盘I/O。缓存熔合这种技术使用高速互连来提供集群中实例之间从缓存到缓存的数据块传输。缓存熔合功能允许脏数据块的直接内存写,从而不需要强迫磁盘写和重读(ping)提交的数据块。然而,这不是说不会发生磁盘写。缓存取代和出现检查点时仍然需要磁盘写。缓存熔合解决了涉及实例间并发性的问题:多个节点上的并发读操作、不同节点上的并发读写、不同节点上的并发写操作。

如果数据块不一定总是在实例的缓存中,那么Oracle只从磁盘读取它们。因为推迟了数据块的写,所以它们通常包含来自多个事务的修改。只有当出现检查点时,修改过的数据块才会被写到磁盘。进一步讨论之前,我们需要熟悉Oracle 9i RAC中引入的一些概念:资源模式和资源角色。因此相同数据块可以同时存在于多个实例中,所以有两个标识符可以帮助协调这些数据块:

资源模式。模式有空模式、共享模式和独占模式。数据块可以用不同模式保存,取决于资源占有者是要修改数据还是只读它们。

资源角色。这些角色可以局部管理和全局管理。

全局资源目录(GRD)不是数据库。它是内部结构的集合,用来查找数据块的当前状态。当数据块传输出本地缓存之外,并传输到另一个实例的缓存中,就更新了GRD。在GRD中可用下面有关资源的信息:

数据块标识符(Data Block IdentifierDBA)

大多数当前版本的位置

数据块的模式(NSX)

数据块的角色(局部或全局)

下表中带(r)的进程表示需要以root用户运行

1ClusterWare相关进程列表

Clusterware组件

Linux/unix进程

Windows服务

Windows进程

Process Monitor Daemon

oprocd(r)

OraFenceService

RACG

racgmain

racgimon

racgmain.exe

racgimon.exe

Oracle Nonification Service(ONS)

ons

Event Manager

evmd(r)

evmd.bin

evmlogger

OracleEVMService

evmlogger.exe

evmd.exe

Cluster Ready

crsd.bin(r)

OracleCRSService

crsd.exe

Cluster Synchronization Services

init.cssd(r)

ocssd(r)

ocssd.bin

OracleCSService

ocssd.exe


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)

原创粉丝点击