The Problem
Archives were moved from their original archivelog destination to a new location. Experienced the following errors when running RMAN backup of the archivelogs:
RMAN-06059: expected archived log not found ORA-19625: error identifying file /zklpdata/archive/zkpd/arch_1_44543_466886099.arc ORA-27037: unable to obtain file status IBM AIX RISC System/6000 Error: 2: No such file or directory Additional information: 3
The Solution
RMAN is attempting to backup this archivelog file but is not able to access the physical file on disk, because either the archivelog file is manually moved or deleted at the operating system level, and RMAN metadata is not updated. The steps required depend on if the archivelog file exists based on the name and location returned by the error. Thus the first step is to check for the existence of the archivelog file.
Case 1 – Archiveloags moved to a different location
If the archivelog files have been moved to a different directory, then they can be moved back to their original directory. Otherwise, you can make RMAN aware of their new location using the following RMAN “catalog” command for each archivelog. The catalog command will update the database controlfile with the new location of the archivelogs.
RMAN> catalog archivelog '/temp/archive/zkpd/arch_1_44543_466886099.arc';
Starting in Oracle10g, if several archivelog files are effected, you may issue the RMAN command “catalog start with” as follows:
RMAN> catalog start with '[new_directory_of_archivelogs]';
For example:
RMAN> catalog start with '/temp/archive/zkpd/';
Now backup will find these files in the new location, as well as any new ones in the older location.
Case 2 – Archivelogs are deleted manually
If the archivelogs are no longer physically available, then you can issue the RMAN command “crosscheck copy of archivelog all“.
RMAN> crosscheck copy of archivelog all;
This command checks for the physical existence of the archivelog file and will change the V$ARCHIVED_LOG.STATUS of the affected archivelog from “A” for AVAILABLE to “X” for EXPIRED. Once the archivelog file has a status of X, RMAN will no longer attempt to backup this archivelog file.
SQL> select sequence#,deleted,status from v$archived_log;
Expired logs that are no longer physically available should be removed from the RMAN repository:
RMAN>delete expired archivelog all;
Conclusion
We recommend that you always use RMAN to delete archived redo log files and backup pieces from the backup media. If you use an OS command to delete files, then RMAN is unaware that the files have been removed from the backup media. When RMAN is unaware that the files are removed, then you will have to run a crosscheck command to update the target database control file and recovery catalog (if using one).
When running the crosscheck archivelog all command, RMAN will change the status of an archived redo log file to EXPIRED if it cannot locate the file. RMAN will not attempt to back up an archived redo log file with an EXPIRED status.
The catalog command is handy because you can use it to update the RMAN repository with information about relocated archived redo log files, RMAN backup pieces, and image copies. Use the catalog start with the command to tell RMAN which directory to look in for your relocated files.