• RAC 之 RMAN 恢复


     

    之前整理的RMAN 有关还原的文章:

             RMAN 系列(五) ---- RMAN 还原 恢复

          http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5700474.aspx

     

          RMAN 备份与恢复 实例

          http://blog.csdn.net/tianlesoftware/archive/2009/10/20/4699320.aspx

     

             Oracle Rmanresetlogs版本恢复

          http://blog.csdn.net/tianlesoftware/archive/2009/10/17/4682463.aspx

     

     

    RAC 下的RMAN 讲究的是备份和还原的策略要一致。备份策略的不同,会导致备份结果的分步不同,进而影响恢复的策略和步骤。一般情况下,恢复策略和备份策略必须是对应的。如果备份策略进行了修改,那么恢复也应该采用相同的策略。之前我们的RMAN 备份参考:

    RAC RMAN 备份

    http://blog.csdn.net/tianlesoftware/archive/2010/09/22/5901053.aspx

     

     

     

    这里面有2个注意事项:

    1.       执行恢复的节点要能看到所有节点的归档文件。 这个在RAC 备份那篇里已经讲了方法,就是把归档文件传送到其他节点,这样就能够看到所有节点的归档文件了。

    2.       备份集的存放问题。 如果我们放在共享设备上,那么节点可以访问所有的备份文件,那么就可以直接进行恢复操作。 如果不是放在共享设备,可以通过NFS mount来挂载,或者设置2个通道。 分别指向多个实例。

     

     

    示例:

     

    1.1 先停止数据库

     

    [oracle@rac1 bin]$ srvctl stop db -d orcl

    [oracle@rac1 bin]$ crs_stat -t

    Name           Type           Target    State     Host

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

    ora.orcl.db    application    OFFLINE   OFFLINE

    ora....oltp.cs application    OFFLINE   OFFLINE

    ora....cl1.srv application    OFFLINE   OFFLINE

    ora....cl2.srv application    OFFLINE   OFFLINE

    ora....l1.inst application    OFFLINE   OFFLINE

    ora....l2.inst application    OFFLINE   OFFLINE

    ora....SM1.asm application    ONLINE    ONLINE    rac1

    ora....C1.lsnr application    ONLINE    ONLINE    rac1

    ora.rac1.gsd   application    ONLINE    ONLINE    rac1

    ora.rac1.ons   application    ONLINE    ONLINE    rac1

    ora.rac1.vip   application    ONLINE    ONLINE    rac1

    ora....SM2.asm application    ONLINE    ONLINE    rac2

    ora....C2.lsnr application    ONLINE    ONLINE    rac2

    ora.rac2.gsd   application    ONLINE    ONLINE    rac2

    ora.rac2.ons   application    ONLINE    ONLINE    rac2

    ora.rac2.vip   application    ONLINE    ONLINE    rac2

     

     

    1.2 将节点启动到mount 状态:

     

    备份集存在在2个节点的情况(2个节点的RAC),在这种情况下,需要分配2个通道分别连接对应的节点。 每个节点都需要启动到mount状态。 因为每个节点都有备份文件,所以在每个节点都需要执行restore,如果没有启动的话,就会报错,对于备份集存放在共享设备的就不用这么麻烦。

     

     

    [oracle@rac1 bin]$ export ORACLE_SID=orcl1

    [oracle@rac1 bin]$ rman target /

    Recovery Manager: Release 10.2.0.1.0 - Production on Mon Sep 27 02:56:55 2010

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

    connected to target database (not started)

     

    RMAN> startup mount;

    Oracle instance started

    database mounted

    Total System Global Area     180355072 bytes

    Fixed Size                     1218388 bytes

    Variable Size                100665516 bytes

    Database Buffers              75497472 bytes

    Redo Buffers                   2973696 bytes

     

    [oracle@rac2 bin]$ export ORACLE_SID=orcl2

    [oracle@rac2 bin]$ rman target /

    Recovery Manager: Release 10.2.0.1.0 - Production on Mon Sep 27 02:57:44 2010

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

    connected to target database (not started)

     

    RMAN> startup mount;

    Oracle instance started

    database mounted

    Total System Global Area     180355072 bytes

    Fixed Size                     1218388 bytes

    Variable Size                 83888300 bytes

    Database Buffers              92274688 bytes

    Redo Buffers                   2973696 bytes

     

     

    1.3            完全恢复

     

    在任意一个节点上执行:

     

    RMAN> RUN {

    allocate channel c1 device type disk connect  'sys/oracle@orcl1';

    allocate channel c2 device type disk connect  'sys/oracle@orcl2';

    restore database;

    recover database;

    }

    2> 3> 4> 5> 6>

    using target database control file instead of recovery catalog

    allocated channel: c1

    channel c1: sid=146 instance=orcl1 devtype=DISK

     

    allocated channel: c2

    channel c2: sid=146 instance=orcl2 devtype=DISK

     

    Starting restore at 27-SEP-10

     

    skipping datafile 2; already restored to file +DATA/orcl/datafile/undotbs1.278.730181053

    skipping datafile 3; already restored to file +DATA/orcl/datafile/sysaux.277.730181053

    skipping datafile 5; already restored to file +DATA/orcl/datafile/undotbs2.284.730181347

    skipping datafile 1; already restored to file +DATA/orcl/datafile/system.276.730181051

    skipping datafile 4; already restored to file +DATA/orcl/datafile/users.279.730181053

    skipping datafile 7; already restored to file +DATA/orcl/datafile/anhuianqing.dbf

    Finished restore at 27-SEP-10

     

    Starting recover at 27-SEP-10

     

    starting media recovery

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

     

    Finished recover at 27-SEP-10

    released channel: c1

    released channel: c2

     

    RMAN> sql 'alter database open';

    sql statement: alter database open

     

     

    1.4 不完全恢复

     

     

    1.4.1基于时间点的恢复

    RMAN> RUN {

    allocate channel c1 device type disk connect  'sys/oracle@orcl1';

    allocate channel c2 device type disk connect  'sys/oracle@orcl2';

    set until time "to_date('2010/9/27 03:30:00','yyyy/mm/dd hh24:mi:ss')";

    restore database;

    recover database;

    }

    2> 3> 4> 5> 6> 7> 8>

    allocated channel: c1

    channel c1: sid=143 instance=orcl1 devtype=DISK

     

    allocated channel: c2

    channel c2: sid=146 instance=orcl2 devtype=DISK

     

    executing command: SET until clause

     

    Starting restore at 27-SEP-10

     

    channel c1: starting datafile backupset restore

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

    restoring datafile 00001 to +DATA/orcl/datafile/system.276.730181051

    restoring datafile 00004 to +DATA/orcl/datafile/users.279.730181053

    restoring datafile 00007 to +DATA/orcl/datafile/anhuianqing.dbf

    channel c1: reading from backup piece /u01/backup/orcl_2blotmnp_1_1_20100927

    channel c2: starting datafile backupset restore   -- 这里使用了2个通道,因为这个测试的备份集是放在2个节点的。

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

    restoring datafile 00002 to +DATA/orcl/datafile/undotbs1.278.730181053

    restoring datafile 00003 to +DATA/orcl/datafile/sysaux.277.730181053

    restoring datafile 00005 to +DATA/orcl/datafile/undotbs2.284.730181347

    channel c2: reading from backup piece /u01/backup/orcl_2clotmno_1_1_20100927

    channel c2: restored backup piece 1

    piece handle=/u01/backup/orcl_2clotmno_1_1_20100927 tag=ORCL_HOT_DB_BK

    channel c2: restore complete, elapsed time: 00:01:21

    channel c1: restored backup piece 1

    piece handle=/u01/backup/orcl_2blotmnp_1_1_20100927 tag=ORCL_HOT_DB_BK

    channel c1: restore complete, elapsed time: 00:02:48

    Finished restore at 27-SEP-10

     

    Starting recover at 27-SEP-10

     

    starting media recovery

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

     

    Finished recover at 27-SEP-10

     

    released channel: c1

    released channel: c2

     

    RMAN>

     

     

    恢复完成之后,在两个节点执行:

    alter database open resetlogs;

    打开数据即可。

     

     

    1.4.2 基于SCN的恢复

     

    当前SCN 查看方法:

    SQL> select current_scn from v$database;

    CURRENT_SCN

    -----------

    1118216

     

     

    RMAN> RUN {

    allocate channel c1 device type disk connect  'sys/oracle@orcl1';

    allocate channel c2 device type disk connect  'sys/oracle@orcl2';

    restore database until scn 1118215 ;

    recover database until scn 1118215 ;

    }

    2> 3> 4> 5> 6>

    using target database control file instead of recovery catalog  -- catalog 模式, 这种模式备份控制文件非常重要

    allocated channel: c1

    channel c1: sid=142 instance=orcl1 devtype=DISK

     

    allocated channel: c2

    channel c2: sid=151 instance=orcl2 devtype=DISK

     

    Starting restore at 27-SEP-10

     

    channel c1: starting datafile backupset restore

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

    restoring datafile 00001 to +DATA/orcl/datafile/system.276.730181051

    restoring datafile 00004 to +DATA/orcl/datafile/users.279.730181053

    restoring datafile 00007 to +DATA/orcl/datafile/anhuianqing.dbf

    channel c1: reading from backup piece /u01/backup/orcl_2blotmnp_1_1_20100927

    channel c2: starting datafile backupset restore

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

    restoring datafile 00002 to +DATA/orcl/datafile/undotbs1.278.730181053

    restoring datafile 00003 to +DATA/orcl/datafile/sysaux.277.730181053

    restoring datafile 00005 to +DATA/orcl/datafile/undotbs2.284.730181347

    channel c2: reading from backup piece /u01/backup/orcl_2clotmno_1_1_20100927

    channel c2: restored backup piece 1

    piece handle=/u01/backup/orcl_2clotmno_1_1_20100927 tag=ORCL_HOT_DB_BK

    channel c2: restore complete, elapsed time: 00:03:58

    channel c1: restored backup piece 1

    piece handle=/u01/backup/orcl_2blotmnp_1_1_20100927 tag=ORCL_HOT_DB_BK

    channel c1: restore complete, elapsed time: 00:05:47

    Finished restore at 27-SEP-10

     

    Starting recover at 27-SEP-10

     

    starting media recovery

     

    archive log thread 1 sequence 44 is already on disk as file /u02/rac1_arch/1_44_730181171.dbf

    archive log thread 2 sequence 38 is already on disk as file /u02/rac1_arch/2_38_730181171.dbf

    archive log thread 1 sequence 1 is already on disk as file /u02/rac1_arch/1_1_730784806.dbf

    archive log thread 2 sequence 1 is already on disk as file /u02/rac2_arch/2_1_730784806.dbf

    archive log filename=/u02/rac1_arch/1_44_730181171.dbf thread=1 sequence=44

    archive log filename=/u02/rac1_arch/2_38_730181171.dbf thread=2 sequence=38

    archive log filename=/u02/rac2_arch/2_1_730784806.dbf thread=2 sequence=1

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

    Finished recover at 27-SEP-10

    released channel: c1

    released channel: c2

     

    恢复结束,用 alter database open resetlogs 打开数据库。

     

     

    小结:

    以上都是简单的测试,具体情况还是要具体对待。 经验积累的多了,就知道怎么处理了。 总之,备份重于一切。 有了备份,才有恢复的可能。

     

     

     

     

     

     

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

    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

    --加群需要在备注说明SGA的组成部分,否则拒绝申请

    道森Oracle,国内最早、最大的网络语音培训机构,我们提供专业、优质的Oracle技术培训和服务! 我们的官方网站:http://www.daosenoracle.com 官方淘宝店:http://daosenpx.taobao.com/
  • 相关阅读:
    更改套接字I/O缓冲大小
    读取创建套接字时默认IO缓冲大小
    利用getsockopt读取套接字可选项
    如何查看安装的ubuntu是多少位的系统
    使用虚函数所带来的扩展性
    python学习第17天----接口类/抽象类、多态、封装
    python学习第16天----继承、查找顺序(深度、广度优先)
    python学习第15天----名称空间、组合
    python学习第14天----函数复习、面向对象初始
    python学习第13天----lambda、sorted、map、filter、递归、二分查找
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3609977.html
Copyright © 2020-2023  润新知