Recoverable databases don't happen by accident. They start with an RDBMS architecture that places a high degree of emphasis on recoverability. The goal of the Oracle RDBMS is to have a database that is completely recoverable—right up until the last committed transaction. A significant portion of the Oracle architecture exists specifically for the purpose of recoverability. We've mentioned a little already about Oracle's change-based redo architecture. Let's review this in more detail.
As changes accrue in the database, they are written to the redo log buffer. Then, periodically, the log buffer is written out to the redo logfiles. In Chapter 4, Examining the Oracle Architecture, we illustrated this. One of the three triggers for the log buffer to be flushed to the redo logs is when a COMMIT occurs. Thus every transaction has a "guaranteed write" to the redo logs. This is the cornerstone of why Oracle is recoverable until the last transaction. Generally...