在将一个0级备份的数据库还原到其它机器上时,首先遇到了RMAN-06023然后遇到ORA-19693错误,错误发生的环境和内容大致如下:
数据库版本:

SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

开始还原数据库:

startup nomount;
RMAN> restore controlfile from 'I:\backup\C-2711934557-20150401-02_NSOA_CONTROLFILE_20150401';
启动 restore 于 2015-04-10 15:09:01
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=129 设备类型=DISK 通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:08
输出文件名=I:\NSOADP\CONTROL01.CTL
完成 restore 于 2015-04-10 15:09:10 RMAN> alter database mount;
RMAN>run
{
allocate channel dev type disk;
allocate channel dev1 type disk;
set newname for datafile 1 to 'd:\nsoadp\SYSTEM01.DBF';
set newname for datafile 2 to 'd:\nsoadp\SYSAUX01.DBF';
set newname for datafile 4 to 'd:\nsoadp\USERS01.DBF';
……………
restore database;
switch datafile all;
recover database;
release channel dev;
release channel dev1;
}
正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME
………
启动 restore 于 2015-04-10 15:30:19
通道 dev: 正在开始还原数据文件备份集
通道 dev: 正在指定从备份集还原的数据文件
RMAN-06026: 有些目标没有找到 - 终止还原
RMAN-06023: 没有找到数据文件4的副本来还原
RMAN-06023: 没有找到数据文件2的副本来还原
RMAN-06023: 没有找到数据文件1的副本来还原

但实际在0级备份中是包含这些数据文件的:

RMAN> list backup of datafile 4,2,1;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ -------------------
10071 Incr 0 30.29G DISK 02:46:53 2015-04-01 13:29:12
BP 关键字: 10071 状态: AVAILABLE 已压缩: YES 标记: NSOA_BACKUP_INCR0
段名:I:\BACKUP\B_NSOA_10193_UHQ39J0B_20150401
备份集 10071 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ------------------- ----
4 0 Incr 13625590769939 2015-04-01 10:42:20 G:\U09\ORADATA\NSOA\USERS01.DBF BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ -------------------
10072 Incr 0 29.04G DISK 02:47:11 2015-04-01 13:29:30
BP 关键字: 10072 状态: AVAILABLE 已压缩: YES 标记: NSOA_BACKUP_INCR0
段名:I:\BACKUP\B_NSOA_10192_UGQ39J0B_20150401
备份集 10072 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ------------------- ----
1 0 Incr 13625590769907 2015-04-01 10:42:19 G:\U07\ORADATA\NSOA\SYSTEM01.DBF
2 0 Incr 13625590769907 2015-04-01 10:42:19 G:\U08\ORADATA\NSOA\SYSAUX01.DBF

因此可以确定,备份文件本身是没有问题的,问题出在

If we start a RESTORE database with a BACKUP controlfile and Flash Recovery Area is defined, RMAN execute and implicit crosscheck and catalog of all the objects in the Flash Recovery Area.
RMAN
will catalog any objects in the Flash Recovery Area that will not be
registered in the controlfile and if any of this files belongs to an
incarnation different from CURRENT incarnation in the controlfile
then changes
controlfile CURRENT incarnation to the one found in the file that is
being cataloged.

This
prevents database from restoring backups that belong to old CURRENT
incarnation

RMAN
considers backup availble for being restored if the backup
incarnation and CURRENT incarnation in controlfile are the same.

根据文档说明,我设置了db_recovery_file_dest和 db_recovery_file_dest_size参数并重新还原了控制文件,然后在还原时将catalog 指向我的备份文件所在目录:

RMAN> restore controlfile from 'I:\backup\C-2711934557-20150401-02_NSOA_CONTROLFILE_20150401';
RMAN> alter database mount;
RMAN> catalog start with 'I:\backup'; 启动 implicit crosscheck backup 于 2015-04-10 15:09:40
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=129 设备类型=DISK
已交叉检验的 29 对象
完成 implicit crosscheck backup 于 2015-04-10 15:10:37 启动 implicit crosscheck copy 于 2015-04-10 15:10:37
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 于 2015-04-10 15:10:37 搜索恢复区中的所有文件
正在编制文件目录...
没有为文件编制目录 搜索与样式 I:\backup 匹配的所有文件 数据库未知文件的列表
=====================================
文件名: I:\backup\ARC_NSOA_10197_ULQ3A10I_20150401
文件名: I:\backup\ARC_NSOA_10198_UMQ3A10I_20150401
………
是否确实要将上述文件列入目录 (输入 YES 或 NO)? yes
正在编制文件目录...
目录编制完毕

目录编制完毕后我验证了还原, RMAN-06023 错误不在报了,但出现了另一个隐含的错误:

RMAN> restore database preview;

启动 restore 于 2015-04-10 15:45:41
使用通道 ORA_DISK_1
备份集列表
===================
BS 关键字 类型 LV 大小
------- ---- -- ----------
10072 Incr 0 29.04G
备份集 10072 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ------------------- ----
1 0 Incr 13625590769907 2015-04-01 10:42:19 G:\U07\ORADATA\NSOA\SYSTEM01.DBF
2 0 Incr 13625590769907 2015-04-01 10:42:19 G:\U08\ORADATA\NSOA\SYSAUX01.DBF
11 0 Incr 13625590769907 2015-04-01 10:42:19 G:\U13\ORADATA\NSOA\FRDC_TABLESPACE.DBF
15 0 Incr 13625590769907 2015-04-01 10:42:19 G:\U10\ORADATA\NSOA\TBS_ZG.DBF
………
介质恢复启动 SCN 是 13625590769793
恢复范围必须超出 SCN 13625591441474 才能清除数据文件模糊性
完成 restore 于 2015-04-10 15:46:27

我当时并没有意识到什么错误,所以我便开始了还原,但不幸ORA-19693来了:

RMAN>run
{
allocate channel dev type disk;
allocate channel dev1 type disk;
set newname for datafile 1 to 'd:\nsoadp\SYSTEM01.DBF';
set newname for datafile 2 to 'd:\nsoadp\SYSAUX01.DBF';
set newname for datafile 4 to 'd:\nsoadp\USERS01.DBF';
……………
restore database;
switch datafile all;
recover database;
release channel dev;
release channel dev1;
}
正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME
………
通道 dev: 将数据文件 00004 还原到 d:\nsoadp\USERS01.DBF
释放的通道: dev
释放的通道: dev1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 04/10/2015 15:51:10 上) 失败
ORA-19693: 已包括备份片段 I:\BACKUP\B_NSOA_10193_UHQ39J0B_20150401
ORA-19693: backup piece string already included
Cause: This backup piece was already specified for inclusion in the restore conversation. A restore conversation may process only a single instance of a backup piece.
Action: Remove the specified duplicate backup piece in restore steps and restart the conversation.
我顿时迷惑了,好端端的0级备份怎么就会有duplicate backup,so 我用list 查看了备份:
RMAN> list backup;
BS 关键字 类型 LV 大小
------- ---- -- ----------
10071 Incr 0 30.29G
备份集 10071 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ------------------- ----
4 0 Incr 13625590769939 2015-04-01 10:42:20 G:\U09\ORADATA\NSOA\USERS01.DBF 备份集 副本号 1 属于备份集 10071
设备类型 经过时间 完成时间 压缩标记
----------- ------------ ------------------- ---------- ---
DISK 02:46:53 2015-04-01 13:29:12 YES NSOA_BACKUP_INCR0 备份集 10071 副本号 1的备份片段列表
BP 关键字 Pc# 状态 段名称
------- --- ----------- ----------
10071 1 AVAILABLE I:\BACKUP\B_NSOA_10193_UHQ39J0B_20150401 备份集 副本号 2 属于备份集 10071
设备类型 经过时间 完成时间 压缩标记
----------- ------------ ------------------- ---------- ---
DISK 02:46:53 2015-04-10 18:00:58 YES NSOA_BACKUP_INCR0 备份集 10071 副本号 2的备份片段列表
BP 关键字 Pc# 状态 段名称
------- --- ----------- ----------
10123 1 AVAILABLE I:\BACKUP\B_NSOA_10193_UHQ39J0B_20150401 备份集 副本号 3 属于备份集 10071
设备类型 经过时间 完成时间 压缩标记
----------- ------------ ------------------- ---------- ---
DISK 02:46:53 2015-04-10 18:17:41 YES NSOA_BACKUP_INCR0 备份集 10071 副本号 3的备份片段列表
BP 关键字 Pc# 状态 段名称
------- --- ----------- ----------
10152 1 AVAILABLE I:\BACKUP\B_NSOA_10193_UHQ39J0B_20150401

What is backup piece?
 A backup set contains one or more binary files in an RMAN-specific format. This file is known as a backup piece. A backup set can contain multiple datafiles. For example, you can back up ten datafiles into a single backup set consisting of a single backup piece. In this case, RMAN creates one backup piece as output. The backup set contains only this backup piece.

接着使用change 命令uncatalog 重复的piece:

RMAN> change backuppiece 'I:\BACKUP\B_NSOA_10193_UHQ39J0B_20150401' uncatalog;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: uncatalog 命令 (在 04/10/2015 15:52:48 上) 失败
RMAN-20261: 含糊的备份片段句柄
RMAN-06092: 查找备份片段时出错 RMAN> change backuppiece 10123 uncatalog;
未将备份片段列入目录
备份片段句柄=I:\BACKUP\B_NSOA_10193_UHQ39J0B_20150401 RECID=10123 STAMP=876669065
未分类的 1 对象 RMAN> change backuppiece 10152 uncatalog;
未将备份片段列入目录
备份片段句柄=I:\BACKUP\B_NSOA_10193_UHQ39J0B_20150401 RECID=10152 STAMP=876670068
未分类的 1 对象

Uncatalog 后还原正常了,但我有些糊涂了,便想起了备份通道的问题,也就有了如下的猜测,面对大的库,备份分配多个通道执行并行备份不是显著提高备份效率吗?为什么我的备份会产生duplicate pieces,是否和多通道有关系?以下是我的备份脚本:

run{
allocate channel dev type disk;
allocate channel dev1 type disk;
allocate channel dev2 type disk;
backup incremental level 0 database
format 'I:\BackUp\PRACTICE\db_%d_%s_%p_%T'
tag 'WHOLE_INCL0';
release channel dev;
release channel dev1;
release channel dev2;
}

欢迎知情人士指导,谢谢!

--The end (2015-04-10)

Oracle RMAN-06023 和ORA-19693错误的更多相关文章

  1. oracle rman异机恢复

      Oracle源主机 Oracle目标主机 主机平台 CentOS6.2(final) CentOs6.2(FInal) 主机名 vick rman IP地址 192.168.1.11 192.16 ...

  2. Oracle RMAN 学习:恢复

    Oracle RMAN 学习:恢复 6 rman恢复 Rman中的恢复对应restore,recover Restore,数据修复,利用备份集的数据文件来替换已损坏的数据文件或将其恢复到另外一个位置, ...

  3. Oracle RMAN 学习:演练进阶篇

    Oracle RMAN 学习:演练进阶篇 5 Rman备份演练进阶篇 5.1 是否选择增量备份 Backup命令生成的备份集中只备份了那些使用了的数据块,备份集实际大小已经较目标数据库的数据文件小了很 ...

  4. Oracle RMAN 学习

    Oracle RMAN 学习:三思笔记 1 进入rman Rman--物理备份(结构/数据) 1 本地db Cmd set oracle_sid=orcl 1 rman target / Rman&g ...

  5. Oracle归档日志所在目录时间不对&&Oracle集群日志时间显示错误

    Oracle归档日志所在目录时间不对&&Oracle集群日志时间显示错误 前言 这个问题在18年的时候遇到了,基本不注意并且集群或者数据库运行正常是很难注意到的. 忘记当时怎么发现的了 ...

  6. Oracle RMAN备份策略

    建立增量备份:如果数据库运行于不归档模式下,只能在数据库干净关闭的情况下 ( 以 normal .immediate . transactional 方式关闭 ) 才能进行一致性的增量备份,如果数据库 ...

  7. Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法

    Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法 登陆数据库时提示 “ORA-01033”错误在命令窗口以s ...

  8. Oracle问题之ORA-12560TNS:协议适配器错误

    Oracle问题之ORA-12560TNS:协议适配器错误 一.造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个: 1.监听服务没有起起来.windows平台个一如下操作:开始-- ...

  9. [Oracle][RMAN] Use RMAN to Migrate database from CentOS_5-11201-SingleDB to OracleLinux_5-11204-SingleDB

    リンク:How to Move/Restore DB to New Host and File System using RMAN (Doc ID 1338193.1)https://docs.ora ...

  10. [Oracle][RMAN]关于Oracle RMAN里面的Merged Incremental Backups的Tag分离机能

    关于Oracle RMAN里面的Merged Incremental Backups的机能,RMAN使用的比较多的DBA们可能会有所了解. 基本上,每次都实行同样的Backup命令即可完成BACK. ...

随机推荐

  1. Java中如何查看一个类依赖的包

    Java中如何查看一个类依赖的包 如图, 我如何知道JSONArray是依赖的哪一个包呢,这里有两个json-lib包?   测试语句:   public static void main(Strin ...

  2. Java编程打印出1000以内所有的完数

    /*如果一个数等 于其所有因子之和,我们就称这个数为"完数" * 例如6的因子为1,2,3, 6=1+2+3, 6就是一一个完数. * 请编程打印出1000以内所有的完数*/ pu ...

  3. 安装nagios检测hadoop

    Nagios是常用的系统监控工具,提供了很多基本服务的监控脚本,如HTTP,MYSQL等,同时具有不错的可扩展性,自己可定制针对特定参数的监控脚本以及报警的方式. 我现在有三台机器:192.168.0 ...

  4. 建立SIP通话

    建立SIP: 点击下的出现的页面: 选择submit,只用填写用户名和密码就OK了,secret是密码,填写完以后记得应用 创建完毕以后,使用xlite去连接:xlite的配置:域名是asterisk ...

  5. python学习(二十) Python 中的比较:is 与 ==

    Python 中的比较:is 与 == 在 Python 中会用到对象之间比较,可以用 ==,也可以用 is .但是它们的区别是什么呢? is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象 ...

  6. 在CentOS 7中使用VS Code编译调试C++项目

    1. 安装VSCODE 见VSCode官方链接 https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based ...

  7. C++ 单链表操作总结

    第一.单链表的定义和操作 #include <iostream> using namespace std; template <typename T> struct Node ...

  8. 10g RAC常用开启关闭命令 – SRVCTL用法

    10G RAC: srvctl 1. Grammar: srvctl <command> <object> [<options]] available <comma ...

  9. python 之 functools模块

    functools模块用于高阶函数:作用于或返回其他函数的函数.一般而言,任何可调用对象都可以作为本模块用途的函数来处理. 官方文档已经有了详尽的介绍,这里就不在复述,详情请见:官方文档 .这里主要介 ...

  10. OD 实验(七) - 对一个程序的破解和去广告

    程序: 这里有很多的动态链接库 双击运行程序 这个程序有次数限制 按钮也在隐藏处 主界面 退出程序,会弹出一个广告 目的: 让程序的使用次数不受限制,且没有显示次数的窗口 去除程序关闭时候的广告 逆向 ...