联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
有朋友从nbu中直接导出来img等格式文件(是oracle的rman 备份文件在其中)
但是该文件rman无法正常失败,不是有效的rman备份RMAN-06172
H:\TEMP\nbu_oracle12c_imgs>sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on 星期日 10月 19 13:03:01 2025 Copyright (c) 1982, 2016, Oracle. All rights reserved. 已连接到空闲例程。 SQL> startup nomount pfile='d:/pfile12.txt' ORA-32006: UTL_FILE_DIR initialization parameter has been deprecated ORACLE 例程已经启动。 Total System Global Area 4294967296 bytes Fixed Size 8755072 bytes Variable Size 1644169344 bytes Database Buffers 2634022912 bytes Redo Buffers 8019968 bytes SQL> exit 从 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 断开 H:\TEMP\nbu_oracle12c_imgs>rman target / 恢复管理器: Release 12.2.0.1.0 - Production on 星期日 10月 19 13:04:04 2025 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. 已连接到目标数据库: ORCL (未装载) RMAN> restore controlfile from 'H:\TEMP\nbu_oracle12c_imgs\ora12c_1760595637_C1_F1.1760595637.img'; 从位于 19-10月-25 的 restore 开始 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=1832 设备类型=DISK RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: 位于 10/19/2025 13:04:16 的 restore 命令失败 RMAN-06172: 没有找到 AUTOBACKUP, 或者指定的句柄不是有效副本或片段
通过分析可以通过人工构造出来rman的disk备份格式,中途借用了上次开发的把rman备份集从tape格式修改为disk格式的工具(RMAN SBT_TAPE备份通过小程序修改实现直接DISK通道还原),通过修复之后,生成的备份文件为:

再次尝试还原控制文件
RMAN> restore controlfile from 'H:\TEMP\nbu_oracle12c_imgs\NEW\ora12c_1760595637_C1_F1.1760595637.img.disk'; 从位于 19-10月-25 的 restore 开始 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=1832 设备类型=DISK 通道 ORA_DISK_1: 正在还原控制文件 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01 输出文件名=H:\TEMP\NBU_ORACLE12C_IMGS\NEW\CONTROL01.CTL 在 19-10月-25 完成了 restore RMAN> alter database mount; 已处理语句 释放的通道: ORA_DISK_1
看看当前备份集信息
RMAN> list backup; 备份集列表 =================== BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间 ------- ---- -- ---------- ----------- ------------ ---------- 1 Incr 0 647.00M SBT_TAPE 00:00:15 01-7月 -25 BP 关键字: 1 状态: AVAILABLE 已压缩: NO 标记: HOT_DB_BK_INC_LVL0 句柄: bk_1_1_1205357639 介质: /usr/openv/diskpool1//ora12c_1751376844_C1_F1 备份集 1 中的数据文件列表 File LV Type Ckp SCN Ckp 时间 Abs Fuz SCN Sparse Name ---- -- ---- ---------- ---------- ----------- ------ ---- 1 0 Incr 1603360 01-7月 -25 NO /u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_n67rkzok_.dbf 6 0 Incr 1603360 01-7月 -25 NO /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_n67rmpx2_.dbf BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间 ------- ---- -- ---------- ----------- ------------ ---------- 2 Incr 0 474.50M SBT_TAPE 00:00:29 01-7月 -25 BP 关键字: 2 状态: AVAILABLE 已压缩: NO 标记: HOT_DB_BK_INC_LVL0 句柄: bk_2_1_1205357639 介质: /usr/openv/diskpool1//ora12c_1751376863_C1_F1 备份集 2 中的数据文件列表 File LV Type Ckp SCN Ckp 时间 Abs Fuz SCN Sparse Name ---- -- ---- ---------- ---------- ----------- ------ ---- 3 0 Incr 1603361 01-7月 -25 NO /u01/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_n67rjlgp_.dbf 4 0 Incr 1603361 01-7月 -25 NO /u01/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_n67rmr26_.dbf BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间 ------- ---- -- ---------- ----------- ------------ ---------- 3 Incr 0 9.75M SBT_TAPE 00:00:12 01-7月 -25 BP 关键字: 3 状态: AVAILABLE 已压缩: NO 标记: HOT_DB_BK_INC_LVL0 句柄: bk_3_1_1205357665 介质: /usr/openv/diskpool1//ora12c_1751376878_C1_F1 包括的控制文件: Ckp SCN: 1603370 Ckp 时间: 01-7月 -25 BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间 ------- ---- -- ---------- ----------- ------------ ---------- 4 Incr 0 256.00K SBT_TAPE 00:00:00 01-7月 -25 BP 关键字: 4 状态: AVAILABLE 已压缩: NO 标记: HOT_DB_BK_INC_LVL0 句柄: bk_4_1_1205357675 介质: /usr/openv/diskpool1//ora12c_1751376882_C1_F1 包含的 SPFILE: 修改时间: 01-7月 -25 SPFILE db_unique_name: ORCL BS 关键字 大小 设备类型占用时间 完成时间 ------- ---------- ----------- ------------ ---------- 5 31.25M SBT_TAPE 00:00:05 01-7月 -25 BP 关键字: 5 状态: AVAILABLE 已压缩: NO 标记: TAG20250701T213457 句柄: al_5_1_1205357697 介质: /usr/openv/diskpool1//ora12c_1751376902_C1_F1 备份集 5 中的已存档日志列表 线程序列 低 SCN 时间下限 下一个 SCN 下一次 ---- ------- ---------- ---------- ---------- --------- 1 4 1599673 01-7月 -25 1603426 01-7月 -25 BS 关键字 大小 设备类型占用时间 完成时间 ------- ---------- ----------- ------------ ---------- 6 256.00K SBT_TAPE 00:00:08 01-7月 -25 BP 关键字: 6 状态: AVAILABLE 已压缩: NO 标记: TAG20250701T213457 句柄: al_6_1_1205357697 介质: /usr/openv/diskpool1//ora12c_1751376906_C1_F1 备份集 6 中的已存档日志列表 线程序列 低 SCN 时间下限 下一个 SCN 下一次 ---- ------- ---------- ---------- ---------- --------- 1 5 1603426 01-7月 -25 1603471 01-7月 -25 BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间 ------- ---- -- ---------- ----------- ------------ ---------- 7 Full 9.75M SBT_TAPE 00:00:06 01-7月 -25 BP 关键字: 7 状态: AVAILABLE 已压缩: NO 标记: TAG20250701T213513 句柄: cntrl_7_1_1205357713 介质: /usr/openv/diskpool1//ora12c_1751376919_C1_F1 包括的控制文件: Ckp SCN: 1603523 Ckp 时间: 01-7月 -25
通过控制文件中备份集的记录,可以看到备份是SBT_TAPE设备,介质是文件系统中的 /usr/openv/diskpool1/
catalog注册新的备份文件
RMAN> catalog start with 'H:\TEMP\nbu_oracle12c_imgs\*.disk'; 搜索与样式 H:\TEMP\nbu_oracle12c_imgs\*.disk 匹配的所有文件 数据库未知文件的列表 ===================================== 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595598_C1_F1.1760595598.IMG.DISK 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595618_C1_F1.1760595618.IMG.DISK 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595637_C1_F1.1760595637.IMG.DISK 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595642_C1_F1.1760595642.IMG.DISK 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595661_C1_F1.1760595661.IMG.DISK 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595665_C1_F1.1760595665.IMG.DISK 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595680_C1_F1.1760595680.IMG.DISK 是否确实要将上述文件列入目录 (输入 YES 或 NO)? yes 正在编制文件目录... 目录编制完毕 已列入目录的文件的列表 ======================= 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595598_C1_F1.1760595598.IMG.DISK 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595618_C1_F1.1760595618.IMG.DISK 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595637_C1_F1.1760595637.IMG.DISK 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595642_C1_F1.1760595642.IMG.DISK 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595661_C1_F1.1760595661.IMG.DISK 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595665_C1_F1.1760595665.IMG.DISK 文件名: H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595680_C1_F1.1760595680.IMG.DISK
使用rman还原新数据文件
RMAN> report schema; RMAN-06139: 警告: 控制文件对于 REPORT SCHEMA 不是最新 db_unique_name 为 ORCL 的数据库的数据库方案报表 永久数据文件列表 =========================== 文件大小 (MB) 表空间 回退段数据文件名称 ---- -------- -------------------- ------- ------------------------ 1 780 SYSTEM *** /u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_n67rkzok_.dbf 3 580 SYSAUX *** /u01/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_n67rjlgp_.dbf 4 60 UNDOTBS1 *** /u01/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_n67rmr26_.dbf 6 5 USERS *** /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_n67rmpx2_.dbf 临时文件列表 ======================= 文件大小 (MB) 表空间 最大大小 (MB) 临时文件名称 ---- -------- -------------------- ----------- -------------------- 1 60 TEMP 32767 /u01/app/oracle/oradata/ORCL/datafile/o1_mf_temp_n67roknm_.tmp RMAN> RUN { 2> set newname for datafile 1 to 'H:\TEMP\nbu_oracle12c_imgs\NEW\system01.dbf'; 3> set newname for datafile 3 to 'H:\TEMP\nbu_oracle12c_imgs\NEW\sysaux01.dbf'; 4> set newname for datafile 4 to 'H:\TEMP\nbu_oracle12c_imgs\NEW\undotbs01.dbf'; 5> set newname for datafile 6 to 'H:\TEMP\nbu_oracle12c_imgs\NEW\users01.dbf'; 6> restore database; 7> switch datafile all; 8> } 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 从位于 19-10月-25 的 restore 开始 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在开始还原数据文件备份集 通道 ORA_DISK_1: 正在指定从备份集还原的数据文件 通道 ORA_DISK_1: 将数据文件 00003 还原到 H:\TEMP\nbu_oracle12c_imgs\NEW\sysaux01.dbf 通道 ORA_DISK_1: 将数据文件 00004 还原到 H:\TEMP\nbu_oracle12c_imgs\NEW\undotbs01.dbf 通道 ORA_DISK_1: 正在读取备份片段 H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595598_C1_F1.1760595598.IMG.DISK 通道 ORA_DISK_1: 片段句柄=H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595598_C1_F1.1760595598.IMG.DISK 标记=HOT_DB_BK_INC_LVL0 通道 ORA_DISK_1: 已还原备份片段 1 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01 通道 ORA_DISK_1: 正在开始还原数据文件备份集 通道 ORA_DISK_1: 正在指定从备份集还原的数据文件 通道 ORA_DISK_1: 将数据文件 00001 还原到 H:\TEMP\nbu_oracle12c_imgs\NEW\system01.dbf 通道 ORA_DISK_1: 将数据文件 00006 还原到 H:\TEMP\nbu_oracle12c_imgs\NEW\users01.dbf 通道 ORA_DISK_1: 正在读取备份片段 H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595618_C1_F1.1760595618.IMG.DISK 通道 ORA_DISK_1: 片段句柄=H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595618_C1_F1.1760595618.IMG.DISK 标记=HOT_DB_BK_INC_LVL0 通道 ORA_DISK_1: 已还原备份片段 1 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01 在 19-10月-25 完成了 restore 数据文件 1 已转换成数据文件副本 输入数据文件副本 RECID=5 STAMP=1214913255 文件名 = H:\TEMP\NBU_ORACLE12C_IMGS\NEW\SYSTEM01.DBF 数据文件 3 已转换成数据文件副本 输入数据文件副本 RECID=6 STAMP=1214913255 文件名 = H:\TEMP\NBU_ORACLE12C_IMGS\NEW\SYSAUX01.DBF 数据文件 4 已转换成数据文件副本 输入数据文件副本 RECID=7 STAMP=1214913255 文件名 = H:\TEMP\NBU_ORACLE12C_IMGS\NEW\UNDOTBS01.DBF 数据文件 6 已转换成数据文件副本 输入数据文件副本 RECID=8 STAMP=1214913255 文件名 = H:\TEMP\NBU_ORACLE12C_IMGS\NEW\USERS01.DBF
尝试还原归档日志
RMAN> restore archivelog sequence 7; 从位于 19-10月-25 的 restore 开始 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在开始将归档日志还原到默认目标 通道 ORA_DISK_1: 正在还原归档日志 归档日志线程 = 1 序列 = 7 通道 ORA_DISK_1: 正在读取备份片段 H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595661_C1_F1.1760595661.IMG.DISK 通道 ORA_DISK_1: 片段句柄=H:\TEMP\NBU_ORACLE12C_IMGS\ORA12C_1760595661_C1_F1.1760595661.IMG.DISK 标记=TAG20251016T142056 通道 ORA_DISK_1: 已还原备份片段 1 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01 在 19-10月-25 完成了 restore
通过上述操作证明,通过对nbu的img文件进行二次修复,然后直接实现rman还原数据库.