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.

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

Oracle processes ask for a specific amount of memory, which is transformed into multiple chunk-specific size requests. The heap manager searches for a single size chunk of memory that matches each request. Multiple chunks of memory, think noncontiguous, will not do. If the process requests 4KB of memory, the heap manager must return an address for a 4KB chunk of shared pool memory.

In Oracle9i, the Oracle process acquires a subpool latch and will search the subpool up to five times before giving up. Allowing for multiple passes increases the likelihood of finding memory, as the memory situation can change dramatically and quickly. However, after five searches, while holding the respective shared pool latch, if the appropriate memory chunk size cannot be found, Oracle gives up, posts the feared 4031, "out of memory" message, and the session stops processing. As every Oracle DBA knows, this is totally unacceptable behavior in a production system.

In Oracle Database 10g, the Oracle process is more fervent in its memory quest. If after searching five times in the current shared pool the memory is not found, the process moves on to another subpool. This will continue until all the defined subpools have been searched. If, at this point, the memory cannot be found, as before, Oracle gives up, posts the 4031 error message, and stops processing. What Oracle has done in this version is reduce the chances of returning the error message in exchange for the possibility of consuming more CPU and holding a shared pool latch longer. From a database operational perspective, slower performance is better than no performance. At least work can be performed while we resolve the performance problem.

©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!