关于备份恢复的一个小问题,(冷备+当前的控制文件能不能跑归档?)
问题描述:①我将库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 down
3、现在我用我的冷备份的数据文件和日志文件+做了一系列操作后的控制文件去跑归档恢复数据库
[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
------------
MOUNTED
SQL> 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
[解决办法]
可以,需要重建控制文件就好了
[解决办法]
控制文件内有跟归档日志相关的信息,冷备份之后的控制文件经过你的归档切换之后,控制文件发生改变了。要想恢复只能听楼上飞总的,重建控制文件。
[解决办法]
直接给我打电话吧,010-82705082