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.
-------------------------------
By default, every Oracle transaction generates redo (roll forward) and undo (roll back) information, as well as the actual data change and the possible index changes. The undo information is stored in an undo segment, and the map of each undo segment is stored in its transaction table. Each undo segment's transaction table can hold multiple transaction entries. From a relational database way of thinking, each entry corresponds to a row in the transaction table. Having the word table as part of its name is unfortunate, because the transaction table is not a relational database structure. In fact, the Oracle kernel developers refer to the transaction table entries as slots.
Because the transaction table is stored in an Oracle block, there is a limit to the number of slots it can hold, which depends on the Oracle block size. If the transaction table becomes full and a new entry must be added, the oldest inactive8 transaction entry is overwritten by the new entry. If the transaction is active and there is no more room in the transaction table or multiple sessions need to change the transaction table, a buffer busy waits event is posted. I provide a lot more information about the transaction table and undo entries in the "TX Enqueue Waits" section later in this chapter.
If the database is not using automatic undo management (AUM), and is therefore using traditional rollback segments, the solution is simple. Just create an additional rollback segment, which will also create an additional transaction table, thereby distributing transaction table activity. You will notice that the buffer busy wait contention subsides. Keep adding additional rollback segments until buffer busy waits is far from the top wait event.
©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.
|