The One Data Guard Step I Missed: Forgetting Standby Redo Logs (And How I Fixed It)

Introduction 

Data Guard setups often appear straightforward on paper, but real-world environments have a way of exposing gaps in even the most familiar procedures. 

While creating a Physical Standby Database using RMAN Active Duplicate, I completed all the standard steps and enabled managed recovery successfully. Initially, everything looked fine — but soon I noticed a behavior that clearly indicated something wasn’t right. 

The root cause turned out to be a missing but critical step:
Standby Redo Logs (SRLs) were not created. 

This blog walks through: 

The symptoms I observed 

Why missing SRLs impact Data Guard 

How I identified the issue 

The correct and safe fix, with commands 

Lessons learned for future setups 

Initial Environment 

Oracle Physical Standby Database 

Created using RMAN Active Duplicate 

Redo transport configured 

Managed recovery started 

At a high level, the standby was functional — but not optimal. 

Symptoms Observed 

Over time, I noticed: 

Redo apply lag increasing intermittently 

Real-time apply not consistently active 

Standby applying redo only after log switches 

There was no obvious ORA- errors, which made the issue subtle and easy to overlook. 

Investigation & Root Cause 

The usual checks were performed: 

Managed Recovery Process (MRP) status 

Redo transport configuration 

Archive log generation and apply 

Then I verified the presence of Standby Redo Logs: 

SELECT GROUP#, THREAD#, STATUS FROM V$STANDBY_LOG; 

Result:
No rows were returned. 

This confirmed that Standby Redo Logs were never created. 

Why Standby Redo Logs Are Critical 

Standby Redo Logs are required for: 

Real-Time Apply 

Active Data Guard 

Reduced apply lag 

Smooth redo handling during log switches 

Without SRLs: 

Redo is written only to archived logs 

Apply waits for log switches 

Real-time recovery is not possible 

In short, Data Guard works — but not efficiently. 

The Correct Fix (Step-by-Step with Commands) 

Since the standby was already created and running, the fix needed to be safe and non-disruptive. 

1️⃣ Stop Managed Recovery 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 

2️⃣ Temporarily Set Standby File Management to MANUAL 

When standby_file_management is set to AUTO, Oracle does not allow manual file creation. 

To add SRLs manually, this must be changed: 

ALTER SYSTEM SET standby_file_management=MANUAL; 

3️⃣ Add Standby Redo Log Files 

Standby Redo Logs must: 

Match the size of primary redo logs 

Have at least one extra group per thread 

Example: 

ALTER DATABASE ADD STANDBY LOGFILE
(‘/u01/oradata/STBY/srl01.log’) SIZE 500M; 

ALTER DATABASE ADD STANDBY LOGFILE
(‘/u01/oradata/STBY/srl02.log’) SIZE 500M; 

Repeat as required based on primary configuration. 

4️⃣ Set Standby File Management Back to AUTO (Very Important) 

After manual creation, always revert the parameter: 

ALTER SYSTEM SET standby_file_management=AUTO; 

Leaving it as MANUAL can cause future issues with datafile creation. 

5️⃣ Restart Managed Recovery in Real-Time Apply Mode 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
USING CURRENT LOGFILE DISCONNECT; 

Verification 

Confirm that SRLs are present and in use: 

SELECT GROUP#, THREAD#, STATUS FROM V$STANDBY_LOG; 

Also check managed recovery status: 

SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY; 

After the fix: 

Redo started applying in real time 

Apply lag stabilized 

Standby behavior normalized 

Key Lessons Learned 

Data Guard can appear healthy even when critical components are missing 

Standby Redo Logs are not optional 

Always verify SRLs after creating a physical standby 

Not every Data Guard issue requires rebuilding the standby 

Safe parameter handling is essential in production environments 

Best Practices Going Forward 

Based on this experience, I now ensure: 

Standby Redo Logs are created before enabling redo transport 

SRL verification is part of the post-setup checklist 

standby_file_management is changed only temporarily when needed 

Real-time apply is always validated 

CONCLUSION 

Forgetting Standby Redo Logs didn’t break my Data Guard setup — but it silently reduced its effectiveness. Identifying and fixing this issue reinforced an important truth: 

Real DBA expertise is built by understanding why something works — not just following setup steps. 

I hope this real-world scenario helps other DBAs avoid the same pitfall.

Recent Posts