RMAN-06023 : no backup or copy of datafile found to restore 说明

本文详细描述了使用RMAN进行备份与恢复时遇到的问题,包括控制文件过旧、增量备份与验证过程中的错误,并提供了多种解决方案。通过重新创建0级备份,问题最终得以解决。同时,验证了1级备份的恢复可行性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RMAN的备份信息如下:

RMAN> list backupset summary;

List of Backups

===============

KeyTY LV S Device Type Completion Time #Pieces #Copies Compressed Tag

------- -- -- - ----------- --------------- ------- ------- ---------- ---

9b1a disk01-jun-1111nodave_lev1

10b1a disk01-jun-1111nodave_lev1

13baa disk01-jun-1111noarc_bak

14baa disk01-jun-1111noarc_bak

15baa disk01-jun-1111noarc_bak

16baa disk01-jun-1111noarc_bak

17baa disk01-jun-1111noarc_bak

18baa disk01-jun-1111noarc_bak

19baa disk01-jun-1111noarc_bak

20baa disk01-jun-1111noarc_bak

21baa disk01-jun-1111noarc_bak

22bfa disk01-jun-1111nobak_ctlfile

23bfa disk01-jun-1111nospfile

RMAN> crosscheck backup;

using channel ORA_DISK_1

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/dave_lev1_0cmdpuof_1_1_20110601 recid=9 stamp=752679695

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/dave_lev1_0bmdpuoe_1_1_20110601 recid=10 stamp=752679695

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/arch_0fmdpven_1_1_20110601 recid=13 stamp=752680408

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/arch_0gmdpven_1_1_20110601 recid=14 stamp=752680422

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/arch_0hmdpvj4_1_1_20110601 recid=15 stamp=752680549

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/arch_0imdpvj5_1_1_20110601 recid=16 stamp=752680582

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/arch_0jmdpvo4_1_1_20110601 recid=17 stamp=752680709

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/arch_0kmdpvo5_1_1_20110601 recid=18 stamp=752680721

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/arch_0mmdpvss_1_1_20110601 recid=19 stamp=752680863

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/arch_0lmdpvsr_1_1_20110601 recid=20 stamp=752680860

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/arch_0nmdpvv0_1_1_20110601 recid=21 stamp=752680929

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/ctl_file_0omdpvv7_1_1_20110601 recid=22 stamp=752680937

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/u01/backup/dave_spfile_0pmdpvva_1_1_20110601 recid=23 stamp=752680939

Crosschecked 13 objects

但是restore validate的时候,报错:

RMAN>restore database validate;

Starting restore at 01-JUN-11

using channel ORA_DISK_1

RMAN-00571: =================================================

RMAN-00569: ===== ERROR MESSAGE STACK FOLLOWS ====

RMAN-00571: ==========================================

RMAN-03002: failure of restore command at 06/01/2011 21:21:28

RMAN-06026: some targets not found - aborting restore

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

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

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

一般来说,遇到这种问题是因为控制过旧,即控制文件中没有备份的信息。

比如在nocatalog模式下,备份数据文件之前,先备份控制文件,然后在备份数据库。在还原的时候,先还原还原控制文件,此时的控制文件中并没有包含RMAN备份的信息,这时进行恢复就会遇到RMAN-06023的错误。但我这里控制文件没有修改。所以不是这个原因造成。

google一下。有网友通过以下几种方法解决了这个问题:

1. shutdown abort。

2. crosscheck backup

3设置DBID

4.重建UNDO Tablespace

这几种方法是问题的一方面,不过我遇到的情况还有一个特殊性。就是我的RMAN采用了增量备份,但是我没有做0级备份,而是直接用1级备份。这种情况下,RMAN发现没有0级备份,所以此时的1级备份也相当于0级备份。

尝试重新做了一次0级备份,在次validate,居然ok了。

RMAN> RESTORE DATABASE VALIDATE;

Starting restore at 01-JUN-11

using channel ORA_DISK_1

channel ORA_DISK_1: starting validation of datafile backupset

channel ORA_DISK_1: reading from backup piece /u01/backup/dave_lev0_10mdqqtd_1_1_20110601

channel ORA_DISK_1: restored backup piece 1

piece handle=/u01/backup/dave_lev0_10mdqqtd_1_1_20110601 tag=DAVE_LEV0

channel ORA_DISK_1: validation complete, elapsed time: 00:00:07

channel ORA_DISK_1: starting validation of datafile backupset

channel ORA_DISK_1: reading from backup piece /u01/backup/dave_lev0_0vmdqqtd_1_1_20110601

channel ORA_DISK_1: restored backup piece 1

piece handle=/u01/backup/dave_lev0_0vmdqqtd_1_1_20110601 tag=DAVE_LEV0

channel ORA_DISK_1: validation complete, elapsed time: 00:00:15

Finished restore at 01-JUN-11

正常情况下直接进行1级备份也是可以进行恢复的。所以不应该出现这种问题。所以在进行一次测试,就是使用1级备份进行恢复,看这种备份能否正常用于恢复。

到另一台单实例测试库上进行一下测试。上面这台是我的RAC测试库,折腾坏了,一时也没空去捣鼓。

备份脚本参考:

Nocatalog下的RMAN增量备份shell脚本

http://blog.youkuaiyun.com/tianlesoftware/archive/2011/01/26/6164931.aspx

先做一个1级备份:

RMAN> list backup summary;

using target database control file instead of recovery catalog

List of Backups

===============

keyty lv s device type completion time #pieces #copies compressed tag

------- -- -- - ----------- --------------- ------- ------- ---------- ---

5b1a disk02-jun-1111nodave_lev1

6b1a disk02-jun-1111nodave_lev1

9baa disk02-jun-1111noarc_bak

10baa disk02-jun-1111noarc_bak

11bfa disk02-jun-1111nobak_ctlfile

12bfa disk02-jun-1111nospfile

用restore进行一次验证:

RMAN> restore database validate;

Starting restore at 02-JUN-11

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=148 devtype=DISK

channel ORA_DISK_1: starting validation of datafile backupset

channel ORA_DISK_1: reading from backup piece /u01/backup/dave_lev1_0amdrva4_1_1_20110602

channel ORA_DISK_1: restored backup piece 1

piece handle=/u01/backup/dave_lev1_0amdrva4_1_1_20110602 tag=DAVE_LEV1

channel ORA_DISK_1: validation complete, elapsed time: 00:00:08

channel ORA_DISK_1: starting validation of datafile backupset

channel ORA_DISK_1: reading from backup piece /u01/backup/dave_lev1_09mdrva3_1_1_20110602

channel ORA_DISK_1: restored backup piece 1

piece handle=/u01/backup/dave_lev1_09mdrva3_1_1_20110602 tag=DAVE_LEV1

channel ORA_DISK_1: validation complete, elapsed time: 00:00:16

Finished restore at 02-JUN-11

居然没有报错,灵异事件啊。

灵异就灵异吧,继续验证下这个1级备份的恢复问题。

RMAN> shutdown immediate

database closed

database dismounted

Oracle instance shut down

RMAN> startup mount;

connected to target database (not started)

Oracle instance started

database mounted

Total System Global Area239075328 bytes

Fixed Size1218700 bytes

Variable Size83887988 bytes

Database Buffers146800640 bytes

Redo Buffers7168000 bytes

RMAN> restore database;

Starting restore at 02-JUN-11

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=157 devtype=DISK

channel ORA_DISK_1: starting datafile backupset restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

restoring datafile 00002 to /u01/app/oracle/oradata/dave1/undotbs01.dbf

restoring datafile 00003 to /u01/app/oracle/oradata/dave1/sysaux01.dbf

restoring datafile 00005 to /u01/app/oracle/oradata/dave1/example01.dbf

channel ORA_DISK_1: reading from backup piece /u01/backup/dave_lev1_0amdrva4_1_1_20110602

channel ORA_DISK_1: restored backup piece 1

piece handle=/u01/backup/dave_lev1_0amdrva4_1_1_20110602 tag=DAVE_LEV1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:25

channel ORA_DISK_1: starting datafile backupset restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

restoring datafile 00001 to /u01/app/oracle/oradata/dave1/system01.dbf

restoring datafile 00004 to /u01/app/oracle/oradata/dave1/users01.dbf

channel ORA_DISK_1: reading from backup piece /u01/backup/dave_lev1_09mdrva3_1_1_20110602

channel ORA_DISK_1: restored backup piece 1

piece handle=/u01/backup/dave_lev1_09mdrva3_1_1_20110602 tag=DAVE_LEV1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:35

Finished restore at 02-JUN-11

RMAN> recover database;

Starting recover at 02-JUN-11

using channel ORA_DISK_1

starting media recovery

media recovery complete, elapsed time: 00:00:06

Finished recover at 02-JUN-11

RMAN> alter database open;

database opened

这种1级备份可以用来恢复。之前还遇到过一次rman过期备份集在自动备份脚本里用:delete noprompt expired backup;不能删除的问题。

有遇到这种情况的同学也可以说说。

-------------------------------------------------------------------------------------------------------

<think>好的,用户遇到了RMAN备份命令失败的问题,具体错误是RMAN-03009和ORA-27041。我需要先分析这两个错误的含义以及可能的原因。 首先,RMAN-03009表示在指定的通道(这里是c2)上执行备份命令时失败。而ORA-27041是操作系统级别的错误,通常与文件无法打开有关。根据引用[1]中的内容,可能需要检查Oracle Advanced Security选项是否安装,尤其是当备份到磁盘时需要加密的情况。不过用户的问题可能更多涉及文件路径或权限问题。 接下来,ORA-27041的具体原因可能包括目标文件或目录不存在、权限不足,或者存储空间不足。用户需要确认备份目标路径是否正确,并且Oracle用户是否有写入权限。引用[3]提到了创建多个目录,比如/u01/app/oracle/fast_recovery_area等,这些目录可能和备份路径有关。如果备份脚本中指定的路径没有正确创建或权限设置不当,就会导致这个问题。 另外,检查通道配置是否正确,备份集的位置是否有效。例如,如果使用磁盘通道,需要确保BACKUP DESTINATION的路径存在且可写。如果是磁带备份,可能需要确认Oracle Secure Backup配置是否正确,如引用[1]中提到的使用SBT接口。 可能的解决步骤包括:验证备份路径是否存在,检查目录权限,确认存储空间,以及查看通道配置。此外,还可以查看详细的日志文件,获取更多错误信息,帮助进一步诊断问题。用户可能需要按照引用[3]中的目录结构创建相应的文件夹,并设置正确的权限,比如使用mkdir -p命令创建目录,并赋予Oracle用户适当的权限。 最后,确保RMAN的加密配置正确,特别是如果启用了加密功能,需要确认已安装Oracle Advanced Security选项,如引用[1]所述。如果问题仍然存在,可能需要检查操作系统级别的错误日志,或者尝试重新配置备份通道。</think>以下是针对RMAN备份失败错误$RMAN-03009$和$ORA-27041$的解决方案分析: ### 错误原因分析 1. **文件路径问题** - 备份目标路径不存在或不可访问 - 权限不足导致Oracle进程无法写入(建议检查$oracle$用户对目标目录的读写权限)[^3] 2. **存储空间不足** - 检查目标存储设备剩余空间:`df -h /备份路径` 3. **通道配置错误** - 通道参数配置与实际存储类型不匹配(如将磁盘通道误配为磁带) 4. **加密配置冲突** - 若使用加密备份需确认已安装Oracle Advanced Security选项[^1] ### 分步解决方案 #### 步骤1:验证路径有效性 ```bash # 检查路径是否存在(示例路径) ls -ld /u01/app/oracle/fast_recovery_area/DG02/controlfile # 创建缺失目录(按需修改路径) mkdir -p /your/backup/path && chown -R oracle:oinstall /your/backup/path ``` #### 步骤2:检查通道配置 ```sql RMAN> show channel; -- 确认通道类型与存储介质匹配 -- 正确磁盘通道示例 CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/%U'; ``` #### 步骤3:空间检查 ```bash # 检查文件系统空间 df -h | grep backup # 检查ASM磁盘组空间(若使用ASM) asmcmd lsdg ``` #### 步骤4:错误日志分析 ```bash # 查看alert.log获取详细信息 tail -100f $ORACLE_BASE/diag/rdbms/${ORACLE_SID}/${ORACLE_SID}/trace/alert_${ORACLE_SID}.log ``` ### 补充说明 若需恢复控制文件,可参考命令: ```sql RMAN> restore controlfile from '/u01/backup/ctl_file_04mr66b3_1_1_20111108'; -- [^2] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值