Oracle Standby Recovery Guide for Archive Gap Resolution

dataguard
Oracle Standby Recovery: Fix Archive Gap in Oracle 19c Data Guard

Oracle 19c Data Guard Recovery

1. Objective

Restore synchronization between DATAVERA primary and DATAVERADR physical standby while minimizing RPO impact using the least disruptive method first.

2. Environment Scope

RoleEnvironment
Primary DBDATAVERA — Oracle 19c Production
Standby DBDATAVERADR — Physical Standby DR
Sync TargetZero transport lag / Zero apply lag

3. Initial Gap Validation

Check Lag

-- Run on DATAVERADR
SELECT name, value
FROM v$dataguard_stats
WHERE name IN ('transport lag','apply lag');

Check Archive Gap

-- Run on DATAVERADR
SELECT thread#, low_sequence#, high_sequence#
FROM v$archive_gap;

Check Recovery State

-- Run on DATAVERADR
SELECT process, status, thread#, sequence#
FROM v$managed_standby;

Expected: MRP0 | WAIT_FOR_GAP

4. Recovery Method Hierarchy

MethodWhen to UsePriorityRisk
Archive Log Manual TransferLogs exist in FRA1stLow
Service-Based RecoveryLogs unavailable, network healthy2ndMedium
SCN IncrementalLarge unresolved gap3rdHigh

5. Option 1 — Archive Log Manual Transfer

-- Run on DATAVERADR
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
-- Run on DATAVERA-- you need to update the example sequence to actual sequence 
SELECT sequence#, name
FROM v$archived_log
WHERE sequence# BETWEEN 10577 AND 10676
ORDER BY sequence#;
-- Run on DATAVERA OS
scp /fra/DATAVERA/arch_10577*.arc oracle@dataveradr:/fra/DATAVERADR/
scp /fra/DATAVERA/arch_10578*.arc oracle@dataveradr:/fra/DATAVERADR/
-- Continue sequence transfer until gap closes
-- Run on DATAVERADR
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
Preferred when archive logs still exist because no RMAN recovery is needed.

6. Option 2 — Recovery From Service

-- Run on DATAVERADR
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
-- Run on DATAVERADR OS
rman target /
RMAN> RECOVER STANDBY DATABASE FROM SERVICE DATAVERA;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
Best when FRA logs are unavailable but network path to primary is stable.

7. Option 3 — SCN Incremental Recovery

-- Run on DATAVERADR
SELECT CURRENT_SCN FROM v$database;
-- Run on DATAVERA RMAN
BACKUP INCREMENTAL FROM SCN 4823901 DATABASE FORMAT '/backup/inc_%U';
---Transfer the backups from the Primary  to DR Server.
scp /backup/inc_*.bkp oracle@dataveradr:/backup/
-- Run on DATAVERADR
CATALOG START WITH '/backup/';
RECOVER DATABASE NOREDO;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

8. Validation After Recovery

-- Run on DATAVERADR
SELECT name, value
FROM v$dataguard_stats
WHERE name IN ('transport lag','apply lag','apply finish time');

SELECT process, status
FROM v$managed_standby
WHERE process LIKE 'MRP%';

SELECT * FROM v$archive_gap;
Expected: zero lag, MRP0 APPLYING_LOG, archive gap returns no rows.

9. Operational Guidance

StepMethodImpact
1Archive TransferNo production load
2Service RecoveryMinimal primary read I/O
3SCN IncrementalBackup + transfer overhead
Caution
The information provided in this document is intended for educational and internal reference purposes only. Although the procedure has been tested internally, no guarantee is given that it will behave identically in all environments. Use this guide at your own risk, and always validate the complete process in a test environment before applying it to production systems.
Oracle 19c Data Guard Recovery

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top