Which one is the last archivelog we need for recover?

对事务量大的DB执行恢复时,recover一直要求next archivelog:

recover database using backup controlfile until cancel;
but it always ask us to apply the next archivelog.
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00279: change 66539510519 generated at 04/15/2013 19:12:24 needed for
thread 1
ORA-00289: suggestion : /oracle/YYDNEW/oraarch/YYDarch1_993851_614464364.dbf
ORA-00280: change 66539510519 for thread 1 is in sequence #993851
ORA-00278: log file '/oracle/YYDNEW/oraarch/YYDarch1_993850_614464364.dbf' no
longer needed for this recovery


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00279: change 66539570479 generated at 04/15/2013 19:13:47 needed for
thread 1
ORA-00289: suggestion : /oracle/YYDNEW/oraarch/YYDarch1_993852_614464364.dbf
ORA-00280: change 66539570479 for thread 1 is in sequence #993852
ORA-00278: log file '/oracle/YYDNEW/oraarch/YYDarch1_993851_614464364.dbf' no
longer needed for this recovery


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00279: change 66539631772 generated at 04/15/2013 19:15:28 needed for
thread 1
ORA-00289: suggestion : /oracle/YYDNEW/oraarch/YYDarch1_993853_614464364.dbf
ORA-00280: change 66539631772 for thread 1 is in sequence #993853
ORA-00278: log file '/oracle/YYDNEW/oraarch/YYDarch1_993852_614464364.dbf' no
longer needed for this recovery

如何得知哪个archivelog为最终的archivelog呢?
1)使用restore database preview 可以得知最终需要的SCN:
RMAN> restore database preview;

Starting restore at 19-NOV-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=157 devtype=DISK


List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1       Full    580.90M    DISK        00:00:37     19-NOV-13      
        BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag: TAG20131119T045940
        Piece Name: /app/oracle/flash_recovery_area/ORCL/backupset/2013_11_19/o1_mf_nnndf_TAG20131119T045940_98pfndrr_.bkp
  List of Datafiles in backup set 1
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 483093     19-NOV-13 /app/oracle/oradata/orcl/system01.dbf
  2       Full 483093     19-NOV-13 /app/oracle/oradata/orcl/undotbs01.dbf
  3       Full 483093     19-NOV-13 /app/oracle/oradata/orcl/sysaux01.dbf
  4       Full 483093     19-NOV-13 /app/oracle/oradata/orcl/users01.dbf
  5       Full 483093     19-NOV-13 /app/oracle/oradata/orcl/example01.dbf
using channel ORA_DISK_1


List of Archived Log Copies
Key     Thrd Seq     S Low Time  Name
------- ---- ------- - --------- ----
23      1    25      A 19-NOV-13 /app/oracle/flash_recovery_area/ORCL/archivelog/2013_11_19/o1_mf_1_25_98pfzklk_.arc
Media recovery start SCN is 483093
Recovery must be done beyond SCN 483093 to clear data files fuzziness              <=== must beyond scn 483093
Finished restore at 19-NOV-13                 


2)通过x$kcvfh查看文件头SCN是否一致:
SQL> select count(*),fhscn ,fhthr from x$kcvfh group by fhscn,fhthr ;

 COUNT(*) FHSCN FHTHR
---------------- ---------------- ----------------
381 66543501770 1
92 66543505581 1
FHSCN=File Header SCN,以上结果不一致,必须保持FHSCN一致。
x$kcvfh记录了所有数据文件头的SCN。

诊断脚本:
set echo on feedback on time on pagesize 20000
set linesize 300
set pause off
set serveroutput on
set feedback on
set echo on
set numformat 999999999999999
Spool /tmp/recover.lst
alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
select * from v$version;
select to_char(sysdate, 'DD-MON-YYYY HH24:MI:SS') as current_date from dual;
column name format a10

select dbid, name,to_char(created, 'DD-MON-YYYY HH24:MI:SS') created, open_mode, log_mode,
to_char(checkpoint_change#, '999999999999999') as checkpoint_change#,controlfile_type,
to_char(controlfile_change#, '999999999999999') as controlfile_change#,
to_char(controlfile_time, 'DD-MON-YYYY HH24:MI:SS') controlfile_time,
to_char(resetlogs_change#, '999999999999999') as resetlogs_change#,
to_char(resetlogs_time, 'DD-MON-YYYY HH24:MI:SS') resetlogs_time
from v$database;

select * from v$instance;
archive log list;
select substr(name, 1, 50), status from v$datafile;
select substr(name,1,50), recover, fuzzy, checkpoint_change# from v$datafile_header;
select * from v$backup;
select name, open_mode, checkpoint_change#, ARCHIVE_CHANGE# from v$database;
select GROUP#,THREAD#,SEQUENCE#,MEMBERS,ARCHIVED,STATUS,FIRST_CHANGE# from v$log;
select GROUP#,substr(member,1,60) from v$logfile;
select * from v$recover_file;
select * from v$recovery_log;
select HXFIL File_num,substr(HXFNM,1,40) File_name,FHTYP Type,HXERR Validity,
FHSCN SCN, FHTNM TABLESPACE_NAME,FHSTA status ,FHRBA_SEQ Sequence,fhthr thread
from X$KCVFH;

Select distinct (FHSCN),count(*) from X$KCVFH group by fhscn ;
Select distinct (FHSTA),count(*) from X$KCVFH group by FHSTA ;
Select distinct (FHRBA_SEQ),count(*) from X$KCVFH group by FHRBA_SEQ ;
select hxfil,fhsta,fhrba_seq,fhscn ,FHTHR,fhafs from x$kcvfh order by fhscn ;
select count(*),fhscn ,fhthr from x$kcvfh group by fhscn,fhthr ;
rman target /
rman>spool log to '/tmp/rman.log'
rman> restore database preview   <====It will show a summary for a full database restore but will not do a actual restore.
Rman> report schema ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值