Oracle refers to a transaction log as a redo log. When a transaction is in progress, changes in data items are recorded in memory in a redo log buffer. When any transaction commits, the redo log buffer (which contains changes that all transactions have made) is written to a redo log file. Curiously, the commit does not force anything to be written to the actual database files. Occasionally, a background process called Database-Writer will write modified buffers out to database files.
Suppose the system crashes. How could the redo log file be used to undo a transaction that was only partially completed and had not committed?
Suppose the system crashes. How could the redo log file be used to ensure committed transactions are actually written to the database files?