RMAN恢复操作

一、RMAN恢复综述
  1、RMAN完全恢复
    是指当数据文件出现介质失败时,使用RESTORE命令转储数据文件备份,并使用RECOVER命令将数据文件恢复到失败点的状态。当数据库处于ARCHIVELOG模式时,在进行日志切换时会自动生成归档日志,并且会将所有重做历史记录存放到归档日志中。
  2、RMAN不完全恢复
    是指当数据库出现介质失败或逻辑失败时,使用RESTORE命令转储备份,并使用RECOVER命令将数据库恢复到备份点与失败点之间某个时刻的状态。
  3、RMAN转储命令
    (1)RESTORE DATABASE     转储数据库的所有数据文件   MOUNT
    (2)RESTORE DATAFILE     转储特定数据文件          MOUNT OPEN
    (3)RESTORE TABLESPACE   转储特定表空间            OPEN
    (4)RESTORE CONTROLFILE  转储控制文件             NOMOUNT
    (5)RESTORE ARCHIVELOG   转储归档日志             MOUNT OPEN
    (6)RESTORE SPFILE       转储服务器参数文件        NOMOUNT
  4、RMAN恢复命令
    (1)RECOVER DATABASE     恢复数据库所有数据文件       MOUNT
    (2)RECOVER DATAFILE     恢复特定数据文件            MOUNT OPEN
    (3)RECOVER TABLESPACE   恢复特定表空间的所有数据文件  OPEN
 
二、RMAN完全恢复
  1、恢复数据库
    查询V$RECOVER_FILE视图获得要恢复的数据文件清单
    说明:所有数据文件都出现介质失败,在MOUNT状态下恢复
    1.1 示例一,所有数据文件被误删除
       rman target sys/oracle@demo nocatalog
       RMAN> startup force mount
       RMAN> run {
                restore database;
                recover database;
                sql 'alter database open';
             }
 1.2 示例二,数据文件所在磁盘出现硬件故障
       RMAN> run {
                startup force mount;
                set newname for datafile 1 to '';
                set newname for datafile 2 to '';
                set newname for datafile 3 to '';
                set newname for datafile 4 to '';
                set newname for datafile 5 to '';
                set newname for datafile 6 to '';
                restore database;
                switch datafile all;
                recover database;
                sql 'alter database open';
             }
  2、恢复SYSTEM表空间的数据文件
    说明:当数据库处于OPEN状态时,如果SYSTEM表空间所对应的数据文件出现介质失败,那么当在其数据文件上执行I/O操作时,数据库会自动关闭。在MOUNT状态下恢复
    2.1 示例一,SYSTEM表空间的数据文件被误删除
      RMAN> run {
             startup force mount;
             restore datafile 1;
             recover datafile 1;
             sql 'alter database open';
           }
   2.2 示例二,SYSTEM表空间数据文件所作磁盘出现故障
     RMAN> run {
             startup force mount;
             set newname for datafile 1 to '';
             restore datafile 1;
             switch datafile 1;
             recover datafile 1;
             sql 'alter database open';
           }
  3、在OPEN状态下恢复关闭后意外丢失的数据文件
    建议在OPEN状态下进行恢复操作,在MOUNT状态下恢复会增加数据库停用时间
    3.1 示例一,数据文件被误删除 
RMAN> run {
             startup force mount;
             sql 'alter database datafile 4 offline';
             sql 'alter database open';
             restore datafile 4;
             recover datafile 4;
             sql 'alter database datafile 4 online';                             -----要加上这句话,恢复完后就立即加上online,否则就不能用的呀
           }
   3.2 示例二,数据文件所作磁盘出现损坏
     RMAN> run {
             startup force mount;
             sql 'alter database datafile 4 offline';
             sql 'alter database open';
             set newname for datafile 4 to '';
             restore datafile 4;
             switch datafile 4;
             recover datafile 4;
             sql 'alter database datafile 4 online';
           }
  4、在OPEN状态下恢复打开时意外丢失的数据文件
    说明:该数据文件不属于SYSTEM表空间,在OPEN状态下恢复,恢复过程中只有介质失败所涉及到的数据文件不能访问,而不会影响其他数据文件。
    4.1 示例一,数据文件被误删除
      RMAN> run {
             sql 'alter database datafile 4 offline';
             restore datafile 4;
             recover datafile 4;
             sql 'alter database datafile 4 online';
           }
    4.2 示例二,数据文件所作磁盘出现损坏
      RMAN> run {
             sql 'alter database datafile 4 offline';
             set newname for datafile 4 to '';
             restore datafile 4;
             switch datafile 4;
             recover datafile 4;
sql 'alter database datafile 4 online';
           }
  5、在OPEN状态下恢复未备份的数据文件
    说明:如果DBA未备份新增加的数据文件,那么当该数据文件出现介质失败时,DBA将可以恢复该数据文件,但前提是从建立数据文件到目前为止的所有归档日志必须全部存在。
    5.1 示例一,数据文件被误删除
      RMAN> run {
             startup force mount;
             sql 'alter database datafile 7 offline';
             sql 'alter database open';
             restore datafile 7;
             recover datafile 7;
             sql 'alter database datafile 7 online';
           }
    5.2 示例二,数据文件所作磁盘出现损坏
      RMAN> run {
             startup force mount
             sql 'alter database datafile 7 offline';
             sql 'alter database open';
             set newname for datafile 7 to '';
             restore datafile 7;
             switch datafile 7;
             recover datafile 7;
             sql 'alter database datafile 7 online';
           }
  6、恢复表空间
    说明:当数据库处于OPEN状态时,如果某个表空间的所有数据文件全部出现介质失败,那么当访问该表空间的对象时,会出现显示错误。建议在OPEN状态下恢复
    6.1 示例一,表空间的数据文件被误删除
      RMAN> run {
             sql 'alter tablespace users offline for recover';
             restore tablespace users;
             recover tablespace users;
             sql 'alter tablespace users online';
           }
    6.2 示例二,表空间的数据文件所作磁盘出现损坏 
 RMAN> run {
             sql 'alter tablespace users offline for recover';
             set newname for datafile 4 to '';
             restore tablespace users;
             switch datafile all;
             recover tablespace users;
             sql 'alter tablespace users online';
           }
  7、数据块介质恢复
    RMAN> blockrecover device type disk datafile 5 block 21,48,128;
 
三、RMAN不完全恢复
  1、基于时间恢复
     说明:使用LogMiner确定误操作时间点
     set nls_date_format = yyyy-mm-dd hh24:mi:ss
     rman target sys/oracle@demo nocatalog
     RMAN> run {
             startup force mount;
             set until time = '2004-10-03 17:00:28';
             restore database;
             recover database;
             sql ''alter database open resetlogs;
           }
     注意:在10g前,在不完全恢复后必须重新备份数据库;从10g起,Oracle提高安全机制可以保证归档日志不会被覆盖,从而使得在恢复数据库时可以使用早期数据库副本的备份。但在执行不完全恢复之后,建议DBA删除早期的所有备份,并重新备份数据库。
     RMAN> run {
             delete noprompt backup;
             delete noprompt copy;
             backup database format = 'd:\backup\%d_%s.bak';
             sql 'alter system archive log current';
           }
  2、基于SCN恢复
     RMAN> run {
             startup force mount;
             set until scn = 511413;
             restore database;
             recover database;
sql 'alter database open resetlogs';
           }
  3、基于日志序列号恢复
     RMAN> run {
             startup force mount;
             set until sequence = 5;
             restore database;
             recover database;
             sql 'alter database open resetlogs';
           }
  4、基于备份控制文件恢复
     set nls_date_format = yyyy-mm-dd hh24:mi:ss
     rman target sys/oracle@demo nocatalog
     RMAN> startup force nomount;
     RMAN> set dbis = 3282656886
     RMAN> restore controlfile from autobackup maxseq 6;
     RMAN> alter database mount;
     RMAN> run {
             set until time = '2004-10-03 18:36:18';
             restore database;
             recover database;
             sql 'alter database open resetlogs';
           }
rman set newname switch 用法 
前提是已经有个backup tablespace tools 备份了
set newname 的作用是恢复到一个新的路径
switch 做切换把新路径文件写到控制文件中
恢复到一个新的路径
C:\Documents and Settings\Paul Yi>rman target / catalogpaultest/paultest
Recovery Manager: Release 9.2.0.4.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: PAUL (DBID=1605165889)
connected to recovery catalog database
RMAN> run{
2> allocate channel c1 type disk;
3> set newname for datafile 4 to 'd:\oracle\oradata\paul\tools01.dbf';          ------将数据文件放到一个新的位置
4> restore datafile 4;
5> switch datafile 4;                                                                                     ------将该新的位置写入到了控制文件中
6> recover datafile 4;
7> sql 'alter tablespace tools online';
8> release channel c1;
9>}
已经试验成功的sql语句
需要恢复数据文件的操作
run{
startup mount force;
sql 'alter database datafile 4 offline';
alter database open;
restore datafile 4;
recover datafile 4;
sql 'alter database datafile 4 online';
}
数据文件所在媒体失败的恢复
run{
startup mount force;
sql 'alter database datefile 4 offline';
alter database open;
set newname datafile 4 to 'D:\................\data01.dbf';
restore datafile 4;
switch datafile 4;
recover datafile 4;
sql 'alter database datafile 4 online';
}
恢复控制文件:
restore controlfile from autobackup; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值