There are server and background processes.
Here's a list of background processes:
The System Monitor carries out a crash recovery
when a crashed insance is started up again. It also
cleans temporary segments.
The Process Monitor checks if a user process fails and if so, does all cleaning up of resources that the user
process has aquired.
The Database Writer writes dirty blocks from the database buffer to the datafiles. How many DBWn Processes
are started is determined by the initialization parameter
DB_WRITER_PROCESSES. DBWR also writes the actual SCN
with the Block.
The Log Writer writes the
redo log buffer from the
SGA to the online redo log file.
The memory manager
Managed recovery process: the process that applies archived redo log to the standby database.
The remote file server process on the standby database receives archived redo logs
from the primary database.
The Distributed Transaction Recovery Process finds pending (distributed) transaction and resolves them.
The Checkpoint Process reqularly initiates a checkpoint which uses DBWR to write all dirty blocks
back to the datafiles, thus synchronizing the database. Since a Checkpoint records the current SCN, in a
recovery only redo records with a SCN higher than that of the last checkpoint need to be applied.
The Archiver Process archives
redo log files if ARCHIVELOG is enabled.
The Dispatcher Process is used in a shared server environment.
The Shared Server Process is used in a shared server environment.
The lock manager.
AQ Time Manager
The wakeup monitor process.
Inter-instance locking process.
The snapshot process.
New background process in Oracle 10g.
The Data Guard Broker process.
The snapshot process.
Background processes have v$session
.type = 'BACKGROUND
Showing the processes
On Unix, the Oracle Processes can be listed with something like
While background processes do the work for Oracle itself, foreground processes do the work for clients (such as SQL statements
Foreground processes are created by the listener
Foreground processes have v$session
.type = 'USER
Coordinating the processes' work
Oracle uses semaphores
to coordinate the work for the processes.