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.

ADVERTISEMENT