Steps to Resolve Errors RMAN-03009, ORA-19870, ORA-19599

As an Oracle DBA, I encountered a challenging issue while restoring a backup using RMAN. The restore failed because of a corrupted backup piece for datafile 50, throwing errors about block corruption and channel issues. Here is a detailed step-by-step resolution. I hope this is helpful for you as it was for me.

The Errors

During the restoration, RMAN reported:

---Corrupt block 19866 found during reading backup piece, file=/dir/testbackup/p89pmji_765440_1_1, corr_type=-2
RMAN-06100: no channel to restore a backup or copy of datafile 50
rman-06094: datafile 50 must be restored

Step 1: Identify the Backup Set and run Validate backupset

I queried RMAN to confirm the backup piece for datafile 50:

RMAN> list backup of datafile 50;
List of Backup Pieces for backup set 98689 Copy #2
BP Key  Pc# Status      Piece Name
------- --- ----------- ----------
98651   1   AVAILABLE   /dir/testbackup/p89pmji_765440_1_1

Backup set 98689 included the corrupt piece. I validated it:

RMAN> validate backupset 98689;

Starting validate at 28-APR-25

using channel ORA_DISK_1

channel ORA_DISK_1: starting validation of datafile backup set

channel ORA_DISK_1: reading from backup piece /testbackup/p89pmji_765440_1_1

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03009: failure of validate command on ORA_DISK_1 channel at 04/05/2025 13:13:36

ORA-19870: error while restoring backup piece /dir/testbackup/p89pmji_765440_1_1

ORA-19599: block number 19866 is corrupt in backup piece /dir/testbackup/p89pmji_765440_1_1

The validation failed proving the backup piece /dir/testbackup/p89pmji_765440_1_1 was corrupt, preventing restoration of datafile 50.

Step 2: Verify Backup File Integrity

To diagnose, I compared the backup piece on the target server (where I was restoring) with the source server (where the backup was created, luckily it had not been archived) using cksum.

Target Server:

[oracle@target testbackup]$ cksum /dir/testbackup/p89pmji_765440_1_1
3296017808 224378880 /dir/testbackup/p89pmji_765440_1_1

Source Server:

[oracle@source testbackup]$ cksum /testbackup/p89pmji_765440_1_1
3739089964 224378880 /testbackup/p89pmji_765440_1_1

The checksum for p89pmji_765440_1_1 differed (target: 3296017808, source: 3739089964), confirming the target’s file was corrupt.

Step 3: Replace the Corrupt Backup Piece

Since the source server’s p89pmji_765440_1_1 had the correct checksum (3739089964), I recopied it to the target, overwriting the corrupt file:

I verified the new file’s checksum on the target:

[oracle@target testbackup]$ cksum /dir/testbackup/p89pmji_765440_1_1
3739089964 224378880 /dir/testbackup/p89pmji_765440_1_1

This matched the source, confirming the file was now correct.

Step 4: Re-Validate and Restore

I re-ran the validation:

RMAN> validate backupset 98689;
Starting validate at 28-APR-25

using channel ORA_DISK_1

channel ORA_DISK_1: starting validation of datafile backup set

channel ORA_DISK_1: reading from backup piece /testbackup/p89pmji_765440_1_1

channel ORA_DISK_1: errors found reading piece handle=/testbackup/p89pmji_765440_1_1

channel ORA_DISK_1: failover to piece handle=/dir/testbackup/p89pmji_765440_1_1 tag=TAG19900227T26578

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: validation complete, elapsed time: 00:00:35

Finished validate at 28-APR-25

It completed successfully. Then, I was able to fully restore the backup.

The restoration succeeded, resolving the RMAN-06100, RMAN-06094, ORA-19870, and ORA-19599 errors.

This methodical approach restored the database without data loss. For similar RMAN issues, verify file integrity with cksum and validate backups—it’s a lifesaver!

0
Subscribe to my newsletter

Read articles from Olamigoke Oyeneyin directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Olamigoke Oyeneyin
Olamigoke Oyeneyin

An experienced database administrator that loves exploring.