Oracle 11g - Rman Backup Committed Undo ? Why?
We already know what undo data is used
for. When a transaction changes a block, the past image of the block
is kept it the undo segments. The data is kept there even if the
transaction is committed because some long running query that started
before the block is changed can ask for the block that was changed and
committed. This query should get the past image of the block—the
pre-commit image, not the current one. Therefore undo data is kept undo
segments even after the commit. The data is flushed out of the undo
segment in course of time, to make room for the newly inserted undo
data.
When the RMAN backup runs, it
backs up all the data from the undo tablespace. But during recovery, the
undo data related to committed transactions are no longer needed, since
they are already in the redo log streams, or even in the datafiles
(provided the dirty blocks have been cleaned out from buffer and written
to the disk) and can be recovered from there. So, why bother backing up
the committed undo data?
In Oracle Database 11g, RMAN
does the smart thing: it bypasses backing up the committed undo data
that is not required in recovery. The uncommitted undo data that is
important for recovery is backed up as usual. This reduces the size and
time of the backup (and the recovery as well). In many databases,
especially OLTP ones where the transaction are committed more frequently
and the undo data stays longer in the undo segments, most of the undo
data is actually committed. Thus RMAN has to backup only a few blocks
from the undo tablespaces.
The best part is that we needn’t do anything to achieve this optimization; Oracle does it by itself.
No comments:
Post a Comment