I will explain Oracle Database Writer ( DBWR ) Background Process in this post.
Database Writer ( DBW ) Background Process in Oracle
DBWn (Database Writer): The DBW process is a process that move the data between Datafiles and Database Buffer Cache. When a transaction starts, if the related blocks are not in the buffer cache, DBW move these blocks from the datafiles to the Buffer cache. In the same way, it writes the dirty blocks that should be written to the Datafiles from the Buffer cache.
bash-4.1$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Fri Oct 4 13:39:44 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> show parameter db_writer_process NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_writer_processes integer 12 SQL>
DBWR ( Database Writer ) Process in Oracle
These processes work when the following events occur, and the changing blocks in Buffer Cache are written to the datafiles.
- When the memory space in the database buffer cache is full, these blocks are written to the datafiles starting from the oldest blocks in this memory area.
- There are no free buffers
- Timeout occurs
- RAC Ping request is made
- If the Checkpoint process is triggered.
- When a tablespace is set to read-only mode.
- When a tablespace is taken offline.
- Tablespace begin backup mode
- When any table is dropped or truncated.
The following code can be used to manually write the data in the buffer cache to the datafiles.
SQL> Alter system checkpoint;
You can list the Database Writer process on the Operating system as follows.
[MSDB1]/home/oracle $ ps -ef | grep dbw oracle 39020 170228 0 15:16 pts/3 00:00:00 grep --color=auto dbw grid 104632 1 0 Apr21 ? 00:16:56 asm_dbw0_+ASM1 oracle 184957 1 0 Jun21 ? 01:16:01 ora_dbw0_MSDB1 oracle 184959 1 0 Jun21 ? 00:36:53 ora_dbw1_MSDB1 oracle 184961 1 0 Jun21 ? 01:07:19 ora_dbw2_MSDB1 oracle 184963 1 0 Jun21 ? 00:36:33 ora_dbw3_MSDB1 oracle 184965 1 0 Jun21 ? 01:07:18 ora_dbw4_MSDB1 oracle 184967 1 0 Jun21 ? 00:35:52 ora_dbw5_MSDB1 oracle 184969 1 0 Jun21 ? 01:06:03 ora_dbw6_MSDB1 oracle 184978 1 0 Jun21 ? 00:35:23 ora_dbw7_MSDB1 oracle 184983 1 0 Jun21 ? 01:05:13 ora_dbw8_MSDB1 oracle 184988 1 0 Jun21 ? 00:34:47 ora_dbw9_MSDB1 oracle 184998 1 0 Jun21 ? 01:05:45 ora_dbwa_MSDB1 oracle 185003 1 0 Jun21 ? 00:34:56 ora_dbwb_MSDB1 [MSDB1]/home/oracle $
You should read the following post to learn more details about Oracle Database Architecture.
Oracle Database Architecture -3 SMON, PMON, DBWR,CKPT and LGWR Processes
Do you want to learn Oracle Database for Beginners, then read the following articles.
Oracle Tutorial | Oracle Database Tutorials for Beginners ( Junior Oracle DBA )