rac进程介绍

来源:这里教程网 时间:2026-03-03 19:45:19 作者:

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 的所有实例上都是同步的,或者是全局成功提交,或者由于一些问题而导致全局回滚。

相关推荐