联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
在很多时候,我们需要使用备份控制文件恢复数据库,在恢复完成后,准备打开库,很多人知道这个时候如果要打开这个库,需要使用resetlogs操作,虽然在oracle 10g及其以后版本中在恢复的时候可以跨越resetlogs操作,但是很多时候大家还是希望使用备份的控制文件能够正常的open一个库,而不是resetlogs.这里通过实验展示使用备份控制文件正常open库的过程,整体思路是:先使用备份控制文件正常恢复数据库,然后重建该控制文件,继而可以正常open库
SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production PL/SQL Release 9.2.0.4.0 - Production CORE 9.2.0.3.0 Production TNS for Linux: Version 9.2.0.4.0 - Production NLSRTL Version 9.2.0.4.0 - Production SQL> alter database backup controlfile to '/tmp/controlfile.bak'; Database altered. SQL> alter system switch logfile; System altered. SQL> / System altered. SQL> / System altered. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. --替换备份的控制文件 SQL> startup mount; ORACLE instance started. Total System Global Area 353441008 bytes Fixed Size 451824 bytes Variable Size 184549376 bytes Database Buffers 167772160 bytes Redo Buffers 667648 bytes Database mounted. SQL> recover database using backup controlfile; ORA-00279: change 12286827844770 generated at 04/12/2012 00:21:54 needed for thread 1 ORA-00289: suggestion : /u01/oracle/oradata/xifenfei/archive/1_4.dbf ORA-00280: change 12286827844770 for thread 1 is in sequence #4 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} auto ORA-00279: change 12286827844772 generated at 04/12/2012 00:21:55 needed for thread 1 ORA-00289: suggestion : /u01/oracle/oradata/xifenfei/archive/1_5.dbf ORA-00280: change 12286827844772 for thread 1 is in sequence #5 ORA-00278: log file '/u01/oracle/oradata/xifenfei/archive/1_4.dbf' no longer needed for this recovery ORA-00279: change 12286827844776 generated at 04/12/2012 00:21:58 needed for thread 1 ORA-00289: suggestion : /u01/oracle/oradata/xifenfei/archive/1_6.dbf ORA-00280: change 12286827844776 for thread 1 is in sequence #6 ORA-00278: log file '/u01/oracle/oradata/xifenfei/archive/1_5.dbf' no longer needed for this recovery ORA-00308: cannot open archived log '/u01/oracle/oradata/xifenfei/archive/1_6.dbf' 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 12286827844776 generated at 04/12/2012 00:21:58 needed for thread 1 ORA-00289: suggestion : /u01/oracle/oradata/xifenfei/archive/1_6.dbf ORA-00280: change 12286827844776 for thread 1 is in sequence #6 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} /u01/oracle/oradata/xifenfei/redo02.log ORA-00310: archived log contains sequence 3; sequence 6 required ORA-00334: archived log: '/u01/oracle/oradata/xifenfei/redo02.log' SQL> recover database using backup controlfile; ORA-00279: change 12286827844776 generated at 04/12/2012 00:21:58 needed for thread 1 ORA-00289: suggestion : /u01/oracle/oradata/xifenfei/archive/1_6.dbf ORA-00280: change 12286827844776 for thread 1 is in sequence #6 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} /u01/oracle/oradata/xifenfei/redo03.log Log applied. Media recovery complete. SQL> alter database open; alter database open * ERROR at line 1: ORA-01589: must use RESETLOGS or NORESETLOGS option for database open --提示需要resetlogs SQL> alter database backup controlfile to trace as '/tmp/1.txt'; Database altered. SQL> shutdown immediate; ORA-01109: database not open Database dismounted. ORACLE instance shut down. SQL> STARTUP NOMOUNT Total System Global Area 353441008 bytes Fixed Size 451824 bytes Variable Size 184549376 bytes Database Buffers 167772160 bytes Redo Buffers 667648 bytes --重建控制文件 --自动启动到mount状态 --数据库直接open成功 SQL> alter database open; Database altered.
一处笔误,非”替换备份的归档日志”
应”替换备份的控制文件”
整体思路是:先使用备份控制文件正常恢复数据库,然后重建该控制文件,继而可以正常open库
>>问:省略”先使用备份控制文件正常恢复数据库”这一步骤,直接”重建控制文件”不行么?
“先使用备份控制文件正常恢复数据库”的目的是什么?
lonion,
已经更正,谢谢
请问为什么用重建控制文件的方式open库?用resetlogs方式有什么问题吗
resetlogs 对于数据库的一些信息需要额外处理,比如备份,闪回等