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.

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

The first block of the table's first extent is known as the segment header block. As with all segment header blocks, they contain very special internal Oracle structures directly related to their type of segment. For table segments, part of the header block contents is information about the location of blocks that can accept additional inserted rows. These blocks are known as free blocks. When a process must insert a row into a table, it first retrieves the table's segment header block to find a free block, it retrieves that buffer, and then it inserts the row. If there are many processes concurrently inserting rows into the same table, a table segment head block induced buffer busy waits event can result.

Figure 6-30. A diagram of the order table segment head block (4,50), which contains free lists with links to free blocks

Fortunately, the solutions are very straightforward and they work very well. If you are using manual segment space management, then segment space management is controlled by what are called free lists. As shown in Figure 6-30, I picture a free list as a jellyfish-like structure, with each of the stinging strings a list containing nodes, which point to free blocks. Oracle's free list approach usually works fine, but in high-concurrency situations, the existing free lists simply cannot handle the workload. Fortunately, we can easily alter the table to create additional free lists in another one of the segment's blocks. The result is a header block popularity reduction, and hence a reduction in buffer busy wait contention. Simply keep adding free lists until the contention subsides. The number of free lists can be found in the free lists column in the dba_segments view. If the column is empty, then we know free lists are not being used and automatic segment space management (ASSM) is being used.

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