现在的位置: 首页 > 关系型数据库 > 备份恢复 > 正文

RMAN 不完全恢复

时间:2013年07月23日 | 分类:备份恢复 | 评论:1 条 | 浏览:1,493 次

不完全恢复:

1).lost all(丢失所有文件,记得记录好:DBID=1341461043)

  1. rman>backup database;  
  2. sql>insert into ...  
  3. sql> alter system switch logfile;  
  4. rm all file(spfile,controlfile,redo log file,data file)  
  5. shutdown abort  
  6. rman>start nomount;  
  7.      set dbid=    ;  
  8.      restore spfile from autobackup;  
  9.      shutdown abort;  
  10.      startup nomount;  
  11.      restore controlfile from autobackup;  
  12.      alter database mount;  
  13.      restore database;  
  14.      recover database;  
  15.      alter database open resetlogs;  

2).基于时间点的不完全恢复:

  1.   rman target /  
  2.   rman>backup database;(backup database plus archivelog  delete all input;  # 备份数据库包括归档日志,并删除已经备份的归档日志)  
  3.   
  4.   sys>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';  # 修改系统时间格式  
  5.   sys>select sysdate from dual;  
  6.   sys>drop user hr cascade;  
  7.   
  8.  rman:  
  9.      SYS>shutdown immediate;  
  10.      SYS>startup mount;  
  11.      RMAN> run{  
  12.             set until time "to_date('xxxxxx','yyyy-mm-dd hh24:mi:ss')";  
  13.             restore database;  
  14.             recover database;  
  15.            alter database open resetlogs;  
  16.            }  
  17.      or  
  18.      RMAN>run{  
  19.           shutdown immediate;  
  20.           startup mount;  
  21.           sql 'alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';  
  22.           set until time 'xxxxxxxx';  
  23.           restore database;  
  24.           recover database;  
  25.           alter database open resetlogs;  
  26.       }     
  27.   
  28. select recid,sequence#,resetlogs_change#,resetlogs_time from v$log_history;  

3).基于SCN号的不完全恢复(scn-incomplete)

  1. $rman target /  
  2.      rman>backup database;(backup database plus archivelog  delete all input)  
  3.   
  4.    sys:  
  5.      SYS>select current_scn from v$database;  
  6.      SYS>drop table scott.emp purge;  
  7.   
  8.    rman:  
  9.    RMAN>startup force mount;  
  10.    RMAN>run{  
  11.            set until scn=xxxxxx;  
  12.            restore database;  
  13.            recover database;  
  14.            }  
  15.   alter database open resetlogs;  

4).基于sequence的不完全恢复(sequence-incomplete)

  1. sys>select name,SEQUENCE#,STATUS,DELETED,APPLIED,ARCHIVED from v$archived_log;  
  2.      sys>select * from v$log;  
  3.   
  4.      rman>backup database  
  5.      sys>alter system switch logfile;  
  6.      $rm *.dbf, rm a archivelog  
  7.   
  8.      rman>startup mount   
  9.      rman>run(  
  10.           set until sequence xx thread 1;  
  11.           restore database;  
  12.           recover database;  
  13.           }  
  14.      alter database open resetlogs;  

5).丢失所有控制文件的情况:
a).从备份中恢复控制文件

  1. RMAN>backup database;  
  2. $>rm *.ctl  
  3. RMAN> restore controlfile from 'file_name';  
  4. SYS> shutdown abort  
  5. SYS> startup mount;  
  6. ***********************************************************  
  7. SYS> select FILE#,CHECKPOINT_CHANGE# from v$datafile;  
  8.      select FILE#,CHECKPOINT_CHANGE# from v$datafile_header;  # 查询相应信息  
  9. ***********************************************************  
  10. RMAN>restore database;  
  11. SYS> recover database using backup controlfile until cancel;(filename)  
  12. SYS> alter database open resetlogs;  

b).重建控制文件:

  1. sys>alter database backup controlfile to trace;  
  2. $>vi trace file  
  3. sys>startup nomount;  
  4. sys>@trace_file;  

6)丢失当前重做日志文件、一个数据文件(lost current redo log file a data file)

  1. rman>backup database;  
  2. sys>select * from v$log;  
  3. $rm current redo log file  
  4. sys>shutdown abort  
  5. sys>startup  
  6. sys>alter database clear unarchived logfile group 3;  
  7. rman>restore database;  
  8. sys>recover database until cancel;  
  9. sys>alter database open resetlogs  

7)丢失重做日志文件,无备份(lost redo log file (without backup))

  1. sys>recover database until cancel;  
  2.        auto  
  3. sys>alter database open resetlogs;  
  4.   
  5. _allow_resetlogs_corruption=true   # 在参数文件,添加这一行  
  6. _corrupted_rollback_segments=true  
  7. _offline_rollback_segments=true  
  8. select KSPPINM from x$ksppi  

×