Durante o processo de uma transação podem ser utilizados os savepoints, a fim de possibilitar um rollback de apenas partes da transação. Porém no fim da transação ou ela é confirmada com sucesso através do commit ou retrocedida até o último commit ou savepoint através do rollback. [1]
O roll forward consiste em aplicar seqüencialmente as alterações de blocos (redo records) contidas nos registros do redo log. O Processo lê os redo records existentes no arquivo de redo log e obtém os blocos originais correspondentes às modificações nos datafiles, movendo-os para o database buffer cache. A tabela interna undo$ contém informações sobre as transações pendentes, até que redo records, contendo a informação de commit, sejam encontrados. Neste caso, a informação é retirada da tabela undo$ e das entradas do segmento de rollback. [2]
[1] http://www.devmedia.com.br/post-349-Transacoes-no-Oracle-Commit-Rollback-e-Savepoint.html
[2] http://www.devmedia.com.br/post-349-Transacoes-no-Oracle-Commit-Rollback-e-Savepoint.html