The correct answer is C and E (DBWn will be invoked when?)
C: When tablespaces is going to OFFLINE/READ ONLY/BEGIN BACKUP.
https://oracledbwr.com/oracle-database-writer-background-process/
E: explanation
The DBW process writes dirty buffers to disk under the following conditions:
When a server process cannot find a clean reusable buffer after scanning a threshold number of buffers, it signals DBW to write. DBW writes dirty buffers to disk asynchronously if possible while performing other processing.
https://docs.oracle.com/database/121/CNCPT/process.htm#CNCPT1250
CE are correct based upon this Reference https://gerardnico.com/db/oracle/dbwn
--- Not found Easily
--- Table Spaces are taken-offline or read-only
--- CheckPoint is advanced
Remember that this process is done "lazily" and that it doesn't happen when a commit happens (that is done for the log writer process)
D and E:
When a server process cannot find a clean reusable buffer after scanning a threshold number of buffers, it signals DBWn to write. The server process referred here, is managed by PMON: PMON is responsible for cleaning up the database buffer cache and freeing resources that the user process was using. Thus, PMON indirectly signals DBWn to write database buffer to data files.
It is LGWR that write redo log buffer to redo log when commit is done.
https://docs.oracle.com/cd/B19306_01/server.102/b14220/process.htm#sthref1500
The DBWn process writes dirty buffers to disk under the following conditions:
When a server process cannot find a clean reusable buffer after scanning a threshold number of buffers, it signals DBWn to write. DBWn writes dirty buffers to disk asynchronously while performing other processing. => E
DBWn periodically writes buffers to advance the checkpoint, which is the position in the redo thread (log) from which instance recovery begins. This log position is determined by the oldest dirty buffer in the buffer cache. => C
Buffer Writes
The database writer (DBW) process periodically writes cold, dirty buffers to disk.
DBW writes buffers in the following circumstances:
A server process cannot find clean buffers for reading new blocks into the database buffer cache.
As buffers are dirtied, the number of free buffers decreases. If the number drops below an internal threshold, and if clean buffers are required, then server processes signal DBW to write.
The database uses the LRU to determine which dirty buffers to write. When dirty buffers reach the cold end of the LRU, the database moves them off the LRU to a write queue. DBW writes buffers in the queue to disk, using multiblock writes if possible. This mechanism prevents the end of the LRU from becoming clogged with dirty buffers and allows clean buffers to be found for reuse.
The database must advance the checkpoint, which is the position in the redo thread from which instance recovery must begin.
Tablespaces are changed to read-only status or taken offline.
BCE are correct. commit require a checkpoint.
See: https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/memory-architecture.html#GUID-9247D1BA-36E3-4407-ACCE-DF212F81C019
A voting comment increases the vote count for the chosen answer by one.
Upvoting a comment with a selected answer will also increase the vote count towards that answer by one.
So if you see a comment that you already agree with, you can upvote it instead of posting a new comment.
TuxBingo
Highly Voted 4 years, 4 months agoPerkDizzzle
Highly Voted 5 years, 3 months agoRay520
Most Recent 2 years, 7 months agojackymak
2 years, 9 months agobrg850
3 years ago_gio_
3 years, 2 months agodancymonkey
4 years, 4 months agodancymonkey
4 years, 3 months agocweather328
4 years, 9 months agosherifelia
5 years agoVarlos
5 years, 8 months agordnkrkmz
5 years, 10 months ago