Oracle手工完全恢复案例(归档模式)(一)

2014-11-24 12:48:46 · 作者: · 浏览: 2
Oracle手工完全恢复案例(归档模式)
在做案例之前,先查看v$archived_log记录,发现太多了,考虑清除这些归档然后生成一些再做实验。
在操作系统上删除这些归档并不会在控制文件中有记录,所以查看v$archived_log时还会有记录,考虑用RMAN来删除:
RMAN>delete archivelogall;

之后再查看v$archived_log发现还有记录。google了下怎么解决,有三种方法。
1.重建控制文件,例如 backup controlfileto trace后重建该控制文件,但要求有数据文件均存在。
2.设置control_file_record_keep_time=0 然后等待记录被重用,这样很不好。
3.使用包来清理,注意不要在生产库上这么做
PROCEDURE resetCfileSection(record_typeINbinary_integer);

– This procedure attemptsto reset the circular controlfilesection.

– Input parameters:

– record_type

– The circular record type whose controlfile sectionisto be reset.

execute sys.dbms_backup_restore.resetCfileSection(11); ==> 清理v$ARCHIVED_LOG对应的记录

execute sys.dbms_backup_restore.resetCfileSection(28); ==>清理v$rman_status对应的记录

手工完全恢复
案例一:media fuilure 丢失数据文件,其他文件不丢失
模拟环境:
首先做一个冷备。
查看当前日志状态
  select group#,sequence#,archived,statusfrom v$log;

    GROUP#  SEQUENCE# ARC STATUS

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

         1          4 NO  CURRENT

         2          2 YES INACTIVE

         3          3 YES INACTIVE

   查看归档日志

    select name,sequence#from v$archived_log;

   NAME                                                                             SEQUENCE#

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

    /u01/fast_recovery_area/MIKE/archivelog/2013_06_28/o1_mf_1_1_8wtf58m4_.arc               1

    /u01/fast_recovery_area/MIKE/archivelog/2013_06_28/o1_mf_1_2_8wtf59cw_.arc               2

    /u01/fast_recovery_area/MIKE/archivelog/2013_06_28/o1_mf_1_3_8wtf5ctc_.arc               3 

   此时我用test用户创建一个t1表,使用的是TEST表空间

    create table t1(id number);

   写一个循环插入数据

    begin

    for i in 1..10

    loop

    insert into t1 values(i);

    end loop;

    end;

    /

   提交

    commit;

   查看下当前日志

    select group#,sequence#,archived,statusfrom v$log;

    GROUP#  SEQUENCE# ARC STATUS

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

         1          4 NO  CURRENT

         2          2 YES INACTIVE

         3          3 YES INACTIVE

   刚才的操作变化记录在了sequence为4的日志中。下面切一组日志,让其归档。

    alter system switch logfile;

   现在模拟介质失败

   rm -f /u01/oradata/mike/*.dbf

   关库

   shutdown abort

   起库

   startup

   出错

   ORA-01157: cannot identify/lockdatafile1- see DBWR tracefile

   ORA-01110:datafile1:'/u01/oradata/mike/system01.dbf'

   查看所需要恢复的文件

    select file#,error from v$recover_file;   

    FILE# ERROR

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

         1 FILENOTFOUND

         2 FILENOTFOUND

         3 FILENOTFOUND

         4 FILENOTFOUND

         5 FILENOTFOUND

         8 FILENOTFOUND

   现在开始还原

   cp /backup/cold/mike/*.dbf/u01/oradata/mike/

   再查看控制文件头部和数据文件头部SCN的差异

   sys@MIKE>
selectfile#,checkpoint_change#from v$datafile; FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 1553122 2 1553122 3 1553122 4 1553122 5 1553122 8 1553122 sys@MIKE>selectfile#,checkpoint_change#from v$datafile_header; FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 1552527 2 1552527 3 1552527 4 1552527 5 1552527 8 1552527 下面恢复数据库 recover database; ORA-00279: change1552528 generatedat06/28/201314:57:57 neededfor thread 1 ORA-00289: suggestion:/u01/fast_recovery_area/MIKE/archivelog/2013_06_28/o1_mf_1_1_8wtf58m4_.arc