Oracle 8i | Oracle 9i | Oracle 10g | Oracle 11g | Oracle 12c | Miscellaneous | PL/SQL | SQL | Oracle RAC | Oracle Apps | Linux

Recovery Manager (RMAN) Enhancements in Oracle Database 10g

Oracle 10g includes many RMAN enhancements making it a more complete tool, including the following.

Related articles.

Flash Recovery Area

The flash recovery area is a location on the filesystem or on an ASM disk group that holds files related to recovery.

Space within the flash recovery area is managed by the database. If there is not enough space to complete an operation obsolete, backed up or redundant files are removed to free up some space.

The following example shows the parameters used to configure the flash recovery area.

ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 2G;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/u01/app/oracle/flash_recovery_area';
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET = 1440;

The flashback technologies are covered in the Flashback New Features and Enhancements in Oracle Database 10g article.

Incrementally Updated Backups

This is discussed in more detail here.

Using this feature, all changes between the SCN of the original image copy and the SCN of the incremental backup are applied to the image copy, winding it forward to make the equivalent of a new database image copy without the overhead of such a backup. The following example shows how this can be used.

RUN {
  RECOVER COPY OF DATABASE WITH TAG 'mydb_incr_backup' UNTIL TIME 'SYSDATE - 7';
  BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'mydb_incr_backup' DATABASE;
}

The RECOVER COPY... line will not do anything until the script has been running for more than 7 days. The BACKUP INCREMENTAL line will perform a complete backup (level 0) the first day it is run, with all subsequent backups being level 1 incremental backups. After 7 days, the RECOVER COPY... line will start to take effect, merging all incremental backups older than 7 days into the level 0 backup, effectively moving the level 0 backup forward. The effect of this is that you will permanently have a 7 day recovery window with a 7 day old level 0 backup and 6 level 1 incremental backups. Notice that the tag must be used to identify which incremental backups apply to which image copies.

The following script uses the same method, but includes the archivelog backups and management of obsolete backups.

RUN {
  RECOVER COPY OF DATABASE WITH TAG 'mydb_incr_backup' UNTIL TIME 'SYSDATE-7';
  BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'mydb_incr_backup' DATABASE;
  BACKUP DEVICE TYPE DISK TAG 'mydb_incr_backup' ARCHIVELOG ALL NOT BACKED UP DELETE ALL INPUT;
  DELETE NOPROMPT OBSOLETE DEVICE TYPE DISK;
}

If you wanted to keep your image copy as up to date as possible you might do the following.

RUN {
  BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'mydb_incr_backup' DATABASE;
  RECOVER COPY OF DATABASE WITH TAG 'mydb_incr_backup';
}

In this example the incremental backup is merged into the image copy as soon as it is completed.

For best performance, this method should be combined with block change tracking, explained below.

Fast Incremental Backups (Block Change Tracking)

There are performance issues associated with incremental backups as the whole of each datafile must be scanned to identify changed blocks. In Oracle 10g it is possible to track changed blocks using a change tracking file. Enabling change tracking does produce a small overhead, but it greatly improves the performance of incremental backups. The current change tracking status can be displayed using the following query.

SELECT status FROM v$block_change_tracking;

Change tracking is enabled using the ALTER DATABASE command.

ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;

By default the change tracking file is created as an Oracle Managed File (OMF) in the location pointed to by the DB_CREATE_FILE_DEST parameter. An alternate location can be specified using the following command.

ALTER DATABASE ENABLE BLOCK CHANGE TRACKING 
  USING FILE '/u01/oradata/MYSID/rman_change_track.f' REUSE;

The tracking file is created with a minumum size of 10M and grows in 10M increments. It's size is typically 1/30,000 the size of the datablocks to be tracked.

Change tracking can be disabled using the following command.

ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

Renaming or moving a tracking file can be accomplished in the normal way using the ALTER DATABASE RENAME FILE command. If the instance cannot be restarted you can simply disable and re-enable change tracking to create a new file. This method does result in the loss of any current change information.

BACKUP for Backupsets and Image Copies

In Oracle 10g the BACKUP command has been extended to allow it to initiate backups of image copies in addition to backupsets. As a result the COPY command has been deprecated in favour of this new syntax.

BACKUP AS COPY DATABASE;
BACKUP AS COPY TABLESPACE users;
BACKUP AS COPY DATAFILE 1;

RMAN supports the creation of image copies of datafiles and datafile copies, control files and controlfile copies, archived redo logs, and backup pieces.

Cataloging Backup Pieces

It is now possible to manually catalog a backup piece using the CATALOG commands in RMAN. This allows backup files to be moved to alternate locations or manually archived to tape and brought back for restore operations. In Oracle 9i this functionality was only availabale for controlfile copies, archivelog copies and datafile copies. In addition, there are some shortcuts to allow multiple files to be cataloged using a single command. The following examples give the general idea.

# Catalog specific backup piece.
CATALOG BACKUPPIECE '/backup/MYSID/01dmsbj4_1_1.bcp';

# Catalog all files and the contents of directories which
# begin with the pattern "/backup/MYSID/arch". 
CATALOG START WITH '/backup/MYSID/arch';

# Catalog all files in the current recovery area.
CATALOG RECOVERY AREA NOPROMPT;

# Catalog all files in the current recovery area.
# This is an exact synonym of the previous command.
CATALOG DB_RECOVERY_FILE_DEST NOPROMPT;

The NOPROMPT clause supresses user confirmation for all matching files.

Improved RMAN Reporting Through V$ Views

Oracle 10g includes additional V$ views making the reporting of backup operations more transparent.

The V$RMAN_CONFIGURATION view from Oracle 9i is still available in Oracle 10g.

Automatic Instance Creation for RMAN TSPITR

If a tablespace point-in-time recovery (TSPITR) is initiated with no reference to an auxillary instance RMAN now automatically creates an one. The auxillary instance configuration is based on that of the target database. As a result, any channels required for the restore operations must be present in the target database so they are configured correctly in the auxillary instance. The location of the datafiles for the auxillary instance are specified using the AUXILIARY DESTINATION clause shown below.

RECOVER TABLESPACE users 
  UNTIL LOGSEQ 2400 THREAD 1
  AUXILIARY DESTINATION '/u01/oradata/auxdest';

The tablespace is taken offline, restored from a backup, recovered to the specified point-in-time in the auxillary instance and re-imported into the target database. The tablespace in the target database should then be backed up and the tablespace brought back online.

BACKUP TABLESPACE users;
SQL "ALTER TABLESPACE users ONLINE";

On successful completion the auxillary instance will be cleaned up automatically. In the event of errors the auxillary instance is left intact to aid troubleshooting.

Cross-Platform Tablespace Conversion

The CONVERT TABLESPACE allows tablespaces to be transported between platforms with different byte orders. The transportable tablespace mechanism is unchanged, this command merely converts the tablespace to allow the transport to work.

The platform of the source and destination platforms can be identified using the V$TRANSPORTABLE_PLATFORM view. The platform of the local server is not listed as no conversion in necessary for a matching platform.

SQL> SELECT platform_name FROM v$transportable_platform;

PLATFORM_NAME
------------------------------------
Solaris[tm] OE (32-bit)
...
...
Microsoft Windows 64-bit for AMD

15 rows selected.

The tablespace conversion can take place on either the source or the destination server. The following examples show how the command is used in each case.

# Conversion on a Solaris source host to a Linux destincation file.
CONVERT TABLESPACE my_tablespace
  TO PLATFORM 'Linux IA (32-bit)'
  FORMAT='/tmp/transport_linux/%U';

# Conversion on a Linux destination host from a Solaris source file.
CONVERT DATAFILE=
    '/tmp/transport_solaris/my_ts_file01.dbf',
    '/tmp/transport_solaris/my_ts_file02.dbf'
  FROM PLATFORM 'Solaris[tm] OE (32-bit)'
  DB_FILE_NAME_CONVERT
    '/tmp/transport_solaris','/u01/oradata/MYDB';

In the first example the converted files are placed in the directory specified by the FORMAT clause. In the second example the specified datafiles are converted to the local servers platform and placed in the correct directory specified by the DB_FILE_NAME_CONVERT clause.

Enhanced Stored Scripts Commands

Scripts can now be defined as global allowing them to be accessed by all databases within the recovery catalog. The syntax for global script manipulation is the same as that for regular scripts with the addition of the GLOBAL clause prior the word SCRIPT. Examples of it's usage are shown below.

CREATE GLOBAL SCRIPT full_backup 
{
  BACKUP DATABASE PLUS ARCHIVELOG;
  DELETE FORCE NOPROMPT OBSOLETE;
}

CREATE GLOBAL SCRIPT full_backup FROM FILE 'full_backup.txt';

RUN { EXECUTE GLOBAL SCRIPT full_backup; }

PRINT GLOBAL SCRIPT full_backup;

LIST GLOBAL SCRIPT NAMES;
LIST ALL SCRIPT NAMES;     # Global and local scripts.

REPLACE GLOBAL SCRIPT full_backup 
{
  BACKUP DATABASE PLUS ARCHIVELOG;
  DELETE FORCE NOPROMPT OBSOLETE;
}

REPLACE GLOBAL SCRIPT full_backup FROM FILE 'full_backup.txt';

DELETE GLOBAL SCRIPT 'full_backup';

Backupset Compression

The AS COMPRESSED BACKUPSET option of the BACKUP command allows RMAN to perform binary compression of backupsets. The resulting backupsets do not need to be uncompressed during recovery. It is most useful in the following circumstances:

The following examples assume that some persistent parameters are configured in a similar manner to those listed below.

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backups/MYSID/%d_DB_%u_%s_%p';

The AS COMPRESSED BACKUPSET option can be used explicitly in the backup command.

# Whole database and archivelogs.
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;

# Datafiles 1 and 5 only.
BACKUP AS COMPRESSED BACKUPSET DATAFILE 1,5;

Alternatively the option can be defined using the CONFIGURE command.

# Configure compression.
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COMPRESSED BACKUPSET;

# Whole database and archivelogs.
BACKUP DATABASE PLUS ARCHIVELOG;

Compression requires additional CPU cycles which may affect the performance of the database. For this reason it should not be used for tape backups where hardware compression is available.

Restore Preview

The PREVIEW option of the RESTORE command allows you to identify the backups required to complete a specific restore operation. The output generated by the command is in the same format as the LIST command. In addition the PREVIEW SUMMARY command can be used to produce a summary report with the same format as the LIST SUMMARY command. The following examples show how these commands are used.

# Preview
RESTORE DATABASE PREVIEW;
RESTORE TABLESPACE users PREVIEW;

# Preview Summary
RESTORE DATABASE PREVIEW SUMMARY;
RESTORE TABLESPACE users PREVIEW SUMMARY;

Managing Backup Duration and Throttling

The DURATION clause of the of the BACKUP command restricts the total time available for a backup to complete. At the end of the time window backup is interrupted with any incomplete backupsets discarded. All complete backupsets are kept and used for future restore operations. The following examples show how it is used.

BACKUP DURATION 2:00 TABLESPACE users FILESPERSET 1;
BACKUP DURATION 5:00 DATABASE PLUS ARCHIVELOGS FILESPERSET 1;

The FILESPERSET clause minimizes the number of backupsets that are discarded if the backup is interrupted.

When using the DURATION clause, the least recently backed up files are processed first. Failure to complete a backup in the specified duration results in a error. This error can be suppressed by using the PARTIAL clause, which replaces the error with a message listing the files that were not backed up by the operation.

BACKUP DURATION 2:00 PARTIAL TABLESPACE users FILESPERSET 1;
BACKUP DURATION 5:00 PARTIAL DATABASE PLUS ARCHIVELOGS FILESPERSET 1;

The performance of backups can be managed using the MINIMIZE clause. The MINIMIZE TIME clause allows the backup to use all the available resources to complete as quickly as possible. The MINIMIZE LOAD clause continually estimates the time required to complete the backup and throttles resource usage to minimize the impact on the server, while still allowing the backup to finish in the specified duration.

BACKUP DURATION 5:00 PARTIAL MINIMIZE TIME DATABASE FILESPERSET 1;
BACKUP DURATION 5:00 PARTIAL MINIMIZE LOAD DATABASE FILESPERSET 1;

Miscellaneous

For more information see:

Hope this helps. Regards Tim...

Back to the Top.