053 ch07 使用RMAN 进行进行恢复

1790阅读 0评论2014-06-02 wuxiaobo_2009
分类:Windows平台


点击(此处)折叠或打开

  1. Using RMAN to Perform Recovery -- 用 RMAN 工具来进行恢复

  2. 本章的主要目的:
  3. Perform complete recovery when a critical or noncritical data file is lost -- 重要非重要文件丢失进行的恢复
  4. 注: 重要不重要 -- 对应于是否能打开数据库,如果这个文件丢失库彻底打不开-- critical file,反之offline 一个文件但是库能打开  no critical file
  5. ? Recover using incrementally updated backups -- 使用增量备份 来进行恢复。
  6. 注:可以对backupset 也可以对copy 进行增量备份。  backup incremental level 1 datafile 4; --默认 differential not cumulative .默认是backupset 不是copy
  7. cumulative incremental level 1 -- 必须指定累计增量备份;
  8. backup as copy -- 指定 备份为 image copy 形式。 不过都是对 backupset 的full 进行增量备份。  -- 可以使用image copy + incremental backup 构造最新的image copy。
  9. ? Switch to image copies for fast recovery   -- 直接切换表空间对应到image copy 上,实现快速恢复。
  10. ? Restore a database onto a new host -- 如果本机服务器硬件挂了,有rman 备份,怎么从一个服务器把数据库转移到另外一台机器上
  11. ? Recover using a backup control file -- 使用备份的控制文件来:1.有catalog 2. no catalog 必须 nomount 下利用dbms_backup_restore 包进行还原

  12. 一、重要 or 非重要文件丢失进行的恢复

  13. 能否正常打开对比一下两个视图:

  14. sys@ZTSYS> select file#,checkpoint_change# from v$datafile;

  15.      FILE# CHECKPOINT_CHANGE#
  16. ---------- ------------------
  17.          1 1056849
  18.          2 1056849
  19.          3 1013032
  20.          4 1056849
  21.          5 1056849


  22. sys@ZTSYS> select file#,checkpoint_change# from v$datafile_header;

  23.      FILE# CHECKPOINT_CHANGE#
  24. ---------- ------------------
  25.          1 0
  26.          2 1056849
  27.          3 1013032
  28.          4 1056849
  29.          5 1056849

  30. (此为 我删除了system01.dbf 文件导致的现象)

  31. 1: system 文件, 3:undo 文件 --之前的文件不影响实验。 此时数据库只能到mount 。
  32. 进行的操作:
  33. restore datafile 1;
  34. recover datafile 1;
  35.           -- 1==system01.dbf

  36. 实验
  37. critical 文件 alter database open  --error!
  38. 非critical 文件 例如:users 中的文件 删除掉, alter database datafile 4 offline immediate  & alter tablespace users offline 。大不了就是一个文件或者表空间不能用,alter database open -- right .其他表空间可以正常使用
  39. 注: immediate 加与不加的区别 度娘


  40. 二、 使用 copy + incremental backup 的方法
  41. 实验:
    1. 看脚本:
    2. rman> recover copy of database with tag 'daily_inc'; -- 做到实时更新一个image copy .
    3. RMAN> backup incremental level 1 for recover of copy with tag 'daily_inc' database; --
    4. 可以拆开看: backup incremental level 1 for xxx -- 对那个备份进行 增量备份
    5. recover of copy database with tag 'xxx' 对xxx 标签的image copy 的说明的语法 。 从而做到对最新的image copy 进行增量备份,下次有可以运用增量到image copy 上,往复循环。

    6. rman 输出:
    7. 第一天:

    8. RMAN> recover copy of datafile 4 with tag 'd1';

    9. Starting recover at 01-JUN-14
    10. using channel ORA_DISK_1
    11. no copy of datafile 4 found to recover
    12. Finished recover at 01-JUN-14

    13. RMAN> backup incremental level 1 for recover of copy with tag 'd1' datafile 4;

    14. Starting backup at 01-JUN-14
    15. using channel ORA_DISK_1
    16. no parent backup or copy of datafile 4 found
    17. channel ORA_DISK_1: starting datafile copy
    18. input datafile file number=00004 name=D:\APP\ADMINISTRATOR\ORADATA\ZTSYS\USERS01
    19. .DBF
    20. output file name=D:\APP\ADMINISTRATOR\FAST_RECOVERY_AREA\ZTSYS\DATAFILE\O1_MF_US
    21. ERS_9RO7MPRR_.DBF tag=D1 RECID=1 STAMP=849094263
    22. channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    23. Finished backup at 01-JUN-14

    24. --没有看到 datafile 4 的copy 所以做了一个全备, 生成的文件目录大家留意一下。


    25. 第二天:


    26. RMAN> recover copy of datafile 4 with tag 'd1';

    27. Starting recover at 01-JUN-14
    28. using channel ORA_DISK_1
    29. no copy of datafile 4 found to recover
    30. Finished recover at 01-JUN-14


    31. RMAN> backup incremental level 1 for recover of copy with tag 'd1' datafile 4;

    32. Starting backup at 01-JUN-14
    33. using channel ORA_DISK_1
    34. channel ORA_DISK_1: starting incremental level 1 datafile backup set
    35. channel ORA_DISK_1: specifying datafile(s) in backup set
    36. input datafile file number=00004 name=D:\APP\ADMINISTRATOR\ORADATA\ZTSYS\USERS01
    37. .DBF
    38. channel ORA_DISK_1: starting piece 1 at 01-JUN-14
    39. channel ORA_DISK_1: finished piece 1 at 01-JUN-14
    40. piece handle=D:\APP\ADMINISTRATOR\FAST_RECOVERY_AREA\ZTSYS\BACKUPSET\2014_06_01\
    41. O1_MF_NNND1_D1_9RO7T80C_.BKP tag=D1 comment=NONE
    42. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
    43. Finished backup at 01-JUN-14
    44. -- 一样没有 增量所以,recover 没有。 之后做了一个增量备份

    45. 第三天及其以后:

    46. RMAN> recover copy of datafile 4 with tag 'd1';

    47. Starting recover at 01-JUN-14
    48. using channel ORA_DISK_1
    49. channel ORA_DISK_1: starting incremental datafile backup set restore
    50. channel ORA_DISK_1: specifying datafile copies to recover
    51. recovering datafile copy file number=00004 name=D:\APP\ADMINISTRATOR\FAST_RECOVE
    52. RY_AREA\ZTSYS\DATAFILE\O1_MF_USERS_9RO7MPRR_.DBF
    53. channel ORA_DISK_1: reading from backup piece D:\APP\ADMINISTRATOR\FAST_RECOVERY
    54. _AREA\ZTSYS\BACKUPSET\2014_06_01\O1_MF_NNND1_D1_9RO7T80C_.BKP
    55. channel ORA_DISK_1: piece handle=D:\APP\ADMINISTRATOR\FAST_RECOVERY_AREA\ZTSYS\B
    56. ACKUPSET\2014_06_01\O1_MF_NNND1_D1_9RO7T80C_.BKP tag=D1
    57. channel ORA_DISK_1: restored backup piece 1
    58. channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
    59. Finished recover at 01-JUN-14

    60. -- 应用 incremental 到 datafile 中的Image copy 上 。 注: 这个文件只有一份

    61. RMAN> backup incremental level 1 for recover of copy with tag 'd1' datafile 4;

    62. Starting backup at 01-JUN-14
    63. using channel ORA_DISK_1
    64. channel ORA_DISK_1: starting incremental level 1 datafile backup set
    65. channel ORA_DISK_1: specifying datafile(s) in backup set
    66. input datafile file number=00004 name=D:\APP\ADMINISTRATOR\ORADATA\ZTSYS\USERS01
    67. .DBF
    68. channel ORA_DISK_1: starting piece 1 at 01-JUN-14
    69. channel ORA_DISK_1: finished piece 1 at 01-JUN-14
    70. piece handle=D:\APP\ADMINISTRATOR\FAST_RECOVERY_AREA\ZTSYS\BACKUPSET\2014_06_01\
    71. O1_MF_NNND1_D1_9RO8YR4X_.BKP tag=D1 comment=NONE
    72. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
    73. Finished backup at 01-JUN-14

    74. Starting Control File and SPFILE Autobackup at 01-JUN-14
    75. piece handle=D:\APP\ADMINISTRATOR\FAST_RECOVERY_AREA\ZTSYS\AUTOBACKUP\2014_06_01
    76. \O1_MF_S_849095641_9RO8YSY2_.BKP comment=NONE
    77. Finished Control File and SPFILE Autobackup at 01-JUN-14

    

  1. 现在的image copy 是最新的。 那么我们如何做到利用一个最新的image copy 快速切换进数据库中,使数据库坏的表空间迅速恢复呢?
  2. 例子:
  3. rman>
  4. switch datafile 4 to copy; 
  5. recover datafile 4;
  6. sql> alter database datafile 4 offline -- 自动使 tablespace offline
  7.  rman恢复完毕: alter database datafile 4 online -- 不自动使 tablespace on
  8. alter tablespace users online
  9. 和从前一样 不影响 tablespace users 的使用。

        

  1. 如果 还是想还原以前的 users 文件,操作如下:
  2. 创建 现在image copy 的一个copy :
  3. backup as copy datafile 'D:\app\Administrator\fast_recovery_area\ztsys\DATAFILE\O1_MF_USERS_9RO7MPRR_.DBF' format ' D:\app\Administrator\oradata\ztsys\users01.dbf';   -- 在执行位置创建 一个copy  。 不知道可不可以 copy image copy 到新的位置在进行 recover 没有发现方法,有人知道请留言
  4. 这样就拷贝了一个
  5. alter database datafile 4 offline
  6. switch datafile 4 to copy;
  7. recover datafile 4;
  8. alter database datafile 4 online

        从第一个主机拷贝rman 备份到测试主机进行还原

    正在找好的文章



  1. --附录:
  2. 1、 实验中丢失了控制文件但是有rman 备份。
  3. mount 数据库 ,寻找rman 中能否直接还原, restore controlfile from autobackup 没有结果不行。
  4. 搜了一个包:
  5. DECLARE
  6.  devtype varchar2(256);
  7.  done boolean;
  8. BEGIN
  9.  devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
  10.  sys.dbms_backup_restore.restoreSetDatafile;
  11.  --要还原的目的地
  12.  sys.dbms_backup_restore.restoreControlfileTo(cfname=>'E:\app\Administrator\oradata\ztsys\control01.ctl');
  13.  sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:\app\Administrator\flash_recovery_area\ztsys\BACKUPSET\2014_05_31\O1_MF_NCSNF_TAG20140531T182325_9RMCHDWS_.BKP',params=>null);
  14.    sys.dbms_backup_restore.deviceDeallocate;
  15. END;
  16. /

  17. -- spfile 挂掉 随便找到一个 启动一下实例,之后运行脚本提取spfile
  18. DECLARE
  19.  devtype varchar2(256);
  20.  done boolean;
  21. BEGIN
  22.  devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
  23.  sys.dbms_backup_restore.restoreSetDatafile;
  24.  --要还原的目的地
  25.  sys.dbms_backup_restore.RESTORESPFILETO(pfname=>'E:\app\Administrator\flash_recovery_area\ztsys\BACKUPSET\2014_05_31\initztsys.ora');
  26.  sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:\app\Administrator\flash_recovery_area\ztsys\AUTOBACKUP\2014_06_01\O1_MF_S_849110650_9ROQMWK2_.BKP',params=>null);
  27.    sys.dbms_backup_restore.deviceDeallocate;
  28. END;
  29. /
  30. 具体可以还原到自己想要的目录
  31. 2、 rman 进行全备的时候自动备份 control + spfile 这个和 CONFIGURE CONTROLFILE AUTOBACKUP OFF; 无关

  32. 3、非归档模式还原恢复
  33. shutdown -> 还原所有文件 include control ->open

  34. 看脚本:
  35. run{
  36. set until time '2014/06/01 15:00:21';-- 这里也可以用手动创建的还原点,或者是scn 号
  37. restore database;
  38. recover database;
  39. }

  40. : 时间| scn 确定; 时间格式确定:
  41. $ export NLS_LANG = american_america.us7ascii
  42. $ export NLS_DATE_FORMAT = "yyyy-mm-dd:hh24:mi:ss"

  43. alter database open read only --查看标志性 数据是否正确
  44. alter database open resetlog -- 重置redo 打开数据库


  45. 还原一个spfile 文件:有catalog 的前提

  46. RMAN> STARTUP FORCE NOMOUNT;
  47. RMAN> RESTORE SPFILE FROM AUTOBACKUP;
  48. RMAN> STARTUP FORCE;


  49. --
  50. RMAN> STARTUP NOMOUNT;
  51. RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
  52. RMAN> ALTER DATABASE MOUNT;
  53. RMAN> RECOVER DATABASE;
  54. RMAN> ALTER DATABASE OPEN RESETLOGS

上一篇:ADRCI 快速管理 oracle 各类日志
下一篇:Oracle的Flashback用法汇总