Each background process is designed to perform a specific taks. They work with each other. Many processes also operate on data files.
There are mandatory and optional processes.
| | Mandatory |
Qnnn | advanced queueing processes | |
ARCn | The archiver processes archives redo log files (if ARCHIVELOG is enabeled) | |
CJQ0 | Coordinator-of-job-queues process: dynamically spawns slave processes for job-queues | |
CKPT | The checkpoint process regularly initiates a checkpoint which uses DBWn to write all dirty blocks back to the datafile (thus synchronizing the datrabase). | ✓ |
CLMN | Process clean up | ? |
DBWn | The database writer processes write dirty blocks from the database buffer to datafiles. Number of processes according to init param DB_WRITER_PROCESSES . | ✓ |
Dnnn | The dispatcher process, used in a shared server environment | |
DMnn | Data Pump master process | |
DWnn | Data Pump worker processes | |
Dnnn | dispatcher processes: multiplex server-processes on behalf of users | |
DMON | The main Data Guard Broker monitor process | |
FBDA | The Flashback Data Archive Process | |
Jnnn | Job-queue slave processes | |
LCKnnnn (?) | The inter-instance locking process (?) | |
LGWR | The log-writer process writes the redo log buffer from the SGA to the online redo log file. | ✓ |
LGnn | Log Writer Worker helper processes (aka «Log Writer Slave» ) | |
LMD0 (?) | | |
LNSn | log-write network-server: transmits redo logs in Data Guard environments | |
LMON | The lock manager, found in RAC instances only | |
LREG | The listener registration process | ✓ |
LSP0 | logical standby coordinator process: controls Data Guard log-application | |
MRP | The media-recovery process applies archived redo log to a standby database. | |
MMAN | The memory-manager process is used for internal database tasks such as Automatic Shared Memory Management (ASMM) | |
MMON | The Manageability-monitor process for automatic problem-detection, self-tuning and statistics-gathering | ✓ |
MMNL | The Manageability-monitor light process: gathers and stores Automatic Workload Repository (AWR) data | ✓ |
? | mmon slaves (Mnnnn —M0000 , M0001 etc.): background slaves of the MMON process | |
NSVn | netslave processes: Data Guard Broker inter-database communication processes | |
Pnnn | parallel query execution servers | |
PMAN | Process Manager | ✓ |
PMON | The process-monitor process frees up resources of failed user processes. Wakes up every 3 seconds. | ✓ |
PSP0 | process-spawner process: spawns Oracle background processes after initial instance startup | |
QMNC | queue-monitor coordinator process: dynamically spawns queue monitor slaves | |
QMNn | queue-monitor processes (AQ Time Manager?) | |
RECO | The recoverer process finds pending distributed transactions and resolves them. | ✓ |
RFS | The remote file-server process runs on a standby database and receives archived redo logs from the primary database. | |
RFS | monitor for Data Guard management: Data Guard Broker Worker process | |
RVWR | The recovery writer process | |
Snnn | The shared server processes is used in a shred server environment to serve client-requests | |
SNPnnn | The snapshot process ? | |
SMCO | The space-management coordinator process coordinates space management | |
SMON | The system monitor process performs instance recovery, cleans up after dirty shutdowns and coalesces adjacent free extents into larger free extents. Wakes up every 5 minutes. | ✓ |
TRWR (?) | Trace file writer (?) | |
TTnn | The Redo Transport Slave Process ships redo from the current online and standby redo logs to the remote standby destinations configured for Asynchronous redo transport | |
VKTM | Virtual Keeper of Time. (Apparently, am others?, used in conjunction with oradebug ffbegin and/or oradebug resumeinst . | |
WMON (?) | The wakeup monitor process (?) | |
Query to determine how long background processes were sleeping
select
b.name,
b.description,
s.state,
s.event,
to_char(s.wait_time_micro / 1000 / 1000, '999,990.000') wait_time,
to_char(s.time_remaining_micro / 1000 / 1000, '999,990.000') time_remaining,
p.pid,
p.spid
from
v$process p join
v$bgprocess b on p.addr = b.paddr join
v$session s on p.addr = s.paddr
order by
s.wait_time_micro nulls first;