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
SQL>
SQL>
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)
[cut]
The highlighted processes are the ones which were discussed in this article.
[…] 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. […]