Oracle Recovery Manager (RMAN)
Recovery Manager(RMAN) is an Oracle provided (free) utility for backing-up, restoring and recovering Oracle databases. RMAN ships with the Oracle database and doesn’t require a separate installation. The RMAN executable is located in $ORACLE_HOME/bin directory.
The RMAN environment consists of the utilities and databases that play a role in backing up our data. At a minimum, the environment for RMAN must include the following:
- The target database to be backed up.
- The RMAN client (rman executable and recover.bsq), which interprets backup and recovery commands, directs server sessions to execute those commands, and records our backup and recovery activity in the target database control file.
Some environments will also use these optional components:
- A recovery catalog database, a separate database schema used to record RMAN activity against one or more target databases (this is optional, but highly recommended).
- A flash recovery area, called as fast recovery area from 11g release2, a disk location in which the database can store and manage files related to backup and recovery.
- Media management software, required for RMAN to interface with backup devices such as tape drives.
Large pool (LARGE_POOL_SIZE) is used for RMAN.
Benefits of RMAN
Some of the benefits provided by RMAN include:
- Backups are faster and uses less tapes (RMAN will skip empty blocks)
- Less database archiving while database is being backed-up
- RMAN checks the database for block corruptions
- Automated restores from the catalog
- Files are written out in parallel instead of sequential
RMAN can be operated from Oracle Enterprise Manager, or from command line. Here are the command line arguments:
|target||quoted-string||connect-string for target database|
|catalog||quoted-string||connect-string for recovery catalog|
|nocatalog||none||if specified, then no recovery catalog|
|cmdfile||quoted-string||name of input command file|
|log||quoted-string||name of output message log file|
|trace||quoted-string||name of output debugging message log file|
|append||none||if specified, log is opened in append mode|
|msgno||none||show RMAN-nnnn prefix for all messages|
|send||quoted-string||send a command to the media manager|
|pipe||string||building block for pipe names|
|timeout||integer||number of seconds to wait for pipe input|
|checksyntax||none||check the command file for syntax errors|
$ rman TARGET SYS/[email protected]
$ rman TARGET SYS/[email protected] CATALOG rman/[email protected]
$ rman TARGET=SYS/[email protected] CATALOG=rman/[email protected]
$ rman TARGET SYS/[email protected] LOG $ORACLE_HOME/dbs/log/rman_log.log APPEND
Using recovery catalog
One (base) recovery catalog can manage multiple target databases. All the target databases should be register with the catalog.
Start by creating a database schema (usually named rman), in catalog database. Assign an appropriate tablespace to it and grant it the recovery_catalog_owner role.
SQL> create user rman identified by rman default tablespace rmants quota unlimited on rmants;
SQL> grant resource, recovery_catalog_owner to rman;
No need to grant connect role explicitly, because recovery_catalog_owner role has it.
$ rman catalog rman/rman
RMAN> create catalog;
Now you can continue by registering your databases in the catalog.
$ rman catalog rman/[email protected] target system/[email protected]
RMAN> register database;
SQL> create user vpc identified by vpc default tablespace rmants quota unlimited on rmants;
SQL> grant resource, recovery_catalog_owner to vpc;
$ rman catalog rman/rman
RMAN> GRANT CATALOG FOR DATABASE target_db TO vpc;
$ rman catalog vpc/vpc
Recovery Manager commands
|ADVISE FAILURE||Will display repair options for the specified failures. 11g R1 command.|
|ALLOCATE||Establish a channel, which is a connection between RMAN and a database instance.|
|ALTER DATABASE||Mount or open a database.|
|BACKUP||Backup database, tablespaces, datafiles, control files, spfile, archive logs.|
|BLOCKRECOVER||Will recover the corrupted blocks.|
|CATALOG||Add information about file copies and user-managed backups to the catalog repository.|
|CHANGE||Update the status of a backup in the RMAN repository.|
|CONFIGURE||To change RMAN settings.|
|CONNECT||Establish a connection between RMAN and a target, auxiliary, or recovery catalog database.|
|CONVERT||Convert datafile formats for transporting tablespaces and databases across platforms.|
|CREATE CATALOG||Create the base/virtual recovery catalog.|
|CREATE SCRIPT||Create a stored script and store it in the recovery catalog.|
|CROSSCHECK||Check whether backup items still exist or not.|
|DELETE||Delete backups from disk or tape.|
|DELETE SCRIPT||Delete a stored script from the recovery catalog.|
|DROP CATALOG||Remove the base/virtual recovery catalog.|
|DROP DATABASE||Delete the target database from disk and unregisters it.|
|DUPLICATE||Use backups of the target database to create a duplicate database that we can use for testing purposes or to create a standby database.|
|EXECUTE SCRIPT||Run an RMAN stored script.|
|EXIT or QUIT||Exit/quit the RMAN console.|
|FLASHBACK DATABASE||Return the database to its state at a previous time or SCN.|
|GRANT||Grant privileges to a recovery catalog user.|
|HOST||Invoke an operating system command-line subshell from within RMAN or run a specific operating system command.|
|IMPORT CATALOG||Import the metadata from one recovery catalog into another recovery catalog.|
|LIST||List backups and copies.|
|PRINT SCRIPT||Display a stored script.|
|RECOVER||Apply redo logs or incremental backups to a restored backup set in order to recover it to a specified time.|
|REGISTER||Register the target database in the recovery catalog.|
|RELEASE CHANNEL||Release a channel that was allocated.|
|REPAIR FAILURE||Will repair database failures identified by the Data Recovery Advisor. 11g R1 command.|
|REPLACE SCRIPT||Replace an existing script stored in the recovery catalog. If the script does not exist, then REPLACE SCRIPT creates it.|
|REPORT||Report backup status – database, files, backups.|
|RESET DATABASE||Inform RMAN that the SQL statement ALTER DATABASE OPEN RESETLOGS has been executed and that a new incarnation of the target database has been created, or reset the target database to a prior incarnation.|
|RESTORE||Restore files from RMAN backup.|
|RESYNC CATALOG||Perform a full resynchronization, which creates a snapshot control file and then copies any new or changed information from that snapshot control file to the recovery catalog.|
|REVOKE||Revoke privileges from a recovery catalog user.|
|RUN||To run set of RMAN commands, only some RMAN commands are valid inside RUN block.|
|SEND||Send a vendor-specific quoted string to one or more specific channels.|
|SET||Settings for the current RMAN session.|
|SHOW||Display the current configuration.|
|SHUTDOWN||Shutdown the database.|
|SPOOL||To direct RMAN output to a log file.|
|SQL||Execute a PL/SQL procedure or SQL statement (not SELECT).|
|STARTUP||Startup the database.|
|SWITCH||Specify that a datafile copy is now the current datafile, that is, the datafile pointed to by the control file.|
|TRANSPORT TABLESPACE||Create transportable tablespace sets from backup for one or more tablespaces.|
|UNREGISTER||Unregister a database from the recovery catalog.|
|UPGRADE CATALOG||Upgrade the recovery catalog schema from an older version to the version required by the RMAN executable.|
|VALIDATE||To validate. 11g R1 command.|
Flash/Fast Recovery Area (FRA)
Flash recovery area is a disk location in which the database can store and manage files related to backup and recovery.
To set the flash recovery area location and size, use
- Managing recovery related files with flash recovery area.
- Optimized incremental backups using block change tracking (Faster incremental backups) using a file (named block change tracking file). CTWR (Change Tracking Writer) is the background process responsible for tracking the blocks.
- Reducing the time and overhead of full backups with incrementally updated backups.
- Comprehensive backup job tracking and administration with Enterprise Manager.
- Backup set binary compression.
- New compression algorithm BZIP2 brought in.
- Automated Tablespace Point-in-Time Recovery.
- Automatic channel failover on backup & restore.
- Cross-Platform tablespace conversion.
- Ability to preview the backups required to perform a restore operation.
RMAN> restore database preview [summary];
RMAN> restore tablespace tbs1 preview;
RMAN new features in Oracle 11g Release 1
- Multisection backups of same file – RMAN can backup or restore a single file in parallel by dividing the work among multiple channels. Each channel backs up one file section, which is a contiguous range of blocks. This speeds up overall backup and restore performance, and particularly for bigfile tablespaces, in which a datafile can be sized upwards of several hundred GB to TB’s.
- Recovery will make use of flashback logs in FRA (Flash Recovery Area).
- Fast Backup Compression – in addition to the Oracle Database 10g backup compression algorithm (BZIP2), RMAN now supports the ZLIB algorithm, which offers 40% better performance, with a trade-off of no more than 20% lower compression ratio, versus BZIP2.
RMAN> configure compression algorithm ‘ZLIB’ ;
- Will backup uncommitted undo only, not committed undo.
- Data Recovery Advisor (DRA) – quickly identify the root cause of failures; auto fix or present recovery options to the DBA.
- Virtual Private Catalog – a recovery catalog administrator can grant visibility of a subset of registered databases in the catalog to specific RMAN users.
RMAN> grant catalog for database db-name to user-name;
- Catalogs can be merged/moved/imported from one database to another.
- New commands in RMAN
- RMAN> list failure;
- RMAN> list failure errnumber detail;
- RMAN> advise failure;
- RMAN> repair failure;
- RMAN> repair failure preview;
- RMAN> validate database; — checks for corrupted blocks
- RMAN> create virtual catalog;
RMAN new features in Oracle 11g Release2
- The following are new clauses and format options for the SET NEWNAME command:A single SET NEWNAME command can be applied to all files in a database or tablespace.
SET NEWNAME FOR DATABASE TO format;
SET NEWNAME FOR TABLESPACE tsname TO format;
- # New format identifiers are as follows:
# %U – Unique identifier. data_D-%d_I-%I_TS-%N_FNO-%f
# %b – UNIX base name of the original datafile name. For example, if the original datafile name was $ORACLE_HOME/data/tbs_01.f, then %b is tbs_01.f.
RMAN related views
|Control File V$ View||Recovery Catalog View||View Describes|
|V$ARCHIVED_LOG||RC_ARCHIVED_LOG||Archived and unarchived redo logs|
|V$BACKUP_DATAFILE||RC_BACKUP_CONTROLFILE||Control files in backup sets|
|V$BACKUP_CORRUPTION||RC_BACKUP_CORRUPTION||Corrupt block ranges in datafile backups|
|V$BACKUP_DATAFILE||RC_BACKUP_DATAFILE||Datafiles in backup sets|
|V$BACKUP_FILES||RC_BACKUP_FILES||RMAN backups and copies in the repository|
|V$BACKUP_REDOLOG||RC_BACKUP_REDOLOG||Archived logs in backups|
|V$BACKUP_SPFILE||RC_BACKUP_SPFILE||Server parameter files in backup sets|
|V$DATAFILE_COPY||RC_CONTROLFILE_COPY||Control file copies on disk|
|V$COPY_CORRUPTION||RC_COPY_CORRUPTION||Information about datafile copy corruptions|
|V$DATABASE||RC_DATABASE||Databases registered in the recovery catalog (RC_DATABASE) or information about the currently mounted database (V$DATABASE)|
|Database blocks marked as corrupt in the most recent RMAN backup or copy|
|V$DATABASE_INCARNATION||RC_DATABASE_INCARNATION||All database incarnations registered in the catalog|
|V$DATAFILE||RC_DATAFILE||All datafiles registered in the recovery catalog|
|V$DATAFILE_COPY||RC_DATAFILE_COPY||Datafile image copies|
|V$LOG_HISTORY||RC_LOG_HISTORY||Historical information about online redo logs|
|V$OFFLINE_RANGE||RC_OFFLINE_RANGE||Offline ranges for datafiles|
|V$PROXY_ARCHIVEDLOG||RC_PROXY_ARCHIVEDLOG||Archived log backups created by proxy copy|
|V$PROXY_CONTROLFILE||RC_PROXY_CONTROLFILE||Control file backups created by proxy copy|
|V$PROXY_DATAFILE||RC_PROXY_DATAFILE||Datafile backups created by proxy copy|
|V$LOG and V$LOGFILE||RC_REDO_LOG||Online redo logs for all incarnations of the database since the last catalog resynchronization|
|V$THREAD||RC_REDO_THREAD||All redo threads for all incarnations of the database since the last catalog resynchronization|
|V$RESTORE_POINT||RC_RESTORE_POINT||All restore points for all incarnations of the database since the last catalog resynchronization|
|–||RC_RESYNC||Recovery catalog resynchronizations|
|V$RMAN_CONFIGURATION||RC_RMAN_CONFIGURATION||RMAN persistent configuration settings|
|V$RMAN_OUTPUT||RC_RMAN_OUTPUT||Output from RMAN commands for use in Enterprise Manager|
|V$RMAN_STATUS||RC_RMAN_STATUS||Historical status information about RMAN operations|
|V$TABLESPACE||RC_TABLESPACE||All tablespaces registered in the recovery catalog, all dropped tablespaces, and tablespaces that belong to old incarnations|
|RC_TEMPFILE||V$TEMPFILE||All tempfiles registered in the recovery catalog|
RMAN related Packages