问题描述:①我将库shutdown immediate后冷备(数据文件、控制文件、日志文件)
          ②然后把库startup起来,做一系列的操作,提交,切归档。shutdown immediate
          ③然后把冷备的数据文件和日志文件拿来+做了一系列操作后的控制文件;我能不能跑归档把这个库恢复出来?实验过程:
1、停库做冷备份
[oracle@dba oradata]$ cp -R tt ttbak
[oracle@dba oradata]$ ls
testbak  testyd  tt  ttbak---其中tt目录是库的数据文件、控制文件、日志文件2、把库起来做一系列的操作:Database opened.
SQL> conn scott/tiger
Connected.
SQL> create table t1 as select * from emp;Table created.SQL> insert into t1 select * from t1;14 rows created.SQL> /28 rows created.SQL> /56 rows created.SQL> commit;Commit complete.SQL> conn /as sysdba
Connected.
SQL> alter system switch logfile;System altered.SQL> alter system switch logfile;System altered.SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down3、现在我用我的冷备份的数据文件和日志文件+做了一系列操作后的控制文件去跑归档恢复数据库[oracle@dba oradata]$ ls
testbak  testyd  tt  ttbak
[oracle@dba oradata]$ mv tt tt001
[oracle@dba oradata]$ cp -R ttbak tt
[oracle@dba oradata]$ rm -rf tt/*.ctl
[oracle@dba oradata]$ cp tt001/*.ctl tt/
[oracle@dba oradata]$ ls
testbak  testyd  tt  tt001  ttbak------现在tt目录下是冷备份的数据文件和日志文件+做了操作后的控制文件------好,准备工作做完了,下面就是重点了
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.Total System Global Area 1224736768 bytes
Fixed Size                  1219112 bytes
Variable Size             318768600 bytes
Database Buffers          889192448 bytes
Redo Buffers               15556608 bytes
Database mounted.
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/u01/app/oracle/oradata/tt/system01.dbf'
SQL> select status from v$instance;STATUS
------------
MOUNTEDSQL> recover database until cancel
ORA-00279: change 5571109 generated at 07/24/2013 15:07:32 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_20_%u_.arc
ORA-00280: change 5571109 for thread 1 is in sequence #20
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}ORA-00279: change 5572050 generated at 07/24/2013 15:30:09 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_21_%u_.arc
ORA-00280: change 5572050 for thread 1 is in sequence #21
ORA-00278: log file
'/u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_20_8yz0n14
7_.arc' no longer needed for this recovery
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}ORA-00279: change 5572053 generated at 07/24/2013 15:30:15 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_22_%u_.arc
ORA-00280: change 5572053 for thread 1 is in sequence #22
ORA-00278: log file
'/u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_21_8yz0n7n
t_.arc' no longer needed for this recovery
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}ORA-00308: cannot open archived log
'/u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_22_%u_.arc
'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
SQL> recover database until cancel
ORA-00279: change 5572053 generated at 07/24/2013 15:30:15 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_22_%u_.arc
ORA-00280: change 5572053 for thread 1 is in sequence #22
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [2730], [314], [1], [3], [22], [19],
[], []
在我认为应该是可以根据做过操作的控制文件+归档日志去恢复数据文件的,当然联机日志中的数据可能会丢失,因为联机日志也是以前的冷备份,但是为什么我resetlogs开启数据库不能成功?备份Oracle

解决方案 »

  1.   

    顶一下~
    从新做了以下这个实验
    如果用recover database using backup controlfile会是以下这样:SQL> recover database using backup controlfile;
    ORA-00279: change 5571109 generated at 07/24/2013 15:07:32 needed for thread 1
    ORA-00289: suggestion :
    /u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_20_%u_.arc
    ORA-00280: change 5571109 for thread 1 is in sequence #20
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}ORA-00279: change 5572050 generated at 07/24/2013 15:30:09 needed for thread 1
    ORA-00289: suggestion :
    /u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_21_%u_.arc
    ORA-00280: change 5572050 for thread 1 is in sequence #21
    ORA-00278: log file
    '/u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_20_8yz0n14
    7_.arc' no longer needed for this recovery
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}ORA-00279: change 5572053 generated at 07/24/2013 15:30:15 needed for thread 1
    ORA-00289: suggestion :
    /u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_22_%u_.arc
    ORA-00280: change 5572053 for thread 1 is in sequence #22
    ORA-00278: log file
    '/u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_21_8yz0n7n
    t_.arc' no longer needed for this recovery
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}ORA-00308: cannot open archived log
    '/u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_22_%u_.arc
    '
    ORA-27037: unable to obtain file status
    Linux Error: 2: No such file or directory
    Additional information: 3
    SQL> recover database using backup controlfile;
    ORA-00279: change 5572053 generated at 07/24/2013 15:30:15 needed for thread 1
    ORA-00289: suggestion :
    /u01/app/oracle/flash_recovery_area/TT/archivelog/2013_07_24/o1_mf_1_22_%u_.arc
    ORA-00280: change 5572053 for thread 1 is in sequence #22
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    cancel
    Media recovery cancelled.
    SQL> alter database open resetlogs;
    alter database open resetlogs
    *
    ERROR at line 1:
    ORA-01113: file 1 needs media recovery
    ORA-01110: data file 1: '/u01/app/oracle/oradata/tt/system01.dbf'

    --------------------
    SQL> select * from v$recover_file;     FILE# ONLINE  ONLINE_ ERROR         CHANGE# TIME
    ---------- ------- ------- ---------- ---------- ------------
             1 ONLINE  ONLINE                5572053 24-JUL-13
             2 ONLINE  ONLINE                5572053 24-JUL-13
             3 ONLINE  ONLINE                5572053 24-JUL-13
             4 ONLINE  ONLINE                5572053 24-JUL-13SQL> select name,checkpoint_change# from v$datafile_header;NAME                                     CHECKPOINT_CHANGE#
    ---------------------------------------- ------------------
    /u01/app/oracle/oradata/tt/system01.dbf             5572053
    /u01/app/oracle/oradata/tt/undotbs01.dbf            5572053
    /u01/app/oracle/oradata/tt/sysaux01.dbf             5572053
    /u01/app/oracle/oradata/tt/users01.dbf              5572053SQL> select name,checkpoint_change# from v$datafile;NAME                                     CHECKPOINT_CHANGE#
    ---------------------------------------- ------------------
    /u01/app/oracle/oradata/tt/system01.dbf             5572160
    /u01/app/oracle/oradata/tt/undotbs01.dbf            5572160
    /u01/app/oracle/oradata/tt/sysaux01.dbf             5572160
    /u01/app/oracle/oradata/tt/users01.dbf              5572160SQL> select checkpoint_change# from v$database;CHECKPOINT_CHANGE#
    ------------------
               5572160
      

  2.   

    难道是文件头的SCN:select name,checkpoint_change# from v$datafile_header;
    和控制文件中文件的SCN:select name,checkpoint_change# from v$datafile;
    不一致就不能启库?
    也不对啊~~我resetlogs了啊,而且要是不完全恢复怎么办?不也不一致吗
    有点蒙了
    求高手解释