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.
-------------------------------
* Decrease write batch size threshold. This will force the database writer to flush the write list more often, increasing the likelihood of there being a free buffer at the LRU end of the LRU chain. To decrease the write batch size, decrease the instance parameter _db_large_dirty_queue. A server process cannot move a dirty buffer to the write list if the database writer is busy writing the list's buffers to disk. If a server process, while looking for a free buffer, tries to move an unpopular dirty buffer to the being-written dirty list, it will wait, posting a free buffer waits event. If the write batch size has been increased to combat db file parallel write issues, it may have been increased too much. This is unusual, but can occur.
* Find and tune physical IO SQL. Without a block read from disk, there would be little cause for a free buffer waits event. Find the top physical IO SQL. Usually there are only a few large SQL statements consuming physical IO that clearly stand out. Tune or reduce their execution rates with the objective of reducing the amount of physical IO generated.
* Find and reduce DML SQL impact. Since a free buffer waits event is related to too many dirty buffers in the LRU chain, there must be DML SQL. Depending on your performance tools, DML SQL can be difficult to find because it may be a high physical IO, logical IO, execution rate, or CPU consumer. It could be a sneaky combination of many statistics. If I cannot view the type of SQL (v$sql.c_type), then I look at both the top physical IO and logical IO SQL, and then check the statement itself. There is a good chance the DML SQL is also the top physical IO SQL statement as well (I see this a lot). If so, you've hit the jackpot and know you have found the key SQL statement. For more details about identifying DML SQL, refer to Chapter 8 section Application-Focused Solutions for Log File Parallel Write Contention. The objective is to reduce the impact, so that can mean tuning and also workload balancing, which will reduce the execution rate during peak times.
©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.
|