ORA-19625: error identifying file /home/oracle/arch1_13_949547843.dbf ORA-27037: unable to obtain fi

The following error is encountered when using RMAN backup:

RMAN> backup full format '/home/oracle/backup/FULL_%t_%U' database plus archivelog;

Starting backup at 05-AUG-17
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=37 device type=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup plus archivelog command at 08/05/2017 20:31:47
RMAN-06059: expected archived log not found, loss of archived log compromises recoverability
ORA-19625: error identifying file /home/oracle/arch1_13_949547843.dbf
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

If the archive file cannot be recognized, perform the following operations according to the method provided by Baidu:

RMAN> change archivelog all crosscheck;

Then perform the backup successfully.


I remembered that it was because I configured the path of the parameter log_archive_dest_1, but then I forgot about it. I found some files in that path, mistaken it for other useless files, so I deleted them, but at this time the control file in the file The record is not deleted. Oracle thinks that the file still exists at this time. When using RMAN to back up, the information of the archive log recorded in the control file is inconsistent with the actual situation, and an error will be reported saying that the file cannot be recognized. Cross-checking is used to perform this check, checking that the state of the backup recorded in RMAN matches what actually exists on disk.

For example:

just ready

RMAN> list backup of database;

List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
10      Full    1.02G      DISK        00:12:30     05-AUG-17      
        BP Key: 10   Status: AVAILABLE  Compressed: NO  Tag: TAG20170805T204240
        Piece Name: /home/oracle/FULL_951252160_0csb5t60_1_1
  List of Datafiles in backup set 10
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 1163458    05-AUG-17 /u01/app/oracle/oradata/orcl/system01.dbf
  2       Full 1163458    05-AUG-17 /u01/app/oracle/oradata/orcl/sysaux01.dbf
  3       Full 1163458    05-AUG-17 /u01/app/oracle/oradata/orcl/undotbs01.dbf
  4       Full 1163458    05-AUG-17 /u01/app/oracle/oradata/orcl/users01.dbf

Make some modifications to the backup /home/oracle/FULL_951252160_0csb5t60_1_1, add some characters to it, and destroy it artificially.

Then check the status of the backup, available, which is still available, which means that RMAN does not know that the backup is broken now.

RMAN> list backup of database;

using target database control file instead of recovery catalog

List of Backup Sets
===================


BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
10      Full    1.02G      DISK        00:12:30     05-AUG-17      
        BP Key: 10   Status: AVAILABLE  Compressed: NO  Tag: TAG20170805T204240
        Piece Name: /home/oracle/FULL_951252160_0csb5t60_1_1
  List of Datafiles in backup set 10
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 1163458    05-AUG-17 /u01/app/oracle/oradata/orcl/system01.dbf
  2       Full 1163458    05-AUG-17 /u01/app/oracle/oradata/orcl/sysaux01.dbf
  3       Full 1163458    05-AUG-17 /u01/app/oracle/oradata/orcl/undotbs01.dbf
  4       Full 1163458    05-AUG-17 /u01/app/oracle/oradata/orcl/users01.dbf

If you perform a cross-check, you will find the problem, the status at this time has become expired, expired

RMAN> crosscheck backupset;

using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1 device type=DISK
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/home/oracle/FULL_951252160_0csb5t60_1_1 RECID=10 STAMP=951252162
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/home/oracle/backup/con_bak/CTL_c-1477328572-20170805-01 RECID=12 STAMP=951252929
Crosschecked 2 objects

So I understand that the cross-check is to compare the information recorded in the control file with the files in your actual physical location, and list the expired and unavailable backups. The work to be done at this time is to delete these unavailable backups or files. . The next work will be executed normally.

RMAN> delete expired backupset;

using channel ORA_DISK_1

List of Backup Pieces
BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
10      10      1   1   EXPIRED     DISK        /home/oracle/FULL_951252160_0csb5t60_1_1

Do you really want to delete the above objects (enter YES or NO)? yes   
deleted backup piece
backup piece handle=/home/oracle/FULL_951252160_0csb5t60_1_1 RECID=10 STAMP=951252162
Deleted 1 EXPIRED objects


RMAN> crosscheck backup;

using channel ORA_DISK_1
backup piece handle=/home/oracle/backup/con_bak/CTL_c-1477328572-20170805-01 RECID=12 STAMP=951252929
Crosschecked 1 objects


Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325869991&siteId=291194637