Restore Oracle 11g Database from RMAN Backup (Full and Archive Logs Backup)
◎ Backed Up Data Environment:
Full Backups:
/backup/daily/2015-10-15/TESTDB
Archive Log Backups:
/backup/daily/2015-10-16/TESTDB
/backup/daily/2015-10-17/TESTDB
/backup/daily/2015-10-18/TESTDB
◎ Restore Scenario:
Restore TESTDB up to the latest Backup including the latest Full Backup (2015-10-15) + all the Archive Log backups up to 2015-10-18
◎ Files Preparation:
A.
Copy all the Archive Log files under /backup/daily/2015-10-15/TESTDB/ARCH to /backup/daily/2015-10-18/TESTDB/ARCH
Copy all the Archive Log files under /backup/daily/2015-10-16/TESTDB/ARCH to /backup/daily/2015-10-18/TESTDB/ARCH
Copy all the Archive Log files under /backup/daily/2015-10-17/TESTDB/ARCH to /backup/daily/2015-10-18/TESTDB/ARCH
Here are the commands:
cp -rp /backup/daily/2015-10-15/TESTDB/ARCH/* /backup/daily/2015-10-18/TESTDB/ARCH
cp -rp /backup/daily/2015-10-16/TESTDB/ARCH/* /backup/daily/2015-10-18/TESTDB/ARCH
cp -rp /backup/daily/2015-10-17/TESTDB/ARCH/* /backup/daily/2015-10-18/TESTDB/ARCH
B.
Copy the datafile backups under /backup/daily/2015-10-15/TESTDB/DB_BK to /backup/daily/2015-10-18/TESTDB/DB_BK
Here is the command:
mkdir -p /backup/daily/2015-10-18/TESTDB/DB_BK
cp -rp /backup/daily/2015-10-15/TESTDB/DB_BK/* /backup/daily/2015-10-18/TESTDB/DB_BK
[oracle@TESTSVR]$ ls -l /backup/daily/2015-10-18/TESTDB/
total 20
drwxr-xr-x 2 oracle dba 4096 Oct 18 03:02 ARCH
drwxr-xr-x 2 oracle dba 4096 Oct 18 03:02 CTRL
drwxr-xr-x 2 oracle dba 4096 Oct 15 03:51 DB_BK
drwxr-xr-x 2 oracle dba 4096 Oct 18 03:02 LOG
drwxr-xr-x 2 oracle dba 4096 Oct 18 03:02 SPFILE
[oracle@TESTSVR]$ ls -l /backup/daily/2015-10-18/TESTDB/DB_BK/
total 3775616
-rw-r----- 1 oracle dba 821272576 Oct 15 03:50 bk_12859_1_893124637
-rw-r----- 1 oracle dba 465993728 Oct 15 03:50 bk_12860_1_893124637
-rw-r----- 1 oracle dba 431538176 Oct 15 03:50 bk_12861_1_893124638
-rw-r----- 1 oracle dba 391151616 Oct 15 03:50 bk_12862_1_893124638
-rw-r----- 1 oracle dba 399499264 Oct 15 03:50 bk_12863_1_893124693
-rw-r----- 1 oracle dba 379371520 Oct 15 03:51 bk_12864_1_893124694
-rw-r----- 1 oracle dba 403881984 Oct 15 03:51 bk_12865_1_893124697
-rw-r----- 1 oracle dba 189456384 Oct 15 03:51 bk_12866_1_893124733
-rw-r----- 1 oracle dba 213196800 Oct 15 03:51 bk_12867_1_893124734
-rw-r----- 1 oracle dba 167034880 Oct 15 03:51 bk_12868_1_893124737
[oracle@TESTSVR]$ ls -l /backup/daily/2015-10-18/TESTDB/ARCH/
total 488352
-rw-r----- 1 oracle dba 53209600 Oct 15 03:51 arch_12870_1_893124771
-rw-r----- 1 oracle dba 53825536 Oct 15 03:51 arch_12871_1_893124771
-rw-r----- 1 oracle dba 22075392 Oct 15 03:51 arch_12872_1_893124771
-rw-r----- 1 oracle dba 266752 Oct 15 03:51 arch_12873_1_893124771
-rw-r----- 1 oracle dba 85068288 Oct 16 03:01 arch_12877_1_893210517
-rw-r----- 1 oracle dba 37753856 Oct 16 03:02 arch_12878_1_893210517
-rw-r----- 1 oracle dba 2560 Oct 16 03:02 arch_12879_1_893210525
-rw-r----- 1 oracle dba 79857152 Oct 17 03:01 arch_12883_1_893296913
-rw-r----- 1 oracle dba 39827968 Oct 17 03:01 arch_12884_1_893296913
-rw-r----- 1 oracle dba 3072 Oct 17 03:01 arch_12885_1_893296920
-rw-r----- 1 oracle dba 79281152 Oct 18 03:02 arch_12889_1_893383308
-rw-r----- 1 oracle dba 48331264 Oct 18 03:02 arch_12890_1_893383308
-rw-r----- 1 oracle dba 3072 Oct 18 03:02 arch_12891_1_893383315
[oracle@TESTSVR]$ ls -l /backup/daily/2015-10-18/TESTDB/CTRL/
total 18440
-rw-r----- 1 oracle dba 18857984 Oct 18 03:02 control.bk
[oracle@TESTSVR]$ ls -l /backup/daily/2015-10-18/TESTDB/SPFILE/
total 100
-rw-r----- 1 oracle dba 98304 Oct 18 03:02 spfileTESTDB.bak
[oracle@TESTSVR]$ cat /scripts/restore_db_script.sh
#!/bin/bash
####################################################################
# Need to clear up ASM disk (TESTDB) before executing the script !!
####################################################################
export BACKUP_DATE=2015-10-18
export ORACLE_SID=TESTDB
export ORACLE_HOME=/oracle/orabase/product/11.2.0.3/dbhome_1
export DATE=`date '+%Y%m%d%H%M'`
# To genereate "restore_db_run"
cat << EOF > /backup/sql/restore_db_run
set decryption identified by 'MYPWD';
duplicate database to $ORACLE_SID
pfile='/oracle/orabase/product/11.2.0.3/dbhome_1/dbs/init$ORACLE_SID.ora'
backup location '/backup/daily/$BACKUP_DATE'
nofilenamecheck;
quit
EOF
# To generate "init$ORACLE_SID.ora"
cat << EOF > $ORACLE_HOME/dbs/init$ORACLE_SID.ora
db_name='$ORACLE_SID'
memory_target=3G
processes=500
audit_file_dest='/oracle/orabase/admin/$ORACLE_SID/adump'
audit_trail='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='+ARCH'
db_recovery_file_dest_size=20G
diagnostic_dest='/oracle/orabase'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
EOF
# To re-generate glogin.sql
cp -f $ORACLE_HOME/sqlplus/admin/glogin.sql $ORACLE_HOME/sqlplus/admin/glogin.sql.clone
cat << EOF > $ORACLE_HOME/sqlplus/admin/glogin.sql
DEFINE_EDITOR='vi'
SET TERMOUT OFF
EOF
sqlplus -s / as sysdba <<EOF
shut abort
startup nomount pfile=$ORACLE_HOME/dbs/init$ORACLE_SID.ora
exit
EOF
# restore glogin.sql
mv -f $ORACLE_HOME/sqlplus/admin/glogin.sql.clone $ORACLE_HOME/sqlplus/admin/glogin.sql
$ORACLE_HOME/bin/rman auxiliary / cmdfile=/backup/sql/restore_db_run msglog=/backup/restore_log/"$ORACLE_SID"_rman_restored_log_"$DATE".log
◎ Run DB-Restore Shell Script:
[oracle@TESTSVR]$ chmod 750 /scripts/restore_db_script.sh
[oracle@TESTSVR]$ ./scripts/restore_db_script.sh