You were brought to this page based on an internet search
and as a free service to Oracle DBAs.
The text below is an except from the book,
Oracle Performance Firefighting, written by
Craig Shallahamer of
OraPub, Inc.
Figures and tables are not included on this page, only their reference.
To order the book in either print or PDF form, click
here.
©2009, 2010 by Craig Shallahamer. This is copyrighted material.
PleaseOut of respect for those involved in the creation of the book and also for
their familes, we ask you to respect the copyright both in intent and deed. Thank you.
-------------------------------
Figure 6-1 is just one way to model an Oracle data block. Oracle buffers are indeed cached in Oracle's buffer cache. While I will delve deeper into data blocks later in this chapter, my point here is that a buffer simply represents the block on disk. But if a block is accessed, a difference between the buffered block and the on-disk block can occur.
While there are many buffer states, as indicated by the state column in v$bh, they can be practically summarized into three modes: free, dirty, and pinned. The algorithms I'll present in this chapter are closely associated with a buffer's state.
A buffer is free when it matches the block on disk. I commonly refer to a free buffer as a mirrored buffer, because it mirrors what is on disk. Figure 6-2 shows just how simple it is to determine the number of free buffers in the buffer cache. A free buffer may indeed be empty (for example, after an instance restart), but it will most likely contain real block information, such as rows. A free buffer can be replaced without any corruption because there is a copy on disk. Of course, if a transaction commits, then at a minimum, the buffer change must be recorded in an online redo log.
©2009, 2010 by Craig Shallahamer. This is copyrighted material.
PleaseOut of respect for those involved in the creation of the book and also for
their familes, we ask you to respect the copyright both in intent and deed. Thank you.
|