ITPub博客

首页 > 数据库 > Oracle > rac进程介绍

rac进程介绍

原创 Oracle 作者:a960549548 时间:2024-03-20 08:52:04 0 删除 编辑

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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70013625/viewspace-3009491/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: olr的备份与管理
请登录后发表评论 登录
全部评论
Oracle ACE,MySQL 8.0 OCP,PMP,拥有OceanBase OBCP,TiDB PCTP,GoldenDB GDCP等多项认证,ITPUB认证专家,微信公众号:DBA之友。

注册时间:2022-02-08

  • 博文量
    132
  • 访问量
    171518