群里 苏州-孤星 问了一个问题:

先用RMAN backup database,然后做一些操作,在用backup archvivelog all delete input 备份归档日志并删除备份过的归档日志。 那么RMAN 在进行recover的时候,怎么应用备份的归档文件。

我的回答:

在进行recover 的时候,会先将备份的归档文件还原到归档目录,然后从这个目录应用归档文件,完成恢复的过程。 我们看2个实验。

一. 实验一

这个实验是我之前做RMAN 同机复制的一个实验。

RMAN 同机复制数据库

http://blog.csdn.net/tianlesoftware/archive/2010/07/19/5747442.aspx

1.1  RMAN 备份的脚本:

RMAN>RUN {

allocate channel c1 type disk;

allocate channel c2 type disk;

BACKUP FORMAT '/u02/backup/orcl_%U_%T' skip inaccessible filesperset 5  DATABASE TAG orcl_hot_db_bk;

sql 'alter system archive log current';

BACKUP FORMAT '/u02/backup/arch_%U_%T' skip inaccessible filesperset 5 ARCHIVELOG ALL DELETE INPUT;

backup current controlfile tag='bak_ctlfile' format='/u02/backup/ctl_file_%U_%T';

backup spfile tag='spfile' format='/u02/backup/ORCL_spfile_%U_%T';

release channel c2;

release channel c1;

}

1.2  Recover 还原的日志:

contents of Memory Script:

{

set until scn  697286;

recover

clone database

delete archivelog

;

}

executing Memory Script

executing command: SET until clause

Starting recover at 18-JUL-10 -- 开始recover 恢复数据

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: sid=155 devtype=DISK

starting media recovery

channel ORA_AUX_DISK_1: starting archive log restore to default destination

-- 先将归档日志还原到指定的归档目录: log_archive_dest 参数指定

channel ORA_AUX_DISK_1: restoring archive log

archive log thread=1 sequence=41

channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/arch_3dlj3bro_1_1_20100718

channel ORA_AUX_DISK_1: restored backup piece 1

piece handle=/u02/backup/arch_3dlj3bro_1_1_20100718 tag=TAG20100718T110111

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02

--- 将sequence 为41的日志restore 到 指定的归档日志,然后进行restore。

channel ORA_AUX_DISK_1: starting archive log restore to default destination

channel ORA_AUX_DISK_1: restoring archive log

archive log thread=1 sequence=40

channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/arch_3clj3bro_1_1_20100718

channel ORA_AUX_DISK_1: restored backup piece 1

piece handle=/u02/backup/arch_3clj3bro_1_1_20100718 tag=TAG20100718T110111

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01

archive log filename=/u01/archivelog/1_40_720642866.dbf thread=1 sequence=40

--- 将sequence 为40的日志restore 到 指定的归档日志,然后进行restore。

channel clone_default: deleting archive log(s)

archive log filename=/u01/archivelog/1_40_720642866.dbf recid=2 stamp=724679053

archive log filename=/u01/archivelog/1_41_720642866.dbf thread=1 sequence=41

channel clone_default: deleting archive log(s)

archive log filename=/u01/archivelog/1_41_720642866.dbf recid=1 stamp=724679052

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

Finished recover at 18-JUL-10

--- recover 结束后,删除所有的还原的归档日志。

1.3 从上面这段脚本我们看出,RMAN 在duplicate中进行recover 归档文件的过程是:

1.3.1. 从备份集中将归档文件restore 到指定的归档目录。 这个目录由log_archive_dest 参数指定。然后应用这个归档文件。

1.3.2. 从上面的log 可以看出,这个recover 是按归档文件来的,就是一个接一个的处理。先从备份集中restore 一个到归档目录,然后应用它。 做完这个做另一个。 知道把备份集中所有的归档文件全部recover 完毕。

1.3.3. 删除所有还原到归档目录的归档日志。 (由recover database 命令中的delete archivelog参数决定)。

二. 实验二

实验一是我进行RMAN duplicate 时产生的日志。 Duplicate 把RMAN 的相关命令都组合起来,方便我们来操作。我们可以通过日志看到它的执行过程。

现在直接用RMAN 做一个测试,来进一步验证实验一的结果。 我按照 苏州-孤星 的步骤来做,先备份数据库,在备份归档日志。

2.1 先看一个我修改过的2个参数:

RMAN> show all;

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   'F:/backup/orcl_%U.bak';

2.2   备份数据库:

RMAN> backup database;

启动 backup 于 24-8月 -10

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集内的数据文件

输入数据文件: 文件号=00001 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSTEM01.DBF

输入数据文件: 文件号=00002 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSAUX01.DBF

输入数据文件: 文件号=00003 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/UNDOTBS01.DBF

输入数据文件: 文件号=00006 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/DBA1.DBF

输入数据文件: 文件号=00005 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/DAVE0.DBF

输入数据文件: 文件号=00007 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/CATALOG1.DBF

输入数据文件: 文件号=00008 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/CATALOG_TS1.DBF

输入数据文件: 文件号=00004 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF

通道 ORA_DISK_1: 正在启动段 1 于 24-8月 -10

通道 ORA_DISK_1: 已完成段 1 于 24-8月 -10

段句柄=F:/BACKUP/ORCL_36LM695P_1_1.BAK 标记=TAG20100824T232232 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:02:25

完成 backup 于 24-8月 -10

启动 Control File and SPFILE Autobackup 于 24-8月 -10

段 handle=D:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHOME_1/DATABASE/C-1247395743-20100824-00 comment=NONE

完成 Control File and SPFILE Autobackup 于 24-8月 -10

2.3   对数据库做一些修改,这里我们创建一个大表。

SQL> create  table RMAN_TEST as select * from dba_objects;

表已创建。

SQL> select count(*) from RMAN_TEST;

COUNT(*)

----------

72924

SQL> alter system archive log current ;

系统已更改。

2.4   备份归档日志

RMAN> backup archivelog all delete input;

启动 backup 于 24-8月 -10

当前日志已存档

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: SID=272 设备类型=DISK

通道 ORA_DISK_1: 正在启动归档日志备份集

通道 ORA_DISK_1: 正在指定备份集内的归档日志

输入归档日志线程=1 序列=79 RECID=244 STAMP=727826447

输入归档日志线程=1 序列=80 RECID=245 STAMP=727909238

输入归档日志线程=1 序列=81 RECID=246 STAMP=727918107

输入归档日志线程=1 序列=82 RECID=247 STAMP=727918139

输入归档日志线程=1 序列=83 RECID=248 STAMP=727918197

输入归档日志线程=1 序列=84 RECID=249 STAMP=727918241

输入归档日志线程=1 序列=85 RECID=250 STAMP=727918309

通道 ORA_DISK_1: 正在启动段 1 于 24-8月 -10

通道 ORA_DISK_1: 已完成段 1 于 24-8月 -10

段句柄=F:/BACKUP/ORCL_38LM69N6_1_1.BAK 标记=TAG20100824T233150 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:15

通道 ORA_DISK_1: 正在删除归档日志

归档日志文件名=D:/ARCHIVELOG/ORCL_1_79_723633464.ARC RECID=244 STAMP=727826447

归档日志文件名=D:/ARCHIVELOG/ORCL_1_80_723633464.ARC RECID=245 STAMP=727909238

归档日志文件名=D:/ARCHIVELOG/ORCL_1_81_723633464.ARC RECID=246 STAMP=727918107

归档日志文件名=D:/ARCHIVELOG/ORCL_1_82_723633464.ARC RECID=247 STAMP=727918139

归档日志文件名=D:/ARCHIVELOG/ORCL_1_83_723633464.ARC RECID=248 STAMP=727918197

归档日志文件名=D:/ARCHIVELOG/ORCL_1_84_723633464.ARC RECID=249 STAMP=727918241

归档日志文件名=D:/ARCHIVELOG/ORCL_1_85_723633464.ARC RECID=250 STAMP=727918309

完成 backup 于 24-8月 -10

启动 Control File and SPFILE Autobackup 于 24-8月 -10

段 handle=D:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHOME_1/DATABASE/C-1247395743-20100824-01 comment=NONE

完成 Control File and SPFILE Autobackup 于 24-8月 -10

注意:这里备份了7个归档文件。 已经检查,并确认D:/ARCHIVELOG 没有了任何归档文件。

2.5   Restore database

2.5.1 先将数据库关闭,并启动到mount 状态。

2.5.2 还原数据库

RMAN> restore database;

启动 restore 于 24-8月 -10

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: SID=260 设备类型=DISK

通道 ORA_DISK_1: 正在开始还原数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集还原的数据文件

通道 ORA_DISK_1: 将数据文件 00001 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSTEM01.DBF

通道 ORA_DISK_1: 将数据文件 00002 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSAUX01.DBF

通道 ORA_DISK_1: 将数据文件 00003 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/UNDOTBS01.DBF

通道 ORA_DISK_1: 将数据文件 00004 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF

通道 ORA_DISK_1: 将数据文件 00005 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/DAVE0.DBF

通道 ORA_DISK_1: 将数据文件 00006 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/DBA1.DBF

通道 ORA_DISK_1: 将数据文件 00007 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/CATALOG1.DBF

通道 ORA_DISK_1: 将数据文件 00008 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/CATALOG_TS1.DBF

通道 ORA_DISK_1: 正在读取备份片段 F:/BACKUP/ORCL_36LM695P_1_1.BAK

通道 ORA_DISK_1: 段句柄 = F:/BACKUP/ORCL_36LM695P_1_1.BAK 标记 = TAG20100824T232232

通道 ORA_DISK_1: 已还原备份片段 1

通道 ORA_DISK_1: 还原完成, 用时: 00:09:26

完成 restore 于 24-8月 -10

2.6   应用归档日志

RMAN> recover database;

启动 recover 于 24-8月 -10

使用通道 ORA_DISK_1

正在开始介质的恢复

通道 ORA_DISK_1: 正在开始将归档日志还原到默认目标

通道 ORA_DISK_1: 正在还原归档日志

归档日志线程=1 序列=81

通道 ORA_DISK_1: 正在还原归档日志

归档日志线程=1 序列=82

通道 ORA_DISK_1: 正在还原归档日志

归档日志线程=1 序列=83

通道 ORA_DISK_1: 正在还原归档日志

归档日志线程=1 序列=84

通道 ORA_DISK_1: 正在还原归档日志

归档日志线程=1 序列=85

通道 ORA_DISK_1: 正在读取备份片段 F:/BACKUP/ORCL_38LM69N6_1_1.BAK

通道 ORA_DISK_1: 段句柄 = F:/BACKUP/ORCL_38LM69N6_1_1.BAK 标记 = TAG20100824T233150

通道 ORA_DISK_1: 已还原备份片段 1

通道 ORA_DISK_1: 还原完成, 用时: 00:00:15

归档日志文件名=D:/ARCHIVELOG/ORCL_1_81_723633464.ARC 线程=1 序列=81

归档日志文件名=D:/ARCHIVELOG/ORCL_1_82_723633464.ARC 线程=1 序列=82

归档日志文件名=D:/ARCHIVELOG/ORCL_1_83_723633464.ARC 线程=1 序列=83

介质恢复完成, 用时: 00:00:07

完成 recover 于 24-8月 -10

注意:

(1)       如果你细心一点,你会发现这里没有恢复sequence 为79 和 80的归档。 因为这2个日志是我们进行RMAN 备份之前的归档文件,RMAN 恢复需要的是RMAN 备份之后的归档文件,所以只恢复并应用了RMAN 备份之后的归档文件。

(2) 确认归档目录 D:/ARCHIVELOG 下生成了从81到85的归档文件。 从这里我们可以确定,recover database 之后生成的归档文件是否删除由参数DELETE ARCHIVELOG 决定, 如果加了该参数,在应用完归档之后就会删除还原到归档目录的归档文件。 如:

RMAN> RECOVER DATABASE DELETE ARCHIVELOG

这一点,也可以参考Oracle 的联机文档:

http://download.oracle.com/docs/cd/B19306_01/backup.102/b14192/recov002.htm

(3) Recover 的日志也说明, RMAN 从归档日志备份集中应用归档日志的步骤和实验一是一致。 都是先还原日志,在应用。

总结:

通过以上2个实验,我们可以理解,RMAN 从归档文件备份集中应用归档文件,都是先将归档文件从备份集中还原到归档目录,然后从归档目录中应用,至于是否删除,有recover database 的delete archivelog 参数决定,加了该参数,在应用完归档文件后就会删除还原的归档文件。

通过这个测试,也提供了一个学习Oracle 的方法。 多做实验,有什么不明白的,做个实验,自然一切都明了了。

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

Blog: http://blog.csdn.net/tianlesoftware

网上资源: http://tianlesoftware.download.csdn.net

相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

DBA1 群:62697716(满); DBA2 群:62697977(满)

DBA3 群:63306533;     聊天 群:40132017

转载于:https://www.cnblogs.com/spring3mvc/archive/2010/08/25/2414791.html

关于RMAN recover 过程的讨论相关推荐

  1. linux ora27040,使用RMAN recover database时遇到ORA-01119 ORA-27040 错误的解决办法

    问题描述: DATA COLLECTED =============== CUSTOMER STATEMENT ------------------ 不过在恢复数据的过程中,用8月1号的全备份,恢复到 ...

  2. Oracle RMAN Recover中使用BBED 跳过缺失的归档 继续 Recover 的测试

    一.背景说明 Oracle RMAN 备份的恢复分2个步骤:RESTRE 和 RECOVER. 在这个过程中,Recover 是依赖与归档文件的. 假设一种情况:周一对数据库做了全备,然后保留归档.周 ...

  3. ORACLE 12c rac备份异机单实例恢复(RMAN recover database出现RMAN-06054)

    1.首先在源rac 环境创造 数据,任何能体现与恢复环境不同的情况都可以. 本次模拟环境的目标机器上有一个db名与rac库一致的单实例db简略部分步骤 insert into test.table1 ...

  4. 结合源码和日志分析 mesos agent recover 过程

    在 agent recover 的时候,一般 agent 会去 reconnect executors ,如果 reconnect 成功,就会 Re-registering executor,如果 R ...

  5. TCP通信过程大讨论

    转载地址:http://www.cricode.com/3568.html 本文通过两个图来梳理TCP-IP协议相关知识.TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道. ...

  6. 关于 RMAN 备份 数据块 一致性的讨论

    今天和 杭州恒生 的一个朋友讨论一个RMAN 在备份时数据块一致性的问题. 关于RMAN 的备份原理参考blog: RMAN 系列(一)---- RMAN 体系结构概述 http://blog.csd ...

  7. ORACLE11G 将dataguard的rman备份恢复到测试环境的单机oracle中的详细过程

    2019独角兽企业重金招聘Python工程师标准>>> ORACLE11G 将dataguard的rman备份恢复到测试环境的单机oracle中的详细过程 原创 2015年08月21 ...

  8. oracle exp 00006,Oracle 12.1新特性----使用RMAN从备份中实现recover table

    Oracle 12.1新特性----使用RMAN从备份中实现recover table 发布时间:2020-06-26 19:41:44 来源:51CTO 阅读:4750 作者:hbxztc 在Ora ...

  9. 12c RMAN新特性之Recover Table

    关注我们获得更多内容 周玉其 云和恩墨南区技术顾问,曾在电信.物流等行业从事多年数据库开发.管理工作. 摘要 12c 的 rman 有了很大的增强,其中一个亮点就是可以进行表(或分区)级别的恢复,相比 ...

最新文章

  1. 很简单却很实用的强拉脚本
  2. Amazon S3数据存储
  3. iOS如何实现语音播报及后台播放
  4. 为什么不用简书写文章
  5. 学习笔记之12个月提升计划
  6. (一)Rational Rose 2007 下载安装
  7. 如何为CentOS 7配置静态IP地址
  8. GDB调试多进程程序或同时调试多个程序
  9. 一枚比特币30多万,家用电脑24小时挖矿,多久才能挖到一枚?
  10. Java static , final和常量设计
  11. 二、信号分解 —> 变分模态分解(VMD)学习笔记
  12. 高等数学|微积分(上)知识点总结
  13. docker 运行命令
  14. part Ⅲ Sightseeing and Visits 游览和参观??
  15. E.Neko and Flashback
  16. centos之dd命令
  17. VMware Workstation实例二:单IP的虚拟机提供外网访问
  18. 《程序设计基础综合实践》各备选题目[2023-02-13]
  19. 非洲瓜哇JAVA布的特点_非洲人的服装及其着装特点
  20. 轻量级的架构决策记录机制

热门文章

  1. bootstrap展示导入的图片_BootstrapFileInput 图片上传插件 详解
  2. 中仪股份管道机器人_中仪股份携带管道机器人再次出发美国,携手2018年WEFTEC欢度国庆...
  3. 匿名管道 阻塞_进程间通信-管道
  4. 静态类对象指针需要delete吗 vc_C/C++真的有那么难学吗?其实不然,无非是你没有找对方法罢了...
  5. SSH 免密码/免用户名/免IP登录云服务器
  6. python数据结构之元组(tuple)——超详细
  7. 图像处理——双线性插值(Bilinear Interpolation)
  8. Python——Eric的Python编程命名规则
  9. Vscode linux ubuntu deb 最新下载
  10. dokuwiki语法