Sunday, April 2, 2017

Global Resource Background Process


Global Cache Service (GCS) and Global Enqueue Service (GES) are the two important services in RAC Database. These services are basically collection of background processes.  These two processes together cover and manage the total Cache Fusion process, resource transfers, and resource escalations among the instances.

These play the key role in implementing Cache Fusion. GCS ensures a single system image of the data even though the data is accessed by multiple instances. The GCS and GES are integrated components of Real Application Clusters that coordinate simultaneous access to the shared database and to shared resources within the database and database cache. GES and GCS together maintain a Global Resource Directory (GRD) to record information about resources and enqueues. GRD remains in memory and is stored on all the instances. Each instance manages a portion of the directory. This distributed nature is a key point for fault tolerance of the RAC. The following resources information is available in GRD.

  • Data Block Identifiers (DBA)
  • Location of most current version 
  • Modes of the data blocks: (N)Null, (S)Shared, (X)Exclusive
  • The Roles of the data blocks (local or global) held by each instance
  • Buffer caches on multiple nodes in the cluster

The coordination of concurrent tasks within a shared cache server is called synchronization. Synchronization uses the private interconnect and heavy message transfers. The following types of resources require synchronization: data blocks and enqueues. GCS maintains the modes for blocks in the global role and is responsible for block transfers between instances. LMS processes handle the GCS messages and do the bulk of the GCS processing.

An enqueue is a shared memory structure that serializes access to database resources. It can be local or global. Oracle uses enqueues in three modes: null (N) mode, share (S) mode, and exclusive (X) mode. Blocks are the primary structures for reading and writing into and out of buffers. An enqueue is often the most requested resource.

GES maintains or handles the synchronization of the dictionary cache, library cache, transaction locks, and DDL locks. In other words, GES manages enqueues other than data blocks. To synchronize access to the data dictionary cache, latches are used in exclusive (X) mode and in single-node cluster databases. Global enqueues are used in cluster database mode.

Global Resource Directory (GRD) is the internal database that records and stores the current status of the data blocks. Whenever a block is transferred out of a local cache to another instance's cache the GRD is updated. The following resources information is available in GRD.

Atomic Control File to Memory Service (ACMS):
In a RAC environment, the ACMS per-instance process is an agent that contributes to ensuring that a distributed SGA memory update is either globally committed on success or globally aborted if a failure occurs.

Global Enqueue Service Monitor (LMON):
The LMON process monitors global enqueues and resources across the cluster and performs global enqueue recovery operations.

Global Enqueue Service Daemon (LMD): 
The LMD process manages incoming remote resource requests within each instance.

Global Cache Service Process (LMS): 
The LMS process maintains records of the data file statuses and each cached block by recording information in the GRD. The LMS process also controls the flow of messages to remote instances and manages global data block access and transmits block images between the buffer caches of different instances. This processing is part of the cache fusion feature.

Instance Enqueue Process (LCK0): 
The LCK0 process manages noncache fusion resource requests such as library and row cache requests.

Global Cache/Enqueue Service Heartbeat Monitor (LMHB):
LMHB monitors LMON, LMD, and LMSn processes to ensure that they are running normally without blocking or spinning.

Result Cache Background Process (RCBG): 
This process is used for handling invalidation and other messages generated by server processes attached to other instances in Oracle RAC.

No comments: