当前位置: 首页 > 工具软件 > backup-x > 使用案例 >

RMAN restore之RMAN-06023:no backup or copy of datafile X found to restore

陈渊
2023-12-01

当我们使用RMAN执行restore时,有时会碰到RMAN-06023: no backup or copy of datafile X found to restore

报错分析

这个报错的意思是,当数据库执行restore database/datafile时,找不到可用于restore指定文件的备份文件,有时候明明备份文件在指定目录里,就是无法用于restore,我们只要了解相关的原理,问题很好解决
当我们执行数据库备份时,oracle默认会把控制文件作为记录这些备份信息的地方(使用了catalog除外),当进行数据库restore操作时,oracle会到控制文件中去获取相关的信息,然后再到指定的路径下去查找备份文件用于restore操作,我们可以在rman下借助list命令查看相应的文件

RMAN> list backup of archivelog all;   ==> 查看所有归档日志的备份信息
RMAN> list backup of controlfile;        ==> 查看控制文件的备份信息
RMAN> list backup of tablespace users;   ==> 查看某个表空间的备份信息
RMAN> list backup of spfile;            ==> 查看spfile文件的备份信息
RMAN> list backup of database;     => 查看整个库的备份信息
RMAN> list backup of datafile X;     => 查看某个特定文件的备份信息

Eg: RMAN> list backup of datafile 1;

BS Key  Type LV Size       Device Type Elapsed Time Completion Time    
------- ---- -- ---------- ----------- ------------ -------------------
9730    Incr 0  330.25G    DISK        12:18:10     2021-04-04 16:18:15
        BP Key: 9730   Status: AVAILABLE  Compressed: YES  Tag: TAG20210404T040004
        Piece Name: /backup/rman/bak49.22/level0_ORCL_9736_1_g8vrdti5.bkp
  List of Datafiles in backup set 9730
  File LV Type Ckp SCN    Ckp Time            Name
  ---- -- ---- ---------- ------------------- ----
  1    0  Incr 104639102816 2021-04-04 04:00:05 /data/oradata/orcl/system01.dbf

通过以上的结果信息,我们需要关注的是:

1. 对应的备份文件需要存在,同时ORACLE用户需要有读的权限
$ ls -l /backup/rman/bak49.22/level0_ORCL_9736_1_g8vrdti5.bkp
-rwxrwxrwx 1 1005 10002 354607366144 Apr  4 16:18 /backup/rman/bak49.22/level0_ORCL_9736_1_g8vrdti5.bkp

2. 状态应该是:AVAILABLE的,而不是EXPIRED状态

可能原因及对应解决办法

1. 备份文件存放目录和备份时不一致,导致oracle在原来的路径下没有找到备份文件,常见于进行数据库迁移时

在这种情况下,通过list backup of ...... 命令是没有办法列出指定的备份文件信息的

解决办法:

RMAN> catalog start with '<backup directory>'   可把整个目录备份文件信息都catalog到control file中

2. 备份文件的状态为expired
可能之前crosscheck或者读取时路径不对,或者权限不对,导致Oracle把备份文件的状态标记为expired

解决办法:
重新执行crosscheck并根据crosscheck更改对应文件的状态
RMAN> change backup of database crosscheck;

 类似资料: