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

来源:互联网 发布:淘宝卖家主图视频教程 编辑:程序博客网 时间:2024/06/05 00:47

使用RMAN备份时遇到如下错误:

RMAN> backup full format '/home/oracle/backup/FULL_%t_%U' database plus archivelog;Starting backup at 05-AUG-17current log archivedallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=37 device type=DISKRMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-03002: failure of backup plus archivelog command at 08/05/2017 20:31:47RMAN-06059: expected archived log not found, loss of archived log compromises recoverabilityORA-19625: error identifying file /home/oracle/arch1_13_949547843.dbfORA-27037: unable to obtain file statusLinux-x86_64 Error: 2: No such file or directoryAdditional information: 3

不能识别归档文件,按照百度出来的方法,执行以下操作:

RMAN> change archivelog all crosscheck;

再执行备份就成功了。


想起来之前是因为我配置了参数log_archive_dest_1的路径,但是之后忘记了这回事,在那个路径下发现了一些文件,误认为是其他没用的文件,所以删除了,但是此时控制文件中的记录并没有删除,oracle认为此时这个文件还是存在的,当用RMAN备份的时候,控制文件中记录的归档日志的信息和实际情况是不一致的,就会报错说不能识别这个文件。交叉检查就是用来进行这种检验的,检查在RMAN中记录的备份的状态和在磁盘上实际存在的东西是不是一致的。

举个例子来说:

刚做好的全备

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

对/home/oracle/FULL_951252160_0csb5t60_1_1这个备份做一些修改,往里边添加一些字符,人为破坏掉它。

然后查看这个备份的状态,available,依旧是可用的,也就是说RMAN现在并不能知道这个备份已经坏掉了。

RMAN> list backup of database;using target database control file instead of recovery catalogList 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

要是执行交叉检查,就会发现问题了,此时的状态已经变成expired,过期的

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

所以我理解交叉检查就是会把控制文件中记录的信息和你真实物理位置的文件进行比较,列出过期不可用的备份都有哪些,这时候要做的工作就是删除这些不可用的备份或文件。接下来的工作就会正常执行了。

RMAN> delete expired backupset;using channel ORA_DISK_1List of Backup PiecesBP Key  BS Key  Pc# Cp# Status      Device Type Piece Name------- ------- --- --- ----------- ----------- ----------10      10      1   1   EXPIRED     DISK        /home/oracle/FULL_951252160_0csb5t60_1_1Do you really want to delete the above objects (enter YES or NO)? yes   deleted backup piecebackup piece handle=/home/oracle/FULL_951252160_0csb5t60_1_1 RECID=10 STAMP=951252162Deleted 1 EXPIRED objectsRMAN> crosscheck backup;using channel ORA_DISK_1backup piece handle=/home/oracle/backup/con_bak/CTL_c-1477328572-20170805-01 RECID=12 STAMP=951252929Crosschecked 1 objects


阅读全文
0 0