Oracle数据库丢失控制文件的恢复四则(七)

2014-11-24 17:02:16 · 作者: · 浏览: 2
0279: change 1294623 generated at 05/13/201314:46:14 needed for thread 1

ORA-00289: suggestion :/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_100_%u_.arc

ORA-00280: change 1294623 for thread 1 isin sequence #100

Specify log: {=suggested |filename | AUTO | CANCEL}

/u02/oradat/bkt/redo01.log

Log applied.

Media recovery complete.

sys@BKT> alter database open resetlogs ;

Database altered.

因为使用了备份的控制文件,所以必须resetlogs

无备份直接重建控制文件

sys@BKT> show parameter control

NAME TYPE VALUE

----------------------------------------------- ------------------------------

control_file_record_keep_time integer 7

control_files string /u02/oradat/bkt/control01.ctl,/u02/flash_recovery_area/bkt/control02.ct

[root@master ~]# rm /u02/oradat/bkt/control01.ctl

rm: remove regular file`/u02/oradat/bkt/control01.ctl' y

[root@master ~]# rm/u02/flash_recovery_area/bkt/control02.ctl

rm: remove regular file`/u02/flash_recovery_area/bkt/control02.ctl' y

sys@BKT> alter system switch logfile

System altered.

sys@BKT> alter system archive logcurrent ;

System altered.

看来不是立刻写入控制文件中。

Errors in file/u01/apps/oracle/diag/rdbms/bkt/bkt/trace/bkt_m000_6382.trc:

ORA-00210: cannot open the specified controlfile

ORA-00202: control file:'/u02/oradat/bkt/control01.ctl'

ORA-27041: unable to open file

Linux-x86_64 Error: 2: No such file ordirectory

Additional information: 3

sys@BKT> create tablespace test1datafile '/u02/oradat/bkt/test1_01.dbf' size 10m ;

Tablespace created.

如果及时的发现数据库未关闭,可以使用下面的命令将重建控制文件的脚本输出到trace文件中,方便后面的控制文件重建操作。

sys@BKT> alter database backupcontrolfile to trace ;

Database altered.

alter :

Backup controlfile written to trace file/u01/apps/oracle/diag/rdbms/bkt/bkt/trace/bkt_ora_5933.trc

Completed: alter database backupcontrolfile to trace

如果没有及时的发现已经丢失了所有的控制文件,这里重建控制文件需要知道一些额外的信息,包括redolog的位置、数据文件的位置还有字符集。(这里也可以使用snapshot控制文件来生成trace文件)

sys@BKT> shutdown immediate

Database closed.

ORA-00210: cannot open the specifiedcontrol file

ORA-00202: control file:'/u02/oradat/bkt/control01.ctl'

ORA-27041: unable to open file

Linux-x86_64 Error: 2: No such file ordirectory

Additional information: 3

sys@BKT> shutdown abort ;

sys@BKT> alter database mount ;

alter database mount

*

ERROR at line 1:

ORA-00205: error in identifying controlfile, check alert log for more info

如果这里重做日志没有损坏,则可以以noresetlogs的方式重建控制文件

CREATE CONTROLFILE REUSE DATABASE"BKT" NORESETLOGS ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/u02/oradat/bkt/redo01.log' SIZE 50M BLOCKSIZE 512,

GROUP 2 '/u02/oradat/bkt/redo02.log' SIZE 50M BLOCKSIZE 512,

GROUP 3 '/u02/oradat/bkt/redo03.log' SIZE 50M BLOCKSIZE 512

-- STANDBY LOGFILE

DATAFILE

'/u02/oradat/bkt/system01.dbf',

'/u02/oradat/bkt/sysaux01.dbf',

'/u02/oradat/bkt/undotbs01.dbf',

'/u02/oradat/bkt/test1_01.dbf',

'/u02/oradat/bkt/users01.dbf',

'/u02/oradat/bkt/example01.dbf'

CHARACTER SET ZHS16GBK

;

这里改变了数据文件的位置

sys@BKT> CREATE CONTROLFILE REUSEDATABASE "BKT" NORESETLOGS ARCHIVELOG

2 MAXLOGFILES 16

3 MAXLOGMEMBERS 3

4 MAXDATAFILES 100

5 MAXINSTANCES 8

6 MAXLOGHISTORY 292

7 LOGFILE

8 GROUP 1'/u02/oradat/bkt/redo01.log' SIZE 50MBLOCKSIZE 512,

9 GROUP 2'/u02/oradat/bkt/redo02.log' SIZE 50MBLOCKSIZE 512,

10 GROUP 3 '/u02/oradat/