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.

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

Developers tend to look at database changes from the table or row perspective. DBAs tend to look at changes from an Oracle block or buffer perspective. But Oracle kernel developers are not constrained by object, relational, or normalization concepts and their implementations. To an Oracle kernel developer, a database change is represented as one or more bytes. Oracle does not record the changed table, row, extent, or block. It simply records just enough information to, should it be necessary, redo the change. A kernel developer once told me, "Craig, you have got to stop thinking relational. Think bytes."

One of most surprising revelations when learning about Oracle internals is that, because all current buffer changes must be recorded, when an undo segment buffer changes, its change must also generate redo and therefore be recorded!

Keep in mind that redo is used for recovery. If we didn't need to recover, then redo would be a complete waste of resources. So, why would we ever need to recover undo segments? When you first learn about Oracle recovery, you come to understand there are two core phases to the recovery process: first, the system is rolled forward, and second, the system is rolled back. The other key nugget of information is that before the database writer will make a change to a block residing on a database (.dbf) file, that change absolutely must have already been written in an online redo log. Oracle must ensure any block change has already been recorded in the redo stream in case recovery is required. If this did not occur, an unfortunate recovery situation could exist where there is no record of a block change.

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