Saturday, April 21, 2018

Recover standby database using RMAN Incremental backup


1. Get current SCN from standby database 

sql > select current_scn from v$database;

2. Take rman backup and backup of controlfile from primary 

RMAN> backup incremental from scn 12252407093884 database format '/u03/rman_backup/inc_backup_%U';
RMAN> backup current controlfile for standby format '/u03/rman_backup/stnd_%U.ctl';

3. copy all backup pieces to standby and catalog it

RMAN> catalog start with '/u03/rman_backup/';

4. Restore standby database 

RMAN> recover database noredo;

5. shut down database, start in nomount mode and restore standby controlfile. restart db in mount mode

RMAN> shutdown immediate
RMAN> startup nomount
RMAN> restore standby controlfile from '/u03/rman_backup/stnd_12n6p3qt_1_1.ctl';

RMAN> <strong>shutdown immediate
RMAN> startup mount

6. if standby and primary database datafile location is diffrant then catalog standby datafiles and switch to datafile. 

RMAN> catalog start with '+DATA/SSSB/DATAFILE';
RMAN> switch database to copy;

7. Start Recovery. 

SQL> alter database recover managed standby database disconnectfrom session;

8. Switch logfile on primary and check gap. 

# On Primary 

sql > alter system switch logfile;

-- Query to check archivelog GAP on standby 

col SPACE_LIMIT_GB for 999,999,999,999
col SPACE_USED_GB for 999,999,999,999
col name for a30

SELECT ARCH.THREAD# "Thread",
         ARCH.SEQUENCE# "Last Sequence Received",
         APPL.SEQUENCE# "Last Sequence Applied",
         (ARCH.SEQUENCE# - APPL.SEQUENCE#) "Difference"
    FROM (SELECT THREAD#, SEQUENCE#
            FROM V$ARCHIVED_LOG
           WHERE (THREAD#, FIRST_TIME) IN (  SELECT THREAD#, MAX (FIRST_TIME)
                                               FROM V$ARCHIVED_LOG
                                           GROUP BY THREAD#)) ARCH,
         (SELECT THREAD#, SEQUENCE#
            FROM V$LOG_HISTORY
           WHERE (THREAD#, FIRST_TIME) IN (  SELECT THREAD#, MAX (FIRST_TIME)
                                               FROM V$LOG_HISTORY
                                           GROUP BY THREAD#)) APPL
   WHERE ARCH.THREAD# = APPL.THREAD# 
ORDER BY 1;

No comments:

Post a Comment