Background Processes
🧠 Introduction
Oracle Database doesn’t run on magic — it runs on background processes!
These are small helper programs that quietly keep your database alive, healthy, and optimized — doing everything from writing data to disk, to cleaning up after failed sessions.
They are automatically started when the instance starts, and vary depending on the features your database uses.
🧩 Why Are Background Processes Important?
Think of your Oracle instance like a restaurant:
- The database is the kitchen
- The SGA is the prep table
- The background processes are the chefs, cleaners, and waiters making it all run smoothly behind the scenes
No background processes = no functioning database.
🧠 Types of Background Processes
🔴 1. Mandatory Background Processes (Always Running)
These are core processes — always present in standard configurations (except read-only databases, where some may be inactive):
- PMON (Process Monitor):
Cleans up after failed user processes, releases memory, and re-registers services with the listener. - PMAN (Process Manager):
Manages shared server processes when using shared server architecture. - LREG (Listener Registration):
Registers the database instance with the Oracle Net Listener. - SMON (System Monitor):
Performs instance recovery after crashes and cleans up temporary segments. - DBWn (Database Writer):
Writes dirty buffers from memory (SGA) to disk. Can spawn multiple writers (e.g., DBW0, DBW1…). - CKPT (Checkpoint):
Updates datafile headers and control files with checkpoint info (ensuring recoverability). - LGWR (Log Writer):
Writes redo log entries from memory to online redo log files. Critical for recovery. - MMON (Manageability Monitor):
Gathers AWR (Automatic Workload Repository) stats for performance tuning. - MMNL (Manageability Monitor Lite):
Assists MMON by writing AWR snapshots to disk. - RECO (Recoverer):
Resolves distributed transactions that fail in multi-database setups.
🟡 2. Optional Background Processes (Feature-Specific)
These start only if the corresponding feature is enabled:
- ARCn (Archiver):
Copies redo logs to archive storage when the database is in ARCHIVELOG mode. - CJQ0 (Job Queue Coordinator):
Manages scheduled jobs (DBMS_SCHEDULER or older job queues). - RVWR (Recovery Writer):
Writes Flashback Database logs to enable database rewind. - FBDA (Flashback Data Archive):
Tracks historical data changes for Flashback Query (Oracle Total Recall). - SMCO (Space Management Coordinator):
Automates space management, including segment shrinking and cleanup.
🟢 3. Worker Processes (Task Executors)
These are helper processes launched to serve others:
- Dnnn (Dispatcher):
Accepts client connection requests in shared server mode. - Snnn (Shared Server):
Handles actual client requests (SQL execution, fetch, etc.) in shared server setups.
🧪 Fun Fact:
Some Oracle systems may have over 100 background processes, especially when using RAC, Data Guard, In-Memory, or Multitenant features.
To view all running background processes:
✅ Query 1: Show Active Background Processes
COLUMN program FORMAT A20
SELECT program
FROM v$process
WHERE background = 1;
✅ Query 2: Show Background Processes with Session Info
COLUMN pid FORMAT 999
COLUMN program FORMAT A20
COLUMN sid FORMAT 999
COLUMN serial# FORMAT 99999
SELECT p.pid, p.program, s.sid, s.serial#
FROM v$process p
JOIN v$session s ON p.addr = s.paddr
WHERE p.background = 1;
🛠️ DBA Tip of the Day
If your database seems “slow” or “hung,” don’t just guess — check the logs for PMON, LGWR, or SMON activity.
These are often early indicators of resource contention or crashes.
Also, monitoring V$PROCESS
, V$SESSION
, and V$SYSTEM_EVENT
can reveal which background processes are doing the heavy lifting — or getting stuck.