Oracle   Home  

 

Oracle Database 9i, 10g, 11g

Oracle Data Warehouse & BI

Oracle Applications EBS 11i, R12

 Oracle Middleware

SQL & PL/SQL

UNIX/ Linux

   Home  >  Oracle Database Administration (DBA)  >  Backup & Recovery  >  Recovering a file using a cumulative backup  ( with RMAN )

 

Oracle Database 10g Administration (DBA): Backup and Recovery

Recovering a file using a cumulative backup 

( with RMAN )

 

 

 

1. Cumulative Backup Overview

 

Sometimes we need to backup the database changes only from the last backup (only the last changes are backed up). This is an incremental backup. There are 2 types of incremental backup: DIFFERENTIAL (by default) & CUMULATIVE. 

NOTE: The incremental backups are only for the DATA files.

 

CUMULATIVE backup =  which backs up all blocks changed after the most recent incremental backup at level 0. See the picture bellow.

The following RMAN command is used to take a CUMULATIVE database backup: 

RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;

 

 

2. Cumulative Restore Overview

 

Because a CUMULATIVE backup is taken each day during the week, we need to restore 2 times: 1st we have to restore the full backup and after that the last cumulative backup (for a complete restore). If differential backups are taken we have to restore all the differential backups until the database crash. 

 

3. Taking a full backup (supposing on Sunday at 1 am) - level 0

 

A database backup is taken using the following RMAN script (which is stored in the  /home/oracle/Desktop/Backup_rman/scripts/hot_database_backup_disk.sh  file):

 

#/usr/bin/ksh
export ORACLE_HOME=/DB1
export ORACLE_SID=db1
RMAN_LOG_FILE=/home/oracle/Desktop/Backup_rman/log/hot_database_backup.`date +%y%m%d%H%M`.out

# -----------------------------------------------------------------
# Initialize the log file.
# -----------------------------------------------------------------

echo>> $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE

echo Script $0>> $RMAN_LOG_FILE
echo ==== started on `date` ====>> $RMAN_LOG_FILE
echo>> $RMAN_LOG_FILE

ORACLE_USER=oracle
TARGET_CONNECT_STR=sys/s

RMAN=$ORACLE_HOME/bin/rman
BACKUP_TYPE="INCREMENTAL LEVEL 0"

# ---------------------------------------------------------------------------
# Print out the value of the variables set by this script.
# ---------------------------------------------------------------------------
echo>> $RMAN_LOG_FILE
echo "RMAN: $RMAN">> $RMAN_LOG_FILE
echo "ORACLE_SID: $ORACLE_SID">> $RMAN_LOG_FILE
echo "ORACLE_USER: $ORACLE_USER">> $RMAN_LOG_FILE
echo "ORACLE_HOME: $ORACLE_HOME">> $RMAN_LOG_FILE
echo "BACKUP_TYPE: $BACKUP_TYPE">> $RMAN_LOG_FILE
# ---------------------------------------------------------------------------

echo >> $RMAN_LOG_FILE
CMD_STR=""

$RMAN target $TARGET_CONNECT_STR catalog rman/r@dbr << EOF
RUN {
ALLOCATE CHANNEL ch00 TYPE disk ;
ALLOCATE CHANNEL ch01 TYPE disk ;
ALLOCATE CHANNEL ch02 TYPE disk ;
ALLOCATE CHANNEL ch03 TYPE disk ;
BACKUP
$BACKUP_TYPE
SKIP INACCESSIBLE
TAG hot_db_bk_level0
FILESPERSET 5
# recommended format
FORMAT '/home/oracle/Desktop/Backup_rman/backup/bk_%s_%p_%t'
DATABASE;
sql 'alter system archive log current';
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
RELEASE CHANNEL ch02;
RELEASE CHANNEL ch03;
# backup all archive logs
ALLOCATE CHANNEL ch00 TYPE disk;
ALLOCATE CHANNEL ch01 TYPE disk;

BACKUP
SKIP INACCESSIBLE
filesperset 20
FORMAT '/home/oracle/Desktop/Backup_rman/backup/al_%s_%p_%t'
ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
ALLOCATE CHANNEL ch00 TYPE disk;
BACKUP
# recommended format
FORMAT '/home/oracle/Desktop/Backup_rman/backup/cntrl_%s_%p_%t'
CURRENT CONTROLFILE;
RELEASE CHANNEL ch00;
}
EOF

NOTE: The database must be in archivelog mode. 

 

 

4. Taking a cumulative backup (supposing on Monday at 1 am) - level 1

 

A cumulative backup is taken using the following script

 

[oracle@PROD scripts]$ more cumulative_database_backup_disk.sh
#/usr/bin/ksh
ORACLE_HOME=/DB1
export ORACLE_HOME
ORACLE_SID=db1
export ORACLE_SID
RMAN_LOG_FILE=/home/oracle/Desktop/Backup_rman/log/cumulative_day_level1.`date +%y%m%d%H%M`.out

echo >> $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE

echo Script $0 >> $RMAN_LOG_FILE
echo ==== started on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE

ORACLE_USER=oracle

TARGET_CONNECT_STR=sys/s

RMAN=$ORACLE_HOME/bin/rman
BACKUP_TYPE="INCREMENTAL LEVEL 1 CUMULATIVE"

echo >> $RMAN_LOG_FILE
echo "RMAN: $RMAN" >> $RMAN_LOG_FILE
echo "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE
echo "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE
echo "ORACLE_HOME: $ORACLE_HOME" >> $RMAN_LOG_FILE
echo "BACKUP_TYPE: $BACKUP_TYPE" >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE
CMD_STR=""

$RMAN target $TARGET_CONNECT_STR catalog rman/r@dbr << EOF
RUN {
ALLOCATE CHANNEL ch00 TYPE disk ;

BACKUP
$BACKUP_TYPE
SKIP INACCESSIBLE
TAG day_bk_cumulative1
FILESPERSET 5
# recommended format
FORMAT '/home/oracle/Desktop/Backup_rman/backup/cumulative_bk_%s_%p_%t'
DATABASE;
RELEASE CHANNEL ch00;

ALLOCATE CHANNEL ch00 TYPE disk;
BACKUP
# recommended format
FORMAT '/home/oracle/Desktop/Backup_rman/backup/cntrl_%s_%p_%t_inc'
CURRENT CONTROLFILE;
RELEASE CHANNEL ch00;
}
EOF

 

5. Taking a cumulative backup (supposing on Tuesday at 1 am) - level 1

 

The same script (from 4. )  is used for another cumulative backup on Tuesday at 1 am.

 

 

6. Simulate a disk crash on Tuesday at noon

 

Now delete a datafile, /DB1/oradata/db1/users01.dbf for instance, SHUTDOWN the database using ABORT option and restart the database.

 

The following message will appear:

 

 

 

More information about  this subject ( Recovering a file using a cumulative backup  ( with RMAN ) ) you can get from  www.in-oracle.com

 

 

Oracle Database 9i, 10g, 11g

Oracle Data Warehouse & BI Oracle Applications EBS 11i, R12  Oracle Middleware

SQL & PL/SQL

UNIX/ Linux

   Home  >  Oracle Database Administration (DBA)  >  Backup & Recovery  >  Recovering a file using a cumulative backup  ( with RMAN )

 

 

Different Romanian Links/ Linkuri romanesti diferite

  1. Ghid de conversatie englez-roman (English Romanian Conversation Guide)

  Doresti un proiect de arhitectura ieftin (pentru zonele Buzau, Bucuresti sau Prahova) ?

Disclaimer: The views expressed on this web site are my own and do not reflect the views of Oracle Corporation. You may use the information from this site only at your risk. Copyright (c) 2009-2011 Paul Catalin Tomoiu. All rights reserved.