1.删除控制文件
rm -f control0*
2.验证
SQL> select * from v$datafile;
select * from v$datafile
*
ERROR at line 1:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/oradata/demo1/control01.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
3.关闭数据库
SQL> shutdown abort;
ORACLE instance shut down.
4.拷贝备份控制文件到相应位置
cp control0* /u01/app/oracle/oradata/demo1/
5.启动数据库到mount状态
SQL> startup mount
6.恢复数据库
SQL> recover database using backup controlfile;
ORA-00283: recovery session canceled due to errors
ORA-19909: datafile 1 belongs to an orphan incarnation
ORA-01110: data file 1: '/u01/app/oracle/oradata/demo1/system01.dbf'
7.手工创建控制文件
使数据库状态到nomount状态
SQL> startup nomount force;
SQL> @ctlsql.sql
8.打开数据库
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/demo1/system01.dbf'
9.产生错误(因为redo log产生时间晚于控制文件时间),通过指定
relog地址,进行恢复
SQL> recover database using backup controlfile;
ORA-00279: change 505374 generated at 12/14/2011 20:58:35 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/DEMO1/archivelog/2011_12_14/o1_mf_1_1_%u_.ar
c
ORA-00280: change 505374 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/demo1/redo01.log
ORA-00339: archived log does not contain any redo
ORA-00334: archived log: '/u01/app/oracle/oradata/demo1/redo01.log'
SQL> recover database using backup controlfile;
ORA-00279: change 505374 generated at 12/14/2011 20:58:35 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/DEMO1/archivelog/2011_12_14/o1_mf_1_1_%u_.ar
c
ORA-00280: change 505374 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/demo1/redo02.log
ORA-00339: archived log does not contain any redo
ORA-00334: archived log: '/u01/app/oracle/oradata/demo1/redo02.log'
SQL> recover database using backup controlfile;
ORA-00279: change 505374 generated at 12/14/2011 20:58:35 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/DEMO1/archivelog/2011_12_14/o1_mf_1_1_%u_.ar
c
ORA-00280: change 505374 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/demo1/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
10.打开数据库
SQL> alter database open resetlogs;
Database altered.