Oracle Performance Firefighting
by Craig Shallahamer

Get the book here



Craig Shallahamer's Blog

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.
Please—Out 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.

-------------------------------

A quick operating system analysis clearly shows a raging CPU bottleneck. As expected, the CPU subsystem is 90% busy on average, with a run queue nearly always greater than the number of CPU cores (which means processes are needing to wait for CPU resources). While the IO subsystem is doing some real work, there are no volumes busier than 60%, and their response times are well under the rule of thumb of 10 ms. There is no memory swapping. As in many cases, the network has been deemed out of scope. A solution focused on the operating system is to acquire more CPU cycles for Oracle processes. There are many ways to go about doing this, such as by identifying processes that do not need to be or should not be running during peak times.

For the application analysis, referencing a top SQL report, you look for SQL consuming the most buffers (buffer gets, or what I call logical IO). You quickly identify three statements that are consuming around 90% of all the logical IO. As expected, the top two statements are part of the order-entry application. An application-focused solution is to tune the SQL with the objective of reducing logical IO. It's fine to also reduce the physical IO, but the Oracle response-time analysis and the operating system analysis clearly support first and foremost focusing on logical IO-that is, buffer gets.

In summary, the database server is clearly suffering from intense Oracle buffer cache management. This is supported by a CPU bottleneck, a very high level of easily identifiable logical IO SQL statements, and Oracle processes waiting to get a latch related to buffer cache management. Fortunately, there are a number of solutions that should resolve the problem, from an Oracle, an application, and an operating system perspective.

©2009, 2010 by Craig Shallahamer. This is copyrighted material.
Please—Out 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.


Know what's important before it's too late!

OraPub's
Performance Training

is like no other...





More Class Pics...
Get student testimonials!