Oracle Memory Structure

Let’s discuss the processes running in Oracle database and their functions.

DBW`: Database Writer, this process writes the data from buffer cache to the DB file and this operation of reading and writing is done in blocks. The default block size in Oracle is 8192 bytes, however it can be modified as required. Starting from Oracle 9i onwards, we can have multiple block sizes. The block size can be checked as follows:

SQL> show parameter db_block_size;

NAME                                 TYPE        VALUE
———————————— ———– ——
db_block_size                        integer     8192

Coming back to the function of DBW, it writes the data to the DB file in regular intervals which means when the buffer cache reaches a certain limit, the DBW process writes the data to the DB files before it is flushed out from the cache. It is worth mentioning here that the cache stores the recent data requested by the server process for example, you run one SQL query, the data will be stored in the buffer and if you run the same query again, Oracle will check the data from buffer cache first and return the value quickly.

The ‘ at the DBW process indicates that there can be several write processes like DBW1, DBW2 and so on.

CKPT: Check Point Process, Check point can occur in any of the following situations:

i) When DBW flushes the buffer cache out to the disk.

ii) When Redo Logs switch occurs.

iii) As per the definition in the initialization parameters of the database.

CKPT process updates the DB file header so that everything in the DB is synchronized with the buffer.

LGWR: Log writer, it writes the Redo Logs.

ARC`: The Archive Process, this process archives the logs before the redo buffer is flushed. The redo logs are used for the recovery of the database.

SMON: System Monitor Process, this process is used for an instance recovery in case of abnormal database shutdown.

In the Linux/Unix environment, you can issue the command of ps –ef to check the running processes. Lets check it as follows:


SUNOS% ps -ef| grep oracle
    root  1934   906  0   Sep 30 ?        0:47 /opt/SUNWscor/oracle_server/bin/oracle_server_monitor64_v9 -R oracle_server -G
  oracle 28076     1  0   Oct 18 ?        0:00 oracleoracle9 (LOCAL=NO)
    root  1743   906  0   Sep 30 ?       33:47 /usr/bin/ksh /opt/SUNWscor/oracle_listener/bin/oracle_listener_monitor -R oracl
  oracle  1820     1  0   Sep 30 ?        7:06 ora_dbw0_oracle9
  oracle  5144     1  0   Oct 18 ?        0:00 oracleoracle9 (LOCAL=NO)
  oracle  1668     1  0   Sep 30 ?       192:49 /opt/oracle/oracle9/bin/tnslsnr LISTENER -inherit
  oracle 28011     1  0   Oct 18 ?        0:00 oracleoracle9 (LOCAL=NO)
  oracle  1822     1  0   Sep 30 ?       15:50 ora_lgwr_oracle9
  oracle  1818     1  0   Sep 30 ?        0:39 ora_pmon_oracle9
  oracle  1935  1934  0   Sep 30 ?       13:56 /opt/SUNWscor/oracle_server/bin/oracle_server_monitor64_v9 -R oracle_server -G
  oracle  1824     1  0   Sep 30 ?       49:52 ora_ckpt_oracle9
  oracle  1826     1  0   Sep 30 ?       33723:08 ora_smon_oracle9
  oracle  1828     1  0   Sep 30 ?        0:00 ora_reco_oracle9
  oracle  1830     1  0   Sep 30 ?        0:37 ora_cjq0_oracle9
  oracle  1832     1  0   Sep 30 ?        0:53 ora_qmn0_oracle9
  oracle  1834     1  0   Sep 30 ?        0:00 ora_s000_oracle9
  oracle  1836     1  0   Sep 30 ?        0:00 ora_d000_oracle9
  oracle 27961     1  0   Oct 18 ?        0:00 oracleoracle9 (LOCAL=NO)


The highlighted processes are the ones which were discussed in this article.

Adnan Khurshid

Adnan Khurshid, the author of this article, has been working in a telecommunication sector since 2007. He has worked there as a VAS (Value Added Services) engineer and has excelled remarkably in the field. Working in this field has been his passion and he has always made efforts to keep himself up to date. Find more about him on LinkedIn

More Posts

Tags: , , , , , ,

1 Comment on Basics of Oracle System Processes

  1. […] SMON_SCN_TIME. This table is filled by SMON every 5 minutes with a time stamp and current SCN. I previously discussed the processes involved in Oracle including SMON. Now, I want to query this table but want to check it with different limits of the TIME_DP column. […]

Leave a Reply