zoukankan      html  css  js  c++  java
  • 关于RMAN recover 过程的讨论

     

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

            

    先用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 下生成了从8185的归档文件。 从这里我们可以确定,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

    道森Oracle,国内最早、最大的网络语音培训机构,我们提供专业、优质的Oracle技术培训和服务! 我们的官方网站:http://www.daosenoracle.com 官方淘宝店:http://daosenpx.taobao.com/
  • 相关阅读:
    【流量劫持】SSLStrip 终极版 —— location 瞒天过海
    【流量劫持】沉默中的狂怒 —— Cookie 大喷发
    【流量劫持】SSLStrip 的未来 —— HTTPS 前端劫持
    Web 前端攻防(2014版)
    流量劫持 —— 浮层登录框的隐患
    流量劫持能有多大危害?
    流量劫持是如何产生的?
    XSS 前端防火墙 —— 整装待发
    XSS 前端防火墙 —— 天衣无缝的防护
    XSS 前端防火墙 —— 无懈可击的钩子
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3610019.html
Copyright © 2011-2022 走看看