Tuesday, 5 May 2026

Resolving MRP Failure with ORA-10567 in Oracle Data Guard (Standby Database)

Introduction

In an Oracle Data Guard environment, the Managed Recovery Process (MRP) plays a critical role in applying redo logs from the primary database to the standby database. Any disruption in MRP can directly impact data synchronization and disaster recovery readiness.

This blog explains a real-time issue where the MRP process terminated unexpectedly with ORA-10567 and ORA-00600 errors, along with the root cause analysis and step-by-step recovery solution.


Real-World Scenario

During routine monitoring of a physical standby database, it was observed that the MRP process had stopped unexpectedly. As a result, redo logs were no longer being applied, causing a gap between the primary and standby databases.

Further investigation of the alert log revealed internal errors related to block corruption. Since this was a production standby environment, immediate action was required to restore synchronization and avoid potential data protection risks.


Issue Description

The following errors were observed in the standby database alert log:

ORA-00600: internal error code, arguments: [3020], [7], [768706], [30128834], [], [], [], [], [], [], [], []
ORA-10567: Redo is inconsistent with data block (file# 7, block# 768706, file offset is 2002272256 bytes)
ORA-10564: tablespace TBS02
ORA-01110: data file 7: 'F:\APP\ADMINISTRATOR\ORADATA\TBS\TBS02.DBF'
ORA-10561: block type 'TRANSACTION MANAGED DATA BLOCK'

Root Cause Analysis

The error clearly indicates a data block corruption in the standby database datafile.

  • ORA-10567 → Redo does not match the data block
  • ORA-00600 [3020] → Internal error triggered due to inconsistency
  • Datafile 7 (TBS02) contains corrupted block

During redo apply, MRP attempts to apply changes to a corrupted block, which causes recovery to fail and terminate.


Solution

To resolve this issue, the corrupted datafile must be restored from the primary database and applied on the standby.


Step 1: Take Backup from Primary Database

Connect to RMAN on the primary database:

RMAN> rman target /

Take backup of the affected datafile:

RMAN> backup device type disk format 'F:\rman_backup_21\%U' datafile 7;

After the backup completes:

  • Copy the backup pieces to the standby server

Step 2: Restore Datafile on Standby

On the standby database:

Start and mount the standby:

SQL> startup nomount;
SQL> alter database mount standby database;

Connect to RMAN:

RMAN> rman target /

Catalog the backup location:

RMAN> catalog start with 'F:\rman_backup_21\' noprompt;

Restore the corrupted datafile:

RMAN> restore datafile 7;

Exit RMAN:

RMAN> exit;

Step 3: Restart MRP

SQL> recover managed standby database disconnect from session;

Validation

After recovery:

  • Verify MRP is running
  • Check alert log for errors
  • Monitor redo apply lag

Key Takeaways

  • ORA-10567 indicates redo inconsistency due to block corruption
  • MRP stops when encountering corrupted blocks
  • Restoring affected datafile from primary resolves the issue
  • Quick identification is critical to avoid data lag

No comments:

Post a Comment

  EBS ADOP Woes: Tackling ORA-20001 in Cleanup Phase   This blog aims to support DBAs who encounter issues during the EBS application R12.2 ...