Tell me how many background processes help Oracle Instance to run?
SMON
The System Monitor carries out a crash recovery when a crashed instance is started up again. It also cleans temporary segments. SMON checks the SCN in all datafile headers when the database is started. Everything is OK if all of these SCNs matches the SCN found in the controlfile. If the SCNs don't match, the database is in an inconsistent state. SCN Number is the System Change Number provided by Oracle for each committed transaction. When the database in inconsistent state while the database is opened, crash recovery is done. Crash recovery is the recovery of a database in a single-instance configuration or an Oracle Real Application Clusters configuration in which all instances have crashed. In contrast, instance recovery is the recovery of one failed instance by a live instance in an Oracle Real Application Clusters configuration.
SMON_SCN_TIME is the metadata table populated for every five minutes by SMON
If column_tracking_level is set to 1 SMON also updates sys.col_usage$ another metadata table.
PMON
The Process Monitor checks if a user process fails and if so, do all cleaning up of resources that the user process has acquired. In the case of shared server configuration, PMON checks dispatchers and server processes and restarts them if they have failed. It also does another important thing. During service registration, PMON provides the listener with Names of the database services provided by the database. However, if there is no listener at startup, PMON can obviously not register those information. Therefore, PMON tries then periodically to register with the listener, which might take up to 60 seconds. There is a command to force the registration using ‘alter system register..’.
DBWR
The Database Writer writes dirty blocks from the database buffer to the datafiles. is determined by the Initialization parameter Initialization parameter DB_WRITER_PROCESSES determines on how many DBWn Processes are started . DBWR also writes the actual SCN with the Block and flushes datafile blocks.
LGWR
The Log Writer writes the redo log buffer from the SGA to the online redo log file. It wakes up for every three seconds to flush from the redo log buffer to the online redo logs or Whenever the redo log buffer is filled up to _log_io_size defaults to 1/3 of the log buffer size) and LGWR is not currently writing. This parameter is defined in units measured in physical operating system blocks, not DB blocks. The operating system block size is (obviously) OS dependent. It can be retrieved through x$kccle. This is called X$ table owned by SYS. The entire X$ tables are memory structures generated by Oracle when instance is spawned. They die with Instance. This is a separate discussion which we do later at another point of time.
RECO
The Distributed Transaction Recovery Process finds pending (distributed) transaction and resolves them.
CKPT
The Checkpoint Process regularly initiates a checkpoint, which uses DBWR to write all dirty blocks back to the datafiles, thus ensuring a consistent state to 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 ckpt process also updates the datafile headers.
ARCH
The Archiver Process archives redo log files if ARCHIVELOG is enabled. This means you have the capability of Media Recovery in case of failure.
Dnnn
The Dispatcher Process is used in a shared server environment.
Snnn
The Shared Server Process is used in a shared server environment.
LMON
The lock manager.
LMD0
AQ Time Manager
TRWR
Trace writer. The Trace File format is discussed by Metalink in 39817.1
WMON
The wakeup monitor process.
LCKnnn
Inter-instance locking process.
SNPnnn
The snapshot process.
MMON
It makes snapshots of the database health (statistics) and stores this information in the automatic workload repository.
There are at least two new background processes added for an ASM instance
RBAL
This processes coordinates rebalance activity for disk groups
Instance Background Processes Information from Metadata tables:
-- Oracle 8I
select
A.SID,
A.SERIAL#,
A.PROGRAM,
P.PID,
P.SPID,
A.OSUSER, /* Who Started INSTANCE */
A.TERMINAL,
A.MACHINE,
A.LOGON_TIME,
B.NAME,
B.Description
from v$session A, v$process P, v$bgprocess B
where A.PADDR=B.PADDR AND A.PADDR=P.ADDR and A.type='BACKGROUND';
-- Oracle9I+
select A.SID,
A.SERIAL#,
A.PROGRAM,
P.PID,
P.SPID,
A.OSUSER, /* Who Started INSTANCE */
A.TERMINAL,
A.MACHINE,
A.LOGON_TIME,
B.NAME,
B.Description,
P.PGA_USED_MEM,
P.PGA_FREEABLE_MEM,
P.PGA_MAX_MEM
from v$session A, v$process P, v$bgprocess B
where A.PADDR=B.PADDR AND A.PADDR=P.ADDR --and A.type='BACKGROUND' --Alternative (you can use BACKGROUND column from v$process )