Oracle RMAN Crosscheck Archivelog - Fix RMAN-06059 Error
Oracle RMAN Crosscheck Archivelog - Fix RMAN-06059 Error
Purpose
The change archivelog all crosscheck command is an Oracle Recovery Manager (RMAN) utility that synchronizes the RMAN repository metadata with the physical reality of archived redo log files. This command specifically resolves the RMAN-06059 error, which occurs when RMAN expects an archived log file but cannot find it on disk or tape storage. The crosscheck operation validates whether archived logs registered in the RMAN repository still exist at their recorded locations and updates their status accordingly.
Breakdown of Code
Command
1change archivelog all crosscheck;
Command Structure
The command consists of three components that work together to validate archived log inventory:
- change - RMAN maintenance command that modifies the status of backup objects in the repository
- archivelog all - Specifies that all archived redo log files should be examined, regardless of sequence number or date
- crosscheck - Operation that verifies physical existence of files against RMAN metadata records
When executed, RMAN allocates a disk channel automatically and scans every archived log entry in its repository. For each log file, it checks if the physical file exists at the recorded location. Files that cannot be found are marked as EXPIRED, while accessible files retain their AVAILABLE status.
Key Points
When to Use This Command
This command should be executed in specific situations rather than as part of regular backup scripts:
- After receiving RMAN-06059 error during backup operations
- When archived log files have been manually deleted or moved using operating system commands
- Following filesystem failures or storage hardware issues
- When RMAN repository metadata becomes out of sync with actual file locations
Important Behavior
The crosscheck command has specific limitations and characteristics:
- Does not delete any physical files from disk or tape storage
- Does not remove repository records from the RMAN catalog or control file
- Only updates the status metadata (AVAILABLE or EXPIRED) for each archived log
- Requires SYSDBA privileges for proper execution
- Processes all archived logs recorded in the repository, which can be time-consuming for large databases
Understanding RMAN-06059 Error
Error Definition
The RMAN-06059 error displays as "expected archived log not found, lost of archived log compromises recoverability". This error indicates that RMAN's repository metadata references an archived log file that no longer exists at its recorded location. The error typically appears with accompanying Oracle errors ORA-19625 (error identifying file) and ORA-27037 (unable to obtain file status).
Root Causes
Several scenarios can trigger this error:
- Manual deletion of archived log files using operating system commands while RMAN repository still references them
- Archived log filesystem becoming full, causing administrators to move or remove files
- Network file system disconnections or mount point failures
- Hardware failures affecting storage devices where archived logs reside
Solution Process
Step-by-Step Resolution
To resolve RMAN-06059 error, follow this procedure:
- Connect to RMAN with appropriate credentials:
rman target /orrman catalog=user/password@catalog_sid target=user/password@target_sid - Execute the crosscheck command:
RMAN> change archivelog all crosscheck; - Review the validation output showing which logs failed validation
- List expired logs if needed:
RMAN> list expired archivelog all; - Delete expired log references from repository:
RMAN> delete expired archivelog all; - Retry the backup operation that previously failed
Command Variations
Oracle RMAN supports multiple crosscheck syntax options:
crosscheck archivelog all- Standard syntax for checking all archived logscrosscheck archivelog sequence 180- Check specific sequence numbercrosscheck archivelog sequence between 180 and 196- Check range of sequencescrosscheck archivelog from sequence 180 until sequence 196- Alternative range syntax
Insights and Best Practices
Avoid Routine Crosschecking
Database administrators should not include crosscheck operations in regular automated backup scripts. When crosscheck runs before backup and marks missing logs as expired, the backup command silently ignores those expired logs instead of failing. This behavior masks the loss of archived logs, potentially creating gaps in recoverability that administrators never notice.
Manual Execution Recommendation
The crosscheck command should be executed manually only when needed:
- Including it in scheduled backup scripts increases backup duration without significant benefit
- Automated crosschecking prevents early detection of missing archived logs
- Manual execution after suspected issues provides better control and awareness of database state
Difference from CROSSCHECK ARCHIVELOG ALL
While both change archivelog all crosscheck and crosscheck archivelog all serve similar purposes, they use different RMAN syntax patterns. Both commands check whether registered archived redo logs still exist and update their status to EXPIRED if not found. The change syntax is commonly referenced in error resolution documentation for RMAN-06059.
Recovery Implications
Logs marked as EXPIRED cannot be used for point-in-time recovery. If your recovery strategy requires restoring the database to a point in time covered by an expired log, you must restore that log from offsite tape vaults or cloud archives before the recovery operation can proceed. The presence of expired logs in the repository indicates potential gaps in your recovery chain that require immediate attention.
References
- RMAN-06059 - Database Error Messages - Oracle Help Center - Official Oracle documentation explaining the RMAN-06059 error cause and resolution
- CROSSCHECK - Oracle Help Center - Complete reference documentation for the RMAN CROSSCHECK command with syntax and examples
- How to fix RMAN-06059/ORA-19625? - Alex Lima - Practical guide demonstrating how change archivelog all crosscheck resolves RMAN-06059 error
- RMAN-06059: expected archived log not found - Veritas - Technical solution article explaining the crosscheck command for fixing missing archived log errors
- Oracle 12c - Why you shouldn't do a crosscheck archivelog all in your regular RMAN backup scripts - Expert analysis explaining why routine crosschecking can hide problems rather than solve them
- How Does Crosscheck Archivelog All Work in Oracle RMAN Backups? - Comprehensive guide covering crosscheck functionality and best practices for Oracle RMAN
- Oracle RMAN-06059 expected archived log not found - Quest Support - Detailed troubleshooting steps for resolving RMAN-06059 with crosscheck operations
- Bad to crosscheck archivelog all - Thinking Out Loud - Analysis of why crosschecking archived logs can cause backup operations to silently skip missing files