Sunday, September 7, 2025

Recover Standby Database Using Incremental Backup

 ##############################################

# STEP 1: On STANDBY - Check current SCN

##############################################

sqlplus / as sysdba <<EOF

SELECT CURRENT_SCN FROM V\$DATABASE;

EXIT;

EOF


##############################################

# STEP 2: On PRIMARY - Take incremental backup

# Replace <STANDBY_SCN> with value from above

##############################################

rman target / <<EOF

BACKUP INCREMENTAL FROM SCN <STANDBY_SCN> DATABASE FORMAT '/u01/backup/incr/incr_%U.bkp';

BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/u01/backup/incr/standby_ctl.bkp';

EXIT;

EOF


##############################################

# STEP 3: Copy backup files to STANDBY server

##############################################

scp /u01/backup/incr/* oracle@standby:/u01/backup/incr/


##############################################

# STEP 4: On STANDBY - Catalog the backup pieces

##############################################

sqlplus /  as sysdba <<EOF 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

shut immediate;

startup nomount;

exit;

EOF 


rman target / <<EOF

CATALOG START WITH '/u01/backup/incr/';

EXIT;

EOF


##############################################

# STEP 5: On STANDBY - Restore standby controlfile

##############################################

rman target / <<EOF

RESTORE STANDBY CONTROLFILE FROM '/u01/backup/incr/standby_ctl.bkp';

EXIT;

EOF


##############################################

# STEP 6: Mount the STANDBY database

##############################################

sqlplus / as sysdba <<EOF

ALTER DATABASE MOUNT;

EXIT;

EOF


##############################################

# STEP 7: Apply incremental backup to STANDBY

##############################################

rman target / <<EOF

RECOVER DATABASE NOREDO;

EXIT;

EOF


##############################################

# STEP 8: Start managed recovery on STANDBY

##############################################

sqlplus / as sysdba <<EOF

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

EXIT;

EOF


##############################################

# STEP 9: Verify STANDBY synchronization

##############################################

sqlplus / as sysdba <<EOF

SELECT NAME, OPEN_MODE, DATABASE_ROLE, CURRENT_SCN FROM V\$DATABASE;

SELECT PROCESS, STATUS, THREAD#, SEQUENCE# FROM V\$MANAGED_STANDBY;

EXIT;

EOF

_________________________________________________________________________
Or 

Full Flow Using RMAN DUPLICATE (Easier Method)

Instead of manual steps, use DUPLICATE — RMAN handles everything automatically.

-- Connect to both primary and standby
RMAN> CONNECT TARGET sys/password@primary
RMAN> CONNECT AUXILIARY sys/password@standby

-- Duplicate to standby (using active database — no backup needed)

RMAN> DUPLICATE TARGET DATABASE
      FOR STANDBY
      FROM ACTIVE DATABASE
      DORECOVER
      SPFILE
        SET db_unique_name='STANDBY'
        SET log_archive_dest_1='LOCATION=/arch/standby/'
        SET fal_server='PRIMARY'
        SET standby_file_management='AUTO'
      NOFILENAMECHECK; 

OR using existing backups with duplicat command:-
RMAN> DUPLICATE TARGET DATABASE
      FOR STANDBY
      BACKUP LOCATION '/backup/standby/'
      DORECOVER
      NOFILENAMECHECK;

No comments:

Post a Comment

Enable OpenSSH on Windows 11

Step 1: Install OpenSSH Server You can do this via PowerShell (run as Administrator ): Check if it's already available: Get-WindowsCapab...