RESOLVING ARCHIVEGAP IN DATAGUARD

PROCESS 1: -

If missing fewer archives on standby.

Please use below query to find out archive gap on Standby:

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;

 

Thread  Last Sequence Received   Last Sequence Applied     Difference

———-  ———————-                          ———————        ———-  

1                   9545                                             9535                   10

 

SQL> SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE APPLIED=’YES’;

 MAX(SEQUENCE#)

————–

9535

 

COPY ARCHIVELOG FILE TO STANDBY FROM PRIMARY:

$scp log_file_n.arc oracle@10.201.210.11:/log_location/log_file_n.arc

Repeat the same process for all the log files which are missing at standby.

REGISTER LOGFILE AT STANDBY:

SQL> alter database register logfile ‘/log_location/log_file_n.arc’; logfile registered

 

PROCESS 2: -

If archive gap difference is huge (let’s assume more than 600 logs)

Find the SCN on the PRIMARY:

select current_scn from v$database;

 

CURRENT_SCN

———–  

242571761

Find the SCN on the STANDBY:

 select current_scn from v$database;

CURRENT_SCN

———–  

223771173

Clearly you can see there is difference

Stop and shutdown the managed standby apply process:

alter database recover managed standby database cancel;

Database altered.

Shutdown the standby database

shut immediate

On the primary, take an incremental backup from the SCN number where the standby current value 223771173:

 RMAN> run 
{ 
allocate channel c1 type disk format ‘/backup/%U.bkp;
backup incremental from scn 223771173 database;
 }

On the primary, create a new standby control file:

alter database create standby controlfile as ‘/backup/for_standby.ctl;
 
Database altered.

Copy the standby control file to STANDBY and bring up the standby instance in no mount status with standby control file:

startup nomount
alter database mount standby database;

Connect to RMAN on STANDBY, Catalog backup files to RMAN using below commands:

$ rman target /
RMAN> catalog start with ‘/backup’;

PERFORM RECOVER:

RMAN> recover database noredo;

 

Why noredo option is used in recover database;

 Because the online redo logs are lost, you must specify the NOREDO option in the RECOVER command.

You must also specify NOREDO if the online logs are available but the redo cannot be applied to the incremental. If you do not specify NOREDO, then RMAN searches for redo logs after applying the incremental backup, and issues an error message when it does not find them.)

Start managed recovery process:

SQL> alter database recover managed standby database disconnect from session;
Database altered.

Check the SCN’s in primary and standby it should be close to each other.

Find the SCN on the PRIMARY:

SQL> select current_scn from v$database;

 

CURRENT_SCN

———–

Find the SCN on the STANDBY:

SQL> select current_scn from v$database;

CURRENT_SCN

———–

 

Tags: 

0 points
up
down