在做案例之前,先查看v$archived_log记录,发现太多了,考虑清除这些归档然后生成一些再做实验。
在操作系统上删除这些归档并不会在控制文件中有记录,所以查看v$archived_log时还会有记录,考虑用RMAN来删除:
RMAN>delete archivelogall;
之后再查看v$archived_log发现还有记录。google了下怎么解决,有三种方法。
相关阅读: Oracle手工恢复案例(非归档模式)
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