RAC Database System has two
important services. They are Global Cache Service (GCS) and Global
Enqueue Service (GES). These are basically collections of background
processes. These two processes together cover and manage the
total Cache Fusion process, resource transfers, and resource
escalations among the instances.
Global Resource Directory
GES and GCS together maintain a
Global Resource Directory (GRD) to record the information about the
resources and the enqueues. GRD remains in the 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.
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.
* Data Block Identifiers (DBA)
* Location of most current
* Modes of the data blocks: (N)Null,
* The Roles of the data blocks
(local or global) held by each instance
* Buffer caches on multiple
nodes in the cluster
GRD is akin to the previous
version of Lock Directory in the functionality perspective but has
been expanded with more components. It has accurate measure of
inventory of resources and their status and location.
The Background Processes
This next section is going to
cover the processes. Figure 4.5 shows various background processes
that are spawned to execute the database processing.
Figure 4.5: The Background
The following is a description
of each of the processes:
- System Monitor process recovers after instance failure and
monitors temporary segments and extents. SMON in a non-failed
instance can also perform failed instance recovery for other failed
- Process Monitor process recovers failed process resources. If MTS,
also called Shared Server Architecture, is being utilized, PMON
monitors and restarts any failed dispatcher or server processes. In
RAC, PMON?s role as service registration agent is particularly
- Database Writer or Dirty Buffer Writer process is responsible for
writing dirty buffers from the database block cache to the database
data files. Generally, DBWR only writes blocks back to the data
files on commit, or when the cache is full and space has to be made
for more blocks. The possible multiple DBWR processes in RAC must be
coordinated through the locking and global cache processes to ensure
efficient processing is accomplished.
- Log Writer process is responsible for writing the log buffers out
to the redo logs. In RAC, each RAC instance has its own LGWR process
that maintains that instance?s thread of redo logs.
- (Optional) Archive process writes filled redo logs to the archive
log location(s). In RAC, the various ARCH processes can be utilized
to ensure that copies of the archived redo logs for each instance
are available to the other instances in the RAC setup should they be
needed for recovery.
- Checkpoint process writes checkpoint information to control files
and data file headers.
- (Optional) Parallel Query Slaves are started and stopped as needed
to participate in parallel query operations.
- Job queue controller process wakes up periodically and checks the
job log. If a job is due, it spawns Jnnnn processes to handle jobs.
- (Optional) Job processes used by the Oracle9i job queues to
process internal Oracle9i jobs. The CQJ0 process controls it
- (Optional) Advanced Queuing process is used to control the
advanced queuing jobs.
- (Optional) Pre-spawned shared server processes are used by the
multi-threaded server (MTS) process to handle connection requests
from users, and act as connection pools for user processes. These
user processes also handle disk reads from database datafiles into
the database block buffers.
- (Optional) Dispatcher process for shared server (MTS). It accepts
connection requests and portions them out to the pre-spawned server
- this process performs various manageability-related background
tasks, for example:
* Issuing alerts whenever a
given metric violates its threshold value
* Capturing statistics values
for SQL objects which have been recently modified
- this process performs frequent and light-weight manageability
related tasks, such as session history capture and metrics
- is used for internal database tasks that manage the automatic
shared memory. MMAN serves as the SGA Memory Broker and coordinates
the sizing of the memory components.
? this process coordinates rebalance activity for disk groups in an
Automatic Storage Management instance.
- performs the actual rebalance data extent movements in an
Automatic Storage Management instance. There can be many of these at
a time, called ORB0, ORB1, and so forth.
- is present in a database instance using an Automatic Storage
Management disk group. It communicates with the Automatic Storage
? the database communicates with the mapping libraries provided by
storage vendors through an external non-Oracle Database process that
is spawned by a background process called FMON. FMON is responsible
for managing the mapping information. When the file_mapping
initialization parameter is specified for mapping data files to
physical devices on a storage subsystem, then the FMON process is
Typically, the RAC database has
the same processes as that of a single-instance Oracle database.
However, there are many additional RAC specific processes. Those
processes will be examined in the next section.