暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

Oracle RAC进程详解

DBA小记 2020-10-27
3744

CRSD进程

Cluster Ready Service

 Engine for HA operation

 Manages 'application resources'

 Starts, stops, and fails 'application resources' over

 Spawns separate 'actions' to start/stop/check application resources

 Maintains configuration profiles in the OCR (Oracle Configuration Repository 数据库配置文件仓库)

 Stores current known state in the OCR.

 Runs as root

 Is restarted automatically on failure

这是一个很忙碌的进程,管家。


CSSD进程

Cluster Synchronization Service

 OCSSD is part of RAC and Single Instance with ASM

 Provides access to node membership

 Provides group services

 Provides basic cluster locking

 Integrates with existing vendor clusteware, when present

 Can also runs without integration to vendor clustware

 Runs as Oracle.

 Failure exit causes machine reboot. 

 This is a feature to prevent data corruption in event of a split brain.

这是一个很重要的进程,核心。


EVMD进程

Event Manager

 Generates events when things happen

 Spawns a permanent child evmlogger

 Evmlogger, on demand, spawns children

 Scans callout directory and invokes callouts.

 Runs as Oracle.

 Restarted automatically on failure

RAC进程详解

LCK0进程

Instance Enqueue Process(实例队列进程)

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

LCK0进程处理在实例一级的锁:

 Row cache entries

 Library cache entries

 Result cache entries

@In 9.0.1 and below, number of lock processes may be configurable using _gc_lck_procs parameter

 

LMON进程

Global Enqueue Service Monitor(全局队列服务监控)

      LMON进程用于监控整个集群的global enqueuesresources, 而且会执行global enqueue recovery

实例异常终止后,会由LMON进程来进行GCS内存方面的处理。

当一个实例加入或者离开集群后,LMON进程会对lockresource进行reconfiguration.

LMON进程会在不同的实例间进行通讯检查,如果发现对方通讯超时,就会发出节点eviction,当节点发生eviction(ORA-00481, ORA-29740),需要查看LMON进程的trace来了解eviction的原因。


LMSn进程

Global Cache Service Process(全局缓存服务进程)

     LMSn进程维护在Global Resource Directory (GRD)中的数据文件以及每个cached block的状态

LMSn进程用于在RAC的实例间进行message以及数据块的传输(Cache Fusion

每个实例会有多个LMSn进程,每个Oracle版本的默认的LMSn进程数目会有所不同,大部分版本的默认值是:MIN(CPU_COUNT/2, 2)),由参数gcs_server_processes决定

LMSn进程可以说是RAC上最活跃的后台进程,往往会消耗较多的CPU资源(需要较高CPU优先级)

LMSn进程的优先级

如果LMSn进程没有运行在RT模式,则还需要检查oradism配置文件的权限:

LMD0进程

Global Enqueue Service Daemon。(全局队列服务守护进程)

   LMD0 进程主要处理从远程节点发出的资源请求。

 One LMD process per instance

 In 8.1.7 and below number of lock daemons may be configurable using _lm_dlmd_processes parameter

Master:resourcemaster实例,在shared pool 中分配一些空间来存放和这个资源相关的信息

 Holder:资源持有者

 Requestor:资源申请者


LMD0 进程主要处理从远程节点发出的资源请求大概过程如下:

1)一个连接发出了global enqueue 请求

2)这个请求会被发给本节点的LMD0进程,前台进程会处于等待状态

3)本节点的LMD0会找到这个资源的master节点是谁,并把这个请求发送给master节点。如果需要的话,master节点会增加一个新的master资源,这时从master节点可以获知谁是owner, waiter

4)当这个资源被grantrequestor, master节点的LMD0进程会告知requestor节点的LMD0进程

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

1)实例3Requstor)需要以X(exclusive)方式访问buffer1, 向实例(1)(Master) 发出了请求。

2)实例发现实例2Holder)以X方式持有buffer1,之后通知实例2释放X lock,并把buffer1发送给实例3

3)实例2释放X lock,并把最新版本的buffer1发送给实例3

4)实例3获得buffer1, 并通知master 实例更新资源buffer1的最新状态。


DRM 进程

Dynamic Resource Mastering(动态资源掌握)

根据一段时间内(默认10分钟),每个实例根据某一个数据库对象的 (10gR1以数据文件为单位)的访问次数和方式,来决定数据库对象对应的buffer应该被mastering 到哪一个实例。

 在指定时间内,如果某一个实例访问某个数据库对象的次数高于其他实例一定倍数(默认50倍,由_gc_affinity_limit参数控制),则oracle 会把这个对象所有的buffermaster信息,转移到对应实例(注意:不是转移buffer

 使用HASH的方式来决定每个BLOCKMASTER是哪个节点,默认情况下HASHBUCKET128(由参数_lm_contiguous_res_count 控制),也就是说ORACLE按照连续128BLOCK在一个节点,然后接下来的128BLOCK在另外一个节点这样的机制来进行平均分配块的 MASTER

 在DRM中,LMD进程会监控需要进行remasterqueue,然后把任务发送给LMON进程,LMON进程来实施remaster

DRM发生时的相关日志:

10.2.0.2版本之前,DRM特性不是很稳定,有较多bugOracle也不推荐使用(但这又是缺省在使用的功能)严重的会导致系统hang住。可以通过下面两个隐含参数来禁止DRM的发生:
_gc_undo_affinity=FALSE
_gc_affinity_time=0

DRM出现问题时,则检查LMD0,LMSn,LMON进程的相关日志

注意:DRM必须在所有实例中同时关闭,否则启动数据库时会出现以下错误:

ORA-01105: mount is incompatible with mounts by other instances
ORA-01606: gc_files_to_locks not identical to that of another mounted instance

DRM的相关视图:

 GV$GCSPFMASTER_INFO

 X$KJDRMREQ:Dynamic Remastering Requests

 X$KJDRMAFNSTATS:File Remastering Statistics

 X$KJDRMHVSTATS:Hash Value Statistics

 Diagnosability for Oracle Clusterware (CRS or Grid Infrastructure) Component and Resource

(文档 ID 357808.1)

  CRS and 10g/11.1 Real Application Clusters (文档 ID 259301.1)

  DRM - Dynamic Resource management (文档 ID 390483.1)

  Script to Collect DRM Information (drmdiag.sql) (文档 ID 1492990.1)


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。当使用ASMCMF的cp命令时,需要用到ASM实例上的ASMB进程,数据库实例的spfile如果位于存在ASM上,那么也会用到ASMB进程。如果OCR存放在ASM中,也会用到ASMB。


REBL进程

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、和LMSn等进程是否正常,是否被阻塞或者已经HANG了


RMSn进程

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


文章转载自DBA小记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论