Skip to Main Content

Breadcrumb

Question and Answer

Tom Kyte

Thanks for the question, Yogesh.

Asked: April 19, 2007 - 12:04 am UTC

Last updated: April 19, 2007 - 11:32 am UTC

Version: 8.1.7

Viewed 1000+ times

You Asked

Does DBWR write a dirty data block from the data buffer to the data file

(1) every time it is changed
(2) only when the data buffer is full and the block is found as the oldest one

OR there is (are) some other ruile(s) ?

I believe that the answer is (2) - since it helps in significantly reducing the "scatterred writes" and hence improving the performance.

and Tom said...

It is much more complex than that.

it is not "age" in current releases, it is based on "hotness" (is the block popular).

dbwr will flush blocks for many reasons:

o buffer cache full, need space, find unpopular blocks and free them up
o checkpointing
o various DDL statements - such as truncate - cause segment level checkpoints

it would not be "every time" however - no.

Rating

  (1 rating)

Is this answer out of date? If it is, please let us know via a Comment

Comments

DBWR Writing Frequency

Yogesh Purabiya, April 20, 2007 - 12:39 am UTC

Thanks, Tom.

For a long time I wondered why Log-Switch is not frequently blcked by Checkpointing. But, I could see that Scatterred writes are significantly reduced; and hence that is generally (mostly) avoided.