Oracle is a big beast, to say the least. It's composed of a variety of diffrent componants. Each database is run as an instance. A database server can run multiple instances at a time. Each instance is made up of diffrent componants. We can see these as seperate procceses at the system level.
bash-2.05$ ps -ef | grep ora_ oracle 342 1 0 13:35:59 ? 0:00 ora_pmon_BEN oracle 344 1 0 13:35:59 ? 0:00 ora_mman_BEN oracle 346 1 0 13:35:59 ? 0:01 ora_dbw0_BEN oracle 348 1 0 13:36:00 ? 0:01 ora_lgwr_BEN oracle 350 1 0 13:36:00 ? 0:00 ora_ckpt_BEN oracle 352 1 0 13:36:00 ? 0:04 ora_smon_BEN oracle 354 1 0 13:36:00 ? 0:00 ora_reco_BEN oracle 356 1 0 13:36:00 ? 0:02 ora_cjq0_BEN oracle 358 1 0 13:36:00 ? 0:00 ora_d000_BEN oracle 360 1 0 13:36:01 ? 0:00 ora_s000_BEN oracle 514 329 0 15:22:24 pts/2 0:00 grep -i ben oracle 366 1 0 13:36:22 ? 0:00 ora_qmnc_BEN oracle 368 1 0 13:36:28 ? 0:04 ora_mmon_BEN oracle 370 1 0 13:36:28 ? 0:01 ora_mmnl_BEN oracle 372 1 1 13:36:31 ? 0:15 ora_j000_BEN oracle 512 1 0 15:19:33 ? 0:00 ora_q000_BEN
All these procceses make up the instance of the database BEN running on this machine. Lets break it down.
- The process monitor performs process recovery when a user process fails. PMON is responsible for cleaning up the cache and freeing resources that the process was using. PMON also checks on the dispatcher processes (described later in this table) and server processes and restarts them if they have failed.
- Used for internal database tasks.
- The database writer writes modified blocks from the database buffer cache to the datafiles. Oracle Database allows a maximum of 20 database writer processes (DBW0-DBW9 and DBWa-DBWj). The initialization parameter DB_WRITER_PROCESSES specifies the number of DBWn processes. The database selects an appropriate default setting for this initialization parameter (or might adjust a user specified setting) based upon the number of CPUs and the number of processor groups.
- The log writer process writes redo log entries to disk. Redo log entries are generated in the redo log buffer of the system global area (SGA), and LGWR writes the redo log entries sequentially into a redo log file. If the database has a multiplexed redo log, LGWR writes the redo log entries to a group of redo log files.
- At specific times, all modified database buffers in the system global area are written to the datafiles by DBWn. This event is called a checkpoint. The checkpoint process is responsible for signalling DBWn at checkpoints and updating all the datafiles and control files of the database to indicate the most recent checkpoint.
- The system monitor performs recovery when a failed instance starts up again. In a Real Application Clusters database, the SMON process of one instance can perform instance recovery for other instances that have failed. SMON also cleans up temporary segments that are no longer in use and recovers dead transactions skipped during system failure and instance recovery because of file-read or offline errors. These transactions are eventually recovered by SMON when the tablespace or file is brought back online.
- The recoverer process is used to resolve distributed transactions that are pending due to a network or system failure in a distributed database. At timed intervals, the local RECO attempts to connect to remote databases and automatically complete the commit or rollback of the local portion of any pending distributed transactions.
- Job queue processes are used for batch processing. The CJQ0 process dynamically spawns job queue slave processes (J000...J999) to run the jobs.
- Dispatchers are optional background processes, present only when the shared server configuration is used.
- A queue monitor process which monitors the message queues. Used by Oracle Streams Advanced Queuing.
- Performs various manageability-related background tasks.
- Performs frequent and light-weight manageability-related tasks, such as session history capture and metrics computation.
- A job queue slave. (See cjq0)