Getting Started with RMAN

We are going to explains how to use RMAN in the most basic configuration, which is without a recovery catalog or media manager.

Overview of the RMAN Environment
Recovery Manager (RMAN) is an Oracle Database client
It performs backup and recovery tasks on your databases
It automates administration of your backup strategies.
It greatly simplifies backing up, restoring, and recovering database files.

The RMAN environment consists of the utilities and databases that play a role in backing up your data.

At a minimum, the environment for RMAN must include the following components:
A target database
The RMAN client

Some environments use the following optional components:
A fast recovery area
A media manager
A recovery catalog

Starting RMAN and Connecting to a Database

% rman
RMAN>

% rman
RMAN> CONNECT TARGET SYS@prod

target database Password: password
connected to target database: PROD (DBID=39525561)

The following variation starts RMAN and then connects to a target database by using operating system authentication:

% rman
RMAN> CONNECT TARGET /

connected to target database: PROD (DBID=39525561)

To quit the RMAN client, enter EXIT at the RMAN prompt:

RMAN> EXIT

Syntax of Common RMAN Command-line Options

RMAN
[ TARGET connectStringSpec
| { CATALOG connectStringSpec }
| LOG [‘] filename [‘] [ APPEND ]
.
.
.
]…

connectStringSpec::=
[‘] [userid] [/ [password]] [@net_service_name] [‘]

The following example appends the output from an RMAN session to a text file at /tmp/msglog.log

% rman TARGET / LOG /tmp/msglog.log APPEND

Showing the Default RMAN Configuration

RMAN> SHOW ALL;

Backing Up a Database

Use the BACKUP command to back up files.

By default, RMAN creates backups on disk.
If a fast recovery area is enabled, and if you do not specify the FORMAT parameter then RMAN creates backups in the recovery area and automatically gives them unique names.

By default, RMAN creates backup sets rather than image copies.

A backup set consists of one or more backup pieces, which are physical files written in a format that only RMAN can access.

RMAN can write backup sets to disk or tape.

If you specify BACKUP AS COPY, then RMAN copies each file as an image copy, which is a bit-for-bit copy of a database file created on disk.

Image copies are identical to copies created with operating system commands like cp on Linux or COPY on Windows, but are recorded in the RMAN repository and so are usable by RMAN.

You can use RMAN to make image copies while the database is open.

Backing Up a Database in ARCHIVELOG Mode
If a database runs in ARCHIVELOG mode, then you can back up the database while it is open.

The backup is called an inconsistent backup because redo is required during recovery to bring the database to a consistent state.

If you have the archived redo logs needed to recover the backup, open database backups are as effective for data protection as consistent backups.

RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

Backing Up a Database in NOARCHIVELOG Mode

If a database runs in NOARCHIVELOG mode, then the only valid database backup is a consistent backup. For the backup to be consistent, the database must be mounted after a consistent shutdown. No recovery is required after restoring the backup.

To make a consistent database backup:

    Start RMAN and connect to a target database.

    Shut down the database consistently and then mount it.

    For example, enter the following commands to guarantee that the database is in a consistent state for a backup:

    RMAN> SHUTDOWN IMMEDIATE;
    RMAN> STARTUP FORCE DBA;
    RMAN> SHUTDOWN IMMEDIATE;
    RMAN> STARTUP MOUNT;

    Run the BACKUP DATABASE command.

    For example, enter the following command at the RMAN prompt to back up the database to the default backup device:

    RMAN> BACKUP DATABASE;

    The following variation of the command creates image copy backups of all datafiles in the database:

    RMAN> BACKUP AS COPY DATABASE;

    Open the database and resume normal operations.

    The following command opens the database:

    RMAN> ALTER DATABASE OPEN;

Typical Backup Options

Table 2-1 Common Backup Options

Option Description Example
FORMAT Specifies a location and name for backup pieces and copies. You must use substitution variables to generate unique filenames.The most common substitution variable is %U, which generates a unique name. Others include %d for the DB_NAME, %t for the backup set time stamp, %s for the backup set number, and %p for the backup piece number.
BACKUP
  FORMAT 'AL_%d/%t/%s/%p'
  ARCHIVELOG LIKE '%arc_dest%';
TAG Specifies a user-defined string as a label for the backup. If you do not specify a tag , then RMAN assigns a default tag with the date and time. Tags are always stored in the RMAN repository in uppercase.
BACKUP
  TAG 'weekly_full_db_bkup'
  DATABASE MAXSETSIZE 10M;

 

Making Incremental Backups
If you specify BACKUP INCREMENTAL, then RMAN creates an incremental backup of a database. Incremental backups capture block-level changes to a database made after a previous incremental backup.

Incremental backups are generally smaller and faster to make than full database backups.
Recovery with incremental backups is faster than using redo logs alone.

The starting point for an incremental backup strategy is a level 0 incremental backup, which backs up all blocks in the database.
An incremental backup at level 0 is identical in content to a full backup,
however, unlike a full backup the level 0 backup is considered a part of the incremental backup strategy.

A level 1 incremental backup contains only blocks changed after a previous incremental backup.
NOTE:-
If no level 0 backup exists in either the current or parent database incarnation when you run a level 1 backup,
then RMAN makes a level 0 backup automatically.

Note:-
You cannot make incremental backups when a NOARCHIVELOG database is open, although you can make incremental backups when the database is mounted after a consistent shutdown.

A level 1 backup can be a cumulative incremental backup, which includes all blocks changed since the most recent level 0 backup
or a differential incremental backup, which includes only blocks changed since the most recent incremental backup.

Incremental backups are differential by default.
===>
When restoring incremental backups,
RMAN uses the level 0 backup as the starting point
then updates changed blocks based on level 1 backups where possible to avoid reapplying changes from redo one at a time.
Recovering with incremental backups requires no additional effort on your part
If incremental backups are available, then RMAN uses them during recovery.

To make incremental backups of the database:

    Start RMAN and connect to a target database.

    Run the BACKUP INCREMENTAL command.

    The following example creates a level 0 incremental backup to serve as a base for an incremental backup strategy:

    BACKUP INCREMENTAL LEVEL 0 DATABASE;

    The following example creates a level 1 cumulative incremental backup:

    BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;

    The following example creates a level 1 differential incremental backup:

    BACKUP INCREMENTAL LEVEL 1 DATABASE;

Making Incrementally Updated Backups

The RMAN incrementally updated backup feature is an efficient incremental backup strategy.

The strategy requires a level 0 datafile copy as a base.
This copy has either a system-defined or user-defined tag.

Periodically, level 1 differential backups are created with the same tag as the level 0 datafile copy.

The BACKUP FOR RECOVER OF COPY command 

specifies that an incremental backup should contain only blocks changed since the most recent incremental backup with the same tag.

Periodically, the incremental backups are applied to the level 0 datafile copy.
Because the datafile copy has been updated with more recent changes, it now requires less media recovery.

To implement an incrementally updated backup strategy:

    Start RMAN and connect to a target database.

    Run the RECOVER COPY and BACKUP INCREMENTAL commands.

    The following script, run on a regular basis, is all that is required to implement a strategy based on incrementally updated backups.

    RECOVER COPY OF DATABASE
      WITH TAG 'incr_update';
    BACKUP
      INCREMENTAL LEVEL 1
      FOR RECOVER OF COPY WITH TAG 'incr_update'
      DATABASE;

Validating Database Files and Backups

You can use the VALIDATE command to confirm that all database files exist, are in their correct location, and are free of physical corruption.

The CHECK LOGICAL option also checks for logical block corruption.

To validate database files:

Start RMAN and connect to a target database.

Run the BACKUP VALIDATE … command for the desired files.

For example, enter the following commands to validate all database files and archived redo log files
for physical and logical corruption:

    BACKUP VALIDATE CHECK LOGICAL
      DATABASE ARCHIVELOG ALL;

You can also use the VALIDATE command to check individual data blocks, as shown in the following example:

    VALIDATE DATAFILE 4 BLOCK 10 TO 13;

You can also validate backup sets, as shown in the following example:

    VALIDATE BACKUPSET 3;

You specify backup sets by primary key, which is shown in the output of the LIST BACKUP command.

Scripting RMAN Operations

RMAN supports the use of command files to manage recurring tasks such as weekly backups.
A command file is a client-side text file containing RMAN commands, exactly as you enter
them at the RMAN prompt. You can use any file extension.

The RUN command provides a degree of flow-of-control in your scripts.

To create and run a command file:

Use a text editor to create a command file.

    For example, create a command file with the following contents:

    # my_command_file.txt
    CONNECT TARGET /
    BACKUP DATABASE PLUS ARCHIVELOG;
    LIST BACKUP;
    EXIT;

    Start RMAN and then execute the contents of a command file by running the @ command at the RMAN prompt:

    % rman
    RMAN> @/my_dir/my_command_file.txt  # runs specified command file

    You can also launch RMAN with a command file to run, as shown here:

    % rman @/my_dir/my_command_file.txt

Reporting on RMAN Operations
The RMAN LIST and REPORT commands generate reports on backup activities based on the RMAN repository.
Use the SHOW ALL command to display the current RMAN configuration.

Listing Backups
Run the LIST BACKUP and LIST COPY commands to display information about backups and datafile copies listed in the repository.

For backups, you can control the format of LIST output with the below options

LIST Options for Backups

Option Example Explanation
BY BACKUP LIST BACKUP OF DATABASE BY BACKUP Organizes the output by backup set. This is the default mode of presentation.
BY FILE LIST BACKUP BY FILE Lists the backups according to which file was backed up.
SUMMARY LIST BACKUP SUMMARY Displays summary output.

For both backups and copies you have additional options shown in

Option Example Explanation
EXPIRED LIST EXPIRED COPY Lists backups that are recorded in the RMAN repository but that were not present at the expected location on disk or tape during the last CROSSCHECK command. An expired backup may have been deleted by an operating system utility.
RECOVERABLE LIST BACKUP RECOVERABLE Lists datafile backups or copies that have status AVAILABLE in the RMAN repository and that can be restored and recovered. 

To list backups and copies:

Start RMAN and connect to a target database.

    Run the LIST command at the RMAN prompt.

    You can display specific objects, as in the following examples:

    LIST BACKUP OF DATABASE;
    LIST COPY OF DATAFILE 1, 2;
    LIST BACKUP OF ARCHIVELOG FROM SEQUENCE 10;
    LIST BACKUPSET OF DATAFILE 1;

Reporting on Database Files and Backups

The REPORT command performs more complex analysis than the LIST. Some of the main options are shown as below

REPORT Options

Option Example Explanation
NEED BACKUP REPORT NEED BACKUP DATABASE Shows which files need backing up under current retention policy. Use optional REDUNDANCY and RECOVERY WINDOW parameters to specify different criteria.
OBSOLETE REPORT OBSOLETE Lists backups that are obsolete under the configured backup retention policy. Use the optional REDUNDANCY and RECOVERY WINDOW parameters to override the default.
SCHEMA REPORT SCHEMA Reports the tablespaces and datafiles in the database at the current time (default) or a different time.
UNRECOVERABLE REPORT UNRECOVERABLE Lists all datafiles for which an unrecoverable operation has been performed against an object in the datafile since the last backup of the datafile.

 

To generate reports of database files and backups:

Start RMAN and connect to a target database.

Run the REPORT command at the RMAN prompt.

The following example reports backups that are obsolete according to the currently configured backup
retention policy:

    REPORT OBSOLETE;
    

The following example reports the datafiles and tempfiles in the database:

    REPORT SCHEMA;
    

Maintaining RMAN Backups

RMAN repository metadata is always stored in the control file of the target database.
The RMAN maintenance commands use this metadata when managing backups.

Cross-checking Backups
The CROSSCHECK command synchronizes the logical records of RMAN backups and copies with the files on storage media.

If a backup is on disk, then CROSSCHECK determines whether the header of the file is valid.
If a backup is on tape, then RMAN queries the RMAN repository for the names and locations of the backup pieces.

It is a good idea to crosscheck backups and copies before deleting them.
——————–

To crosscheck all backups and copies on disk:

Start RMAN and connect to a target database.

Run the CROSSCHECK command, as shown in the following example:

    CROSSCHECK BACKUP;
    CROSSCHECK COPY;
    

Deleting Obsolete Backups

The DELETE OBSOLETE command is particular useful because RMAN deletes backups and datafile copies recorded in the RMAN repository that are obsolete, that is, no longer needed.
You can use options on the DELETE command to specify what is obsolete or use the configured backup retention policy.

To delete obsolete backups and copies:

Start RMAN and connect to a target database.

Run the DELETE OBSOLETE command, as shown in the following example:

    DELETE OBSOLETE;
    

Diagnosing and Repairing Failures with Data Recovery Advisor
The simplest way to diagnose and repair database problems is to use the Data Recovery Advisor.

This Oracle Database tool provides an infrastructure for diagnosing persistent data failures, presenting repair options to the user, and automatically executing repairs.

Listing Failures and Determining Repair Options

A failure is a persistent data corruption detected by the Health Monitor.
Examples include physical and logical data block corruptions and missing datafiles.

Each failure has a failure priority and failure status.
The priority can be CRITICAL, HIGH, or LOW. The status can be OPEN or CLOSED.

Note:-
You can run the LIST FAILURE command to show all known failures. If failures exist, then run the ADVISE FAILURE command in the same session to determine manual and automated repair options. The following example illustrates these two commands (sample output included).

LIST FAILURE and ADVISE FAILURE

RMAN> LIST FAILURE;

List of Database Failures
=========================

Failure ID Priority Status    Time Detected Summary
---------- -------- --------- ------------- -------
142        HIGH     OPEN      23-APR-07     One or more non-system datafiles are missing
101        HIGH     OPEN      23-APR-07     Datafile 1: '/disk1/oradata/prod/system01.dbf'
                                            contains one or more corrupt blocks

RMAN> ADVISE FAILURE;

List of Database Failures
=========================

Failure ID Priority Status    Time Detected Summary
---------- -------- --------- ------------- -------
142        HIGH     OPEN      23-APR-07     One or more non-system datafiles are missing
101        HIGH     OPEN      23-APR-07     Datafile 1: '/disk1/oradata/prod/system01.dbf'
                                            contains one or more corrupt blocks

analyzing automatic repair options; this may take some time
using channel ORA_DISK_1
analyzing automatic repair options complete

Mandatory Manual Actions
========================
no manual actions available

Optional Manual Actions
=======================
1. If file /disk1/oradata/prod/users01.dbf was unintentionally renamed or moved, restore it

Automated Repair Options
========================
Option Repair Description
------ ------------------
1      Restore and recover datafile 28; Perform block media recovery of
       block 56416 in file 1
  Strategy: The repair includes complete media recovery with no data loss
  Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_660500184.hm

The ADVISE FAILURE output shows both manual and automated repair options. First try to fix the problem manually. If you cannot fix the problem manually, then review the automated repair section.

An automated repair option describes a server-managed repair for one or more failures. Repairs are consolidated when possible so that a single repair can fix multiple failures. The repair option indicates which repair is performed and whether data is lost by performing the repair operation.

Repairing Failures
After running LIST FAILURE and ADVISE FAILURE in an RMAN session, you can run REPAIR FAILURE to execute a repair option.
If you execute REPAIR FAILURE with no other command options, then RMAN uses the first repair option of the most recent ADVISE FAILURE command in the current session.

RMAN> REPAIR FAILURE;

By default, REPAIR FAILURE prompts for confirmation before it begins executing. After executing a repair,
Data Recovery Advisor reevaluates all existing failures on the possibility that they may also have been fixed.
Data Recovery Advisor always verifies that failures are still relevant and automatically closes fixed failures.
If a repair fails to complete because of an error, then the error triggers a new assessment and re-evaluation of existing failures and repairs.

Rewinding a Database with Flashback Database

You can use the Oracle Flashback Database to rewind the whole database to a past time. Unlike media recovery, you do not need to restore datafiles to return the database to a past state.

To use the RMAN FLASHBACK DATABASE command, your database must have been previously configured to generate flashback logs.

Flashback Database works by rewinding changes to the datafiles that exist at the moment that you run the command.
You cannot use the command to repair media failures or missing datafiles.

The database must be mounted when you issue FLASHBACK DATABASE.
if you have previously created a restore point, then you can flash back to this restore point if it falls within the flashback database window.

To rewind a database with Flashback Database:

    Start RMAN and connect to a target database.

    Ensure that the database is in a mounted state.

    The following commands shut down and then mount the database:

    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;

    Run the FLASHBACK DATABASE command.

    The following examples illustrate different forms of the command:

    FLASHBACK DATABASE TO SCN 861150;

    FLASHBACK DATABASE
      TO RESTORE POINT BEFORE_CHANGES;

    FLASHBACK DATABASE
      TO TIMESTAMP TO_DATE(04-DEC-2009  03:30:00','DD-MON-YYYY HH24:MI:SS');

    After performing the Flashback Database, open the database read-only in SQL*Plus and run some queries to verify the database contents.

    Open the database read-only as follows:

    SQL "ALTER DATABASE OPEN READ ONLY";

    If satisfied with the results, then issue the following sequence of commands to shut down and then open the database:

    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER DATABASE OPEN RESETLOGS;

Restoring and Recovering Database Files

Use the RESTORE and RECOVER commands for RMAN restore and recovery of physical database files.

Restoring datafiles is retrieving them from backups as needed for a recovery operation.

Media recovery is the application of changes from redo logs and incremental backups to a restored datafile
to bring the datafile forward to a desired SCN or point in time.

Preparing to Restore and Recover Database Files

You can use the RESTORE … PREVIEW command to report, but not restore, the backups that RMAN could use to restore to the specified time.
RMAN queries the metadata and does not actually read the backup files. The database can be open when you run this command.

To preview a database restore and recovery:

    Start RMAN and connect to the target database.

    Optionally, list the current tablespaces and datafiles, as shown in the following command:

    RMAN> REPORT SCHEMA;

    Run the RESTORE DATABASE command with the PREVIEW option.

    The following command specifies SUMMARY so that the backup metadata is not displayed in verbose mode (sample output included):

    RMAN> RESTORE DATABASE PREVIEW SUMMARY;

    Starting restore at 21-MAY-07
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=80 device type=DISK

    List of Backups
    ===============
    Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
    ------- -- -- - ----------- --------------- ------- ------- ---------- ---
    11      B  F  A DISK        18-MAY-07       1       2       NO         TAG20070518T181114
    13      B  F  A DISK        18-MAY-07       1       2       NO         TAG20070518T181114
    using channel ORA_DISK_1

    List of Archived Log Copies for database with db_unique_name PROD
    =====================================================================

    Key     Thrd Seq     S Low Time
    ------- ---- ------- - ---------
    47      1    18      A 18-MAY-07
            Name: /disk1/oracle/dbs/db1r_60ffa882_1_18_0622902157.arc

    Media recovery start SCN is 586534
    Recovery must be done beyond SCN 587194 to clear datafile fuzziness
    validation succeeded for backup piece
    Finished restore at 21-MAY-07

Recovering the Whole Database

Use the RESTORE DATABASE and RECOVER DATABASE commands to recover the whole database.
You must have previously made backups of all needed files. This scenario assumes that you can restore all datafiles to their original locations. If the original locations are inaccessible, then use the SET NEWNAME command as described in “Restoring Datafiles to a Nondefault Location”.

To recover the whole database:

    Prepare for recovery as explained in "Preparing to Restore and Recover Database Files".

    Place the database in a mounted state.

    The following example terminates the database instance (if it is started) and mounts the database:

    RMAN> STARTUP FORCE MOUNT;

    Restore the database.

    The following example uses the preconfigured disk channel to restore the database:

    RMAN> RESTORE DATABASE;

    Recover the database, as shown in the following example:

    RMAN> RECOVER DATABASE;

    Open the database, as shown in the following example:

    RMAN> ALTER DATABASE OPEN;
 

Recovering Tablespaces
Use the RESTORE TABLESPACE and RECOVER TABLESPACE commands on individual tablespaces when the database is open. In this case, must take the tablespace that needs recovery offline, restore and then recover the tablespace, and bring the recovered tablespace online.

Note:-
If you cannot restore a datafile to a new location,
then use the RMAN SET NEWNAME command within a RUN command to specify the new filename.
Afterward, use a SWITCH DATAFILE ALL command,
which is equivalent to using the SQL statement ALTER DATABASE RENAME FILE, to update the
control file to reflect the new names for all datafiles for which a SET NEWNAME has been issued in the RUN command.

To recover an individual tablespace when the database is open:

    Prepare for recovery as explained in "Preparing to Restore and Recover Database Files".

    Take the tablespace to be recovered offline:

    The following example takes the users tablespace offline:

    RMAN> SQL 'ALTER TABLESPACE users OFFLINE';

    Restore and recover the tablespace.

    The following RUN command, which you execute at the RMAN prompt, sets a new name for the datafile in the users tablespace:

    RUN
    {
      SET NEWNAME FOR DATAFILE '/disk1/oradata/prod/users01.dbf' TO '/disk2/users01.dbf';
      RESTORE TABLESPACE users;
      SWITCH DATAFILE ALL;   # update control file with new filenames
      RECOVER TABLESPACE users;
    }

    Bring the tablespace online, as shown in the following example:

    RMAN> SQL 'ALTER TABLESPACE users ONLINE';

    You can also use RESTORE DATAFILE and RECOVER DATAFILE for recovery at the datafile level.
    

Recovering Individual Data Blocks

RMAN can recover individual corrupted datafile blocks.
When RMAN performs a complete scan of a file for a backup, any corrupted blocks are listed in V$DATABASE_BLOCK_CORRUPTION.
Corruption is usually reported in alert logs, trace files, or results of SQL queries.

To recover data blocks:

    Obtain the block numbers of the corrupted blocks if you do not already have this information.

    The easiest way to locate trace files and the alert log is to connect SQL*Plus to the target database and execute the following query:

    SQL> SELECT NAME, VALUE FROM V$DIAG_INFO;

    Start RMAN and connect to the target database.

    Run the RECOVER command to repair the blocks.

    The following RMAN command recovers all corrupted blocks:

    RMAN> RECOVER CORRUPTION LIST;

    You can also recover individual blocks, as shown in the following example:

    RMAN> RECOVER DATAFILE 1 BLOCK 233, 235 DATAFILE 2 BLOCK 100 TO 200;
    
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s