Welcome 微信登录

首页 / 数据库 / MySQL / Oracle使用备份控制文件恢复数据库

有备份的control file,但之后我做了ddl操作,导致当前的controlfile比备份的新,然后control file全部丢失,怎么用备份的controlfile来恢复数据库?步骤1:检查当前redo和archive文件sys@PAN>selectgroup#,sequence#,archived,status,first_change#from v$log; GROUP# SEQUENCE# ARC STATUS FIRST_CHANGE#---------- ---------- --- ---------------- -------------1 4 NO CURRENT 4433422 2 YES INACTIVE 4433353 3 YES INACTIVE 443338 sys@PAN>select namefrom v$archived_log where nameis not null; NAME--------------------------------------------------------------------------------/u01/flash_recovery_area/PAN/archivelog/2013_06_23/o1_mf_1_1_8wg0nhky_.arc/u01/flash_recovery_area/PAN/archivelog/2013_06_23/o1_mf_1_2_8wg0njog_.arc/u01/flash_recovery_area/PAN/archivelog/2013_06_23/o1_mf_1_3_8wg0nlhz_.arc步骤2:冷备步骤3:alter database backup controlfileto trace;生成一个trace文件,可以用于恢复控制文件,它是一个文本文件。步骤4:alter database backup controlfileto "/backup/pancontrol.bak";备份当前的控制文件。步骤5:创建一个表空间,然后在此表空间里建表,加数据,目的是让controlfile改变成新的。create tablespace ts_test02 datafile"/u01/oradata/pan/ts_test02_01.dbf" size10m;sqlplus scott/tigercreate table tb_test02 idint) tablespace ts_test02;insert into tb_test02 values(1);insert into tb_test02 values(2);insert into tb_test02 values(3);commit;现在这些改变在哪个日志文件里呢?sys@PAN>selectgroup#,sequence#,archived,statusfrom v$log; GROUP# SEQUENCE# ARC STATUS---------- ---------- --- ----------------1 4 NO CURRENT2 2 YES INACTIVE3 3 YES INACTIVE Elapsed:00:00:00.01理论上在1号日志中,一会要用这个做恢复。步骤6删除当前controlfile步骤7shutdown abort步骤8用备份controlfile转储。[Oracle@oracle11g pan]$ cp/backup/pancontrol.bak control01.ctl[oracle@oracle11g pan]$ cp/backup/pancontrol.bak control02.ctl步骤9起库到mount,若到open会出错:sys@PAN>alter databaseopen;alter databaseopen*ERRORat line1:ORA-01589: mustuse RESETLOGS or NORESETLOGSoption for databaseopen步骤10尝试使用备份的controlfile来恢复数据库。recover database using backup controlfile;结果:sys@PAN>recover databaseusing backup controlfile;ORA-00279: change443470 generated at06/23/201310:23:49 neededfor thread 1ORA-00289: suggestion: /u01/flash_recovery_area/PAN/archivelog/2013_06_23/o1_mf_1_4_%u_.arcORA-00280: change443470 for thread1 is in sequence #4Specify log:{<RET>=suggested| filename | AUTO| CANCEL} 看下这个目录下有没有这个归档日志,发现没有。也就是说数据库会先找你的归档日志来恢复,但我们知道以前的那些DDL操作被记录到1号联机日志里了,所以我要用1号redo日志来做恢复。 继续:recover database using backup controlfile;ORA-00279: change443470 generated at06/23/201310:23:49 neededfor thread 1ORA-00289: suggestion: /u01/flash_recovery_area/PAN/archivelog/2013_06_23/o1_mf_1_4_%u_.arcORA-00280: change443470 for thread1 is in sequence #4Specifylog:{<RET>=suggested| filename | AUTO| CANCEL}/u01/oradata/pan/redo01.logORA-00283: recoverysession canceled due to errorsORA-01244: unnamed datafiles added to control fileby media recoveryORA-01110:data file9:"/u01/oradata/pan/ts_test02_01.dbf"ORA-01112: media recoverynot started又出错了!它说没有这个文件,因为日志里记录着ts_test02_01.dbf,但控制文件里却没有,好的,现在我查看下控制文件里那个文件叫什么。sys@PAN>selectfile#,status,namefrom v$datafile; FILE# STATUS NAME---------- ---------------------------------------------------------------------------------------1 SYSTEM /u01/oradata/pan/system01.dbf2 ONLINE /u01/oradata/pan/sysaux01.dbf3 ONLINE /u01/oradata/pan/lxtbs01.dbf4 ONLINE /u01/oradata/pan/users01.dbf5 ONLINE /u01/oradata/pan/undotbs02.dbf6 ONLINE /u01/oradata/pan/ts_test01.dbf7 ONLINE /u01/oradata/pan/ts_readonly01.dbf8 ONLINE /u01/oradata/pan/app2_01.dbf9 RECOVER /u01/oracle/dbs/UNNAMED00009 9 rows selected.现在明白了,控制文件里的这个文件名为“/u01/oracle/dbs/UNNAMED00009”,我把它先重命名成正确的。sys@PAN>alter databaserename file"/u01/oracle/dbs/UNNAMED00009"2 to"/u01/oradata/pan/ts_test02_01.dbf";现在再一次恢复,使用1号redo日志。recover database using backup controlfile;ORA-00279: change443687 generated at06/23/201310:27:38 neededfor thread 1ORA-00289: suggestion: /u01/flash_recovery_area/PAN/archivelog/2013_06_23/o1_mf_1_4_%u_.arcORA-00280: change443687 for thread1 is in sequence #4Specify log:{<RET>=suggested| filename | AUTO| CANCEL}/u01/oradata/pan/redo01.logLog applied.Media recovery complete.果??,恢复成功!步骤11alter databaseopen resetlogs;步骤12 冷备更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle冷备和热备脚本Oracle日志挖掘相关资讯      恢复Oracle数据库  本文评论 查看全部评论 (0)
表情: 姓名: 字数