和next_change#之间。我们恢复的时候,就从归档日志11开始。那么,我们到底需要多少的归档日志呢?
[sql]
SQL> select sequence#,first_change#,next_change# from v$archived_log
2 where sequence#>=11;
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
---------- ------------- ------------
11 583374 586090
12 586090 586181
13 586181 586656
14 586656 586676
15 586676 586704
16 586704 586734
17 586734 586762
18 586762 586816
从上面可知,如果我们想把数据全部找回,我们需要借助到归档日志18.我们看一下这些first_change#和next_change#有什么特色?
归档日志11的next_change#是归档日志12的first_change#。以此类推,所以,这么多的归档日志,其实,逻辑上就只是一个归档日志。因此,归档日志必须连续!如果,你归档日志13坏了,那么只能恢复到12的next_change#。后面再多的归档也是徒然。
接下来,我们开始恢复。 www.2cto.com
[sql]
SQL> recover datafile 1;
ORA-00279: change 583375 generated at 07/17/2012 19:59:23 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2012_07_18/o1_mf_1_11_%u_.ar
c
ORA-00280: change 583375 for thread 1 is in sequence #11
Specify log: {=suggested | filename | AUTO | CANCEL}
oracle告诉我们,583375 对于实例是需要的。并且,归档日志11在闪回区。如果敲回车,则采纳oracle的建议,oracle会自己到闪回区里面去找。我们敲一下回车键采纳oracle的建议。第二个选项,是不在默认路径里面,由你来告诉oracle,归档日志身在何处。你只要告诉oracle,归档日志的绝对路径+名称,就可以了。第三个选项,如果归档日志很多,一个个挨着去找,显得很麻烦,那么我们就去auto。第四个选项,如果恢复到一半,或者,没有了归档日志,那么你可以敲cancel。
[sql]
ORA-00279: change 586090 generated at 07/18/2012 09:35:40 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2012_07_18/o1_mf_1_12_%u_.ar
c
ORA-00280: change 586090 for thread 1 is in sequence #12
ORA-00278: log file
'/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2012_07_18/o1_mf_1_11_80d4q
dmh_.arc' no longer needed for this recovery
Specify log: {=suggested | filename | AUTO | CANCEL}
这时,oracle会再告诉我们,日志12是实例所需要的。我们先把这事给搁着。先去数据文件文件头,把scn给取出来瞧瞧。
[sql]
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 586090
2 0
3 0
4 0
5 587004
发现没?file 1 的scn变成了586090。而586090是归档日志12的first_change#。难怪oracle告诉我们日志12是实例必须的。接下来,我们敲auto。
[sql]
Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 586181 generated at 07/18/2012 09:39:21 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2012_07_18/o1_mf_1_13_%u_.ar
c
ORA-00280: change 586181 for thread 1 is in sequence #13
ORA-00278: log file
'/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2012_07_18/o1_mf_1_12_80d4y
9fp_.arc' no longer needed for this recovery
ORA-00279: change 586656 generated at 07/18/2012 09:42:06 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2012_07_18/o1_mf_1_14_%u_.ar
c
ORA-00280: change 586656 for thread 1 is in sequence #14
ORA-00278: log file
'/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2012_07_18/o1_mf_1_13_80d53
g42_.arc' no longer needed for this recovery
ORA-00279: change