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

下文介绍了Oracle数据库中丢失控制文件的几种处理方法。

丢失单个控制文件

报错信息:

2013-05-08 03:00:29.678000 +08:00

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

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

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

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

1、直接手动关闭了,其实数据库会自动的关闭。

shutdown abort ;

2、以下有两种方法

2.1、拷贝控制文件到原来的目录

cp/u02/flash_recovery_area/bkt/control02.ctl /u02/oradat/bkt/control01.ctl

2.2、启动到nomount后设置control_files的位置,将丢失的控制文件路径去掉

alter system setcontrol_files='/u02/flash_recovery_area/bkt/control02.ctl' scope=spfile ;

3.启动数据库即可

startup

下面介绍丢失所有控制文件的时候应该怎么做

使用冷备份的控制文件恢复

以下为详细的示例:

1. backup controlfile

show controlfile

copy

rman target /

backup controlfile current format '' ;

output :

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.ctl

control_management_pack_access      string      DIAGNOSTIC+TUNING

--instance still running ...

[oracle@master ~]$ cp/u02/oradat/bkt/control01.ctl /tmp/control01.ctl

2. create tablespace

conn / as sysdba

define tbsname1='tbs1'

define tbsname2='tbs2'

define dfpath1='/u02/oradat/bkt/tbs101.dbf'

define dfpath2='/u02/oradat/bkt/tbs201.dbf'

create tablespace &tbsname1 datafile'&dfpath1' size 100m ;

create tablespace &tbsname2 datafile'&dfpath2' size 100m ;

create table &tbsname1 tablespace&tbsname1 as select * from all_objects ;

create table &tbsname2 tablespace&tbsname2 as select * from all_objects ;

select count(*) from &tbsname1 ;

select count(*) from &tbsname2 ;

alter tablespace &tbsname1 read only ;

output :

sys@BKT> conn / as sysdba

Connected.

sys@BKT>

sys@BKT> define tbsname1='tbs1'

sys@BKT> define tbsname2='tbs2'

sys@BKT>

sys@BKT> definedfpath1='/u02/oradat/bkt/tbs101.dbf'

sys@BKT> definedfpath2='/u02/oradat/bkt/tbs201.dbf'

sys@BKT> create tablespace &tbsname1datafile '&dfpath1' size 100m ;

old  1: create tablespace &tbsname1 datafile '&dfpath1' size 100m

new  1: create tablespace tbs1 datafile '/u02/oradat/bkt/tbs101.dbf' size100m

Tablespace created.

sys@BKT> create tablespace &tbsname2datafile '&dfpath2' size 100m ;

old  1: create tablespace &tbsname2 datafile '&dfpath2' size 100m

new  1: create tablespace tbs2 datafile '/u02/oradat/bkt/tbs201.dbf' size100m

Tablespace created.

sys@BKT> create table &tbsname1tablespace &tbsname1 as select * from all_objects ;

old  1: create table &tbsname1 tablespace &tbsname1 as select * fromall_objects

new  1: create table tbs1 tablespace tbs1 as select * from all_objects

Table created.

sys@BKT> create table &tbsname2tablespace &tbsname2 as select * from all_objects ;

old  1: create table &tbsname2 tablespace &tbsname2 as select * fromall_objects

new  1: create table tbs2 tablespace tbs2 as select * from all_objects

Table created.

sys@BKT> select count(*) from&tbsname1 ;

old  1: select count(*) from &tbsname1

new  1: select count(*) from tbs1

 COUNT(*)

----------

    72780

sys@BKT> select count(*) from&tbsname2 ;

old  1: select count(*) from &tbsname2

new  1: select count(*) from tbs2

 COUNT(*)

----------

    72781

sys@BKT> alter tablespace &tbsname1read only ;

old  1: alter tablespace &tbsname1 read only

new  1: alter tablespace tbs1 read only

Tablespace altered.

sys@BKT>

3. switch logfile

alter system switch logfile  ;

alter system switch logfile  ;

alter system switch logfile  ;

alter system switch logfile  ;

alter system switch logfile  ;

output :

sys@BKT> alter system switchlogfile  ;

alter system switch logfile  ;

alter system switch logfile  ;

alter system switch logfile  ;

System altered.

sys@BKT>

System altered.

sys@BKT>

System altered.

sys@BKT>

System altered.

4. remove controlfile

rm /u02/oradat/bkt/control01.ctl

rm/u02/flash_recovery_area/bkt/control02.ctl

output :

[oracle@master ~]$ rm/u02/oradat/bkt/control01.ctl

[oracle@master ~]$ rm/u02/flash_recovery_area/bkt/control02.ctl

--from alert .

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

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

5. shutdown database

shutdown abort

output :

sys@BKT> shutdown abort ;

ORACLE instance shut down.

6. using backup controlfile

--copy backup controlfile to thecontrolfile path which defined in the parameter .

cp /tmp/control01.ctl/u02/oradat/bkt/control01.ctl

cp /tmp/control01.ctl/u02/flash_recovery_area/bkt/control02.ctl

recover

output :

cp /tmp/control01.ctl /u02/oradat/bkt/control01.ctl

cp /tmp/control01.ctl/u02/flash_recovery_area/bkt/control02.ctl

sys@BKT> startup

ORACLE instance started.

Total System Global Area  417546240 bytes

Fixed Size                  2228944 bytes

Variable Size            318770480 bytes

Database Buffers          88080384 bytes

Redo Buffers                8466432 bytes

Database mounted.

ORA-01122: database file 1 failedverification check

ORA-01110: data file 1:'/u02/oradat/bkt/system01.dbf'

ORA-01207: file is more recent than controlfile - old control file

--from alert

ALTER DATABASE OPEN

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

ORA-01122: database file 1 failedverification check

ORA-01110: data file 1:'/u02/oradat/bkt/system01.dbf'

<<<ORA-01207: file is more recentthan control file - old control file>>>

ORA-1122 signalled during: ALTER DATABASEOPEN...

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

ORA-00338: log 1 of thread 1 is more recentthan control file

ORA-00312: online log 1 thread 1:'/u02/oradat/bkt/redo01.log'

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

ORA-00338: log 1 of thread 1 is more recentthan control file

ORA-00312: online log 1 thread 1:'/u02/oradat/bkt/redo01.log'

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

ORA-00338: log 2 of thread 1 is more recentthan control file

ORA-00312: online log 2 thread 1:'/u02/oradat/bkt/redo02.log'

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

ORA-00338: log 2 of thread 1 is more recentthan control file

ORA-00312: online log 2 thread 1:'/u02/oradat/bkt/redo02.log'

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

ORA-00338: log 3 of thread 1 is more recentthan control file

ORA-00312: online log 3 thread 1:'/u02/oradat/bkt/redo03.log'

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

ORA-00338: log 3 of thread 1 is more recentthan control file

ORA-00312: online log 3 thread 1:'/u02/oradat/bkt/redo03.log'

Checker run found 1 new persistent datafailures

[oracle@master ~]$ oerr ora 01207

01207, 00000, "file is more recentthan control file - old control file"

// *Cause: The control file change sequence number in the data file is

//        greater than the number in the control file. This implies that

//        the wrong control file is being used. Note that repeatedly causing

//        this error can make it stop happening without correcting the real

//        problem. Every attempt to open the database will advance the

//        control file change sequence number until it is great enough.

// *Action: Use the current control file ordo backup control file recovery to

//        make the control file current. Be sure to follow all restrictions

//        on doing a backup control file recovery.

--显然没有我们最近创建的两个表空间

sys@BKT> select name from v$datafile ;

NAME

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

/u02/oradat/bkt/system01.dbf

/u02/oradat/bkt/sysaux01.dbf

/u02/oradat/bkt/undotbs01.dbf

/u02/oradat/bkt/users01.dbf

/u02/oradat/bkt/example01.dbf

/u02/oradat/bkt/test1_01.dbf

6 rows selected.

--controlfile_change# low rba ,checkpoint_change#

sys@BKT> select checkpoint_change#,CONTROLFILE_SEQUENCE# ,CONTROLFILE_CHANGE#  fromv$database ;

CHECKPOINT_CHANGE# CONTROLFILE_SEQUENCE#CONTROLFILE_CHANGE#

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

          1281710                  3287            1293684

sys@BKT> select min(checkpoint_change#)from V$datafile_header ;

MIN(CHECKPOINT_CHANGE#)

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

                1270438

sys@BKT> selectgroup#,first_change#,next_change# from v$log ;

   GROUP# FIRST_CHANGE# NEXT_CHANGE#

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

        1      1273500      1273646

        3      1274338  2.8147E+14

        2      1273646      1274338

sys@BKT> recover database;

ORA-00283: recovery session canceled due toerrors

ORA-01122: database file 1 failedverification check

ORA-01110: data file 1:'/u02/oradat/bkt/system01.dbf'

ORA-01207: file is more recent than controlfile - old control file

sys@BKT> recover database using backup controlfile ;

ORA-00279: change 1293684 generated at05/08/2013 14:29:38 needed for thread 1

ORA-00289: suggestion :/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_93_8s2qoprf_.arc

ORA-00280: change 1293684 for thread 1 isin sequence #93

Specify log: {<RET>=suggested |filename | AUTO | CANCEL}

auto

ORA-00283: recovery session canceled due toerrors

ORA-01244: unnamed datafile(s) added tocontrol file by media recovery

ORA-01110: data file 7:'/u02/oradat/bkt/tbs101.dbf'

ORA-01112: media recovery not started

这时候第七号文件已经加回来了。

sys@BKT> recover database using backupcontrolfile ;

ORA-00283: recovery session canceled due toerrors

ORA-01111: name for data file 7 is unknown- rename to correct file

ORA-01110: data file 7:'/u01/apps/oracle/product/11gr2/db_1/dbs/UNNAMED00007'

ORA-01157: cannot identify/lock data file 7- see DBWR trace file

ORA-01111: name for data file 7 is unknown- rename to correct file

ORA-01110: data file 7: '/u01/apps/oracle/product/11gr2/db_1/dbs/UNNAMED00007'

sys@BKT> select name from v$datafile ;

NAME

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

/u02/oradat/bkt/system01.dbf

/u02/oradat/bkt/sysaux01.dbf

/u02/oradat/bkt/undotbs01.dbf

/u02/oradat/bkt/users01.dbf

/u02/oradat/bkt/example01.dbf

/u02/oradat/bkt/test1_01.dbf

/u01/apps/oracle/product/11gr2/db_1/dbs/UNNAMED00007

7 rows selected.

                   

offline以下再恢复

sys@BKT> alter database datafile 7offline ;

Database altered.

sys@BKT> recover database using backupcontrolfile ;

ORA-00279: change 1293752 generated at05/13/2013 14:42:44 needed for thread 1

ORA-00289: suggestion :/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_93_8s2qoprf_.arc

ORA-00280: change 1293752 for thread 1 isin sequence #93

Specify log: {<RET>=suggested |filename | AUTO | CANCEL}

auto

ORA-00283: recovery session canceled due toerrors

ORA-01244: unnamed datafile(s) added tocontrol file by media recovery

ORA-01110: data file 8: '/u02/oradat/bkt/tbs201.dbf'

ORA-01112: media recovery not started

这时候最后一个数据文件也加回来了

sys@BKT> select name from v$datafile ;

NAME

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

/u02/oradat/bkt/system01.dbf

/u02/oradat/bkt/sysaux01.dbf

/u02/oradat/bkt/undotbs01.dbf

/u02/oradat/bkt/users01.dbf

/u02/oradat/bkt/example01.dbf

/u02/oradat/bkt/test1_01.dbf

/u01/apps/oracle/product/11gr2/db_1/dbs/UNNAMED00007

/u01/apps/oracle/product/11gr2/db_1/dbs/UNNAMED00008

8 rows selected.

因为是表空间是readonly的,数据文件这里需要修改一下名称

sys@BKT> alter database rename file'/u01/apps/oracle/product/11gr2/db_1/dbs/UNNAMED00008' to'/u02/oradat/bkt/tbs201.dbf' ;

Database altered.

sys@BKT> alter database rename file'/u01/apps/oracle/product/11gr2/db_1/dbs/UNNAMED00007' to '/u02/oradat/bkt/tbs101.dbf';

 

Database altered.

sys@BKT> alter database datafile 7online ;

Database altered.

再次恢复

sys@BKT> recover database using backup controlfile ;

ORA-00279: change 1294029 generated at05/13/2013 14:42:58 needed for thread 1

ORA-00289: suggestion :/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_93_8s2qoprf_.arc

ORA-00280: change 1294029 for thread 1 isin sequence #93

Specify log: {<RET>=suggested |filename | AUTO | CANCEL}

auto

ORA-00279: change 1294568 generated at05/13/2013 14:44:22 needed for thread 1

ORA-00289: suggestion :/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_94_8s2qoqjj_.arc

ORA-00280: change 1294568 for thread 1 isin sequence #94

ORA-00278: log file'/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_93_8s2qoprf_.arc'

no longer needed for this recovery

ORA-00279: change 1294571 generated at05/13/2013 14:44:22 needed for thread 1

ORA-00289: suggestion :/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_95_8s2qovq1_.arc

ORA-00280: change 1294571 for thread 1 isin sequence #95

ORA-00278: log file'/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_94_8s2qoqjj_.arc'

no longer needed for this recovery

ORA-00279: change 1294574 generated at05/13/2013 14:44:27 needed for thread 1

ORA-00289: suggestion :/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_96_8s2qovsh_.arc

ORA-00280: change 1294574 for thread 1 isin sequence #96

ORA-00278: log file'/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_95_8s2qovq1_.arc'

no longer needed for this recovery

ORA-00279: change 1294577 generated at05/13/2013 14:44:27 needed for thread 1

ORA-00289: suggestion : /u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_97_8s2qow0z_.arc

ORA-00280: change 1294577 for thread 1 isin sequence #97

ORA-00278: log file'/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_96_8s2qovsh_.arc'

no longer needed for this recovery

ORA-00279: change 1294580 generated at05/13/2013 14:44:27 needed for thread 1

ORA-00289: suggestion :/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_98_8s2qs51d_.arc

ORA-00280: change 1294580 for thread 1 isin sequence #98

ORA-00278: log file '/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_97_8s2qow0z_.arc'

no longer needed for this recovery

ORA-00279: change 1294620 generated at05/13/2013 14:46:13 needed for thread 1

ORA-00289: suggestion :/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_99_8s2qs62m_.arc

ORA-00280: change 1294620 for thread 1 isin sequence #99

ORA-00278: log file'/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_98_8s2qs51d_.arc'

no longer needed for this recovery

ORA-00279: change 1294623 generated at05/13/2013 14: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

ORA-00278: log file'/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_99_8s2qs62m_.arc'

no longer needed for this recovery

ORA-00308: cannot open archived log

'/u02/flash_recovery_area/BKT/archivelog/2013_05_13/o1_mf_1_100_%u_.arc'

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file ordirectory

Additional information: 3

[oracle@master 2013_05_13]$ ls -ltr

total 31744

-rw-r----- 1 oracle oinstall    1024 May 13 14:44 o1_mf_1_94_8s2qoqjj_.arc

-rw-r----- 1 oracle oinstall 32441344 May13 14:44 o1_mf_1_93_8s2qoprf_.arc

-rw-r----- 1 oracle oinstall    1024 May 13 14:44 o1_mf_1_96_8s2qovsh_.arc

-rw-r----- 1 oracle oinstall    3072 May 13 14:44 o1_mf_1_95_8s2qovq1_.arc

-rw-r----- 1 oracle oinstall    1024 May 13 14:44 o1_mf_1_97_8s2qow0z_.arc

-rw-r----- 1 oracle oinstall    1536 May 13 14:46 o1_mf_1_98_8s2qs51d_.arc

-rw-r----- 1 oracle oinstall    1024 May 13 14:46 o1_mf_1_99_8s2qs62m_.arc

idle> select sequence# , group# , statusfrom v$log ;

 SEQUENCE#    GROUP# STATUS

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

       91          1 INACTIVE

       93          3 CURRENT

       92          2 INACTIVE

idle> select group#,member fromv$logfile ;

   GROUP# MEMBER

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

        2 /u02/oradat/bkt/redo02.log

        1 /u02/oradat/bkt/redo01.log

        3 /u02/oradat/bkt/redo03.log

sys@BKT> recover database using backupcontrolfile ;

ORA-00279: change 1294623 generated at05/13/2013 14: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: {<RET>=suggested |filename | AUTO | CANCEL}

/u02/oradat/bkt/redo03.log

ORA-00310: archived log contains sequence99; sequence 100 required

ORA-00334: archived log:'/u02/oradat/bkt/redo03.log'

sys@BKT> recover database using backupcontrolfile ;

ORA-00279: 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: {<RET>=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.ctl

[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/bkt/redo03.log' SIZE 50M BLOCKSIZE 512

 11  --STANDBY LOGFILE

 12 DATAFILE

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

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

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

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

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

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

 19 CHARACTER SET ZHS16GBK

 20  ;

Control file created.

sys@BKT> select status from v$instance ;

STATUS

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

MOUNTED

也可能需要手动的recover一下

recover database

sys@BKT> alter database open ;

Database altered.

添加临时文件

sys@BKT> ALTER TABLESPACE TEMP ADDTEMPFILE '/u02/oradat/bkt/temp01.dbf';

RMAN> list backup ;

specification does not match any backup inthe repository

RMAN> catalog db_recovery_file_dest ;

RMAN> list backup ;

List of Backup Sets

===================

BS Key Type LV Size      Device TypeElapsed Time Completion Time

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

1      Full    1.07G      DISK        00:00:00    18-APR-13     

       BP Key: 1  Status: AVAILABLE  Compressed: NO  Tag: TAG20130418T223159

       Piece Name:/u02/flash_recovery_area/BKT/backupset/2013_04_18/o1_mf_nnndf_TAG20130418T223159_8q00yzs1_.bkp

 List of Datafiles in backup set 1

 File LV Type Ckp SCN    CkpTime  Name

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

 1      Full 1095500    18-APR-13 /u02/oradat/bkt/system01.dbf

 2      Full 1095500    18-APR-13 /u02/oradat/bkt/sysaux01.dbf

 3      Full 1095500    18-APR-13 /u02/oradat/bkt/undotbs01.dbf

  4       Full 1095500    18-APR-13 /u02/oradat/bkt/users01.dbf

 5      Full 1095500    18-APR-13 /u02/oradat/bkt/example01.dbf

BS Key Type LV Size      Device TypeElapsed Time Completion Time

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

2      Full    9.36M      DISK        00:00:00    18-APR-13     

       BP Key: 2  Status: AVAILABLE  Compressed: NO  Tag: TAG20130418T223159

       Piece Name:/u02/flash_recovery_area/BKT/backupset/2013_04_18/o1_mf_ncsnf_TAG20130418T223159_8q016gmf_.bkp

 SPFILE Included: Modification time: 18-APR-13

 SPFILE db_unique_name: BKT

 Control File Included: Ckp SCN: 1095500      Ckp time: 18-APR-13

RMAN> list incarnation

2> ;

List of Database Incarnations

DB Key Inc Key DB Name  DB ID            STATUS  Reset SCN Reset Time

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

1      1      BKT      536381303        CURRENT 995548    18-APR-13

RMAN>

Continue applying redo log files until thelast log has been applied to the restored

data files, then cancel recovery byexecuting the following command:

CANCEL

The database indicates whether recovery issuccessful. If you cancel before all the

data files have been recovered to a consistentSCN and then try to open the

database, then you get an ORA-1113error ifmore recovery is necessary. You can

query V$RECOVER_FILEto determine whethermore recovery is needed, or if a

backup of a data file was notrestoredbefore starting incomplete recovery.

无备份使用snap控制文件

RMAN> show all

2> ;

using target database control file insteadof recovery catalog

RMAN configuration parameters for databasewith db_unique_name BKT are:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1;# default

CONFIGURE BACKUP OPTIMIZATION OFF; #default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; #default

CONFIGURE CONTROLFILE AUTOBACKUP OFF; #default

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FORDEVICE TYPE DISK TO '%F'; # default

CONFIGURE DEVICE TYPE DISK PARALLELISM 1BACKUP TYPE TO BACKUPSET; # default

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICETYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FORDEVICE TYPE DISK TO 1; # default

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE ENCRYPTION FOR DATABASE OFF; #default

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; #default

CONFIGURE COMPRESSION ALGORITHM 'BASIC' ASOF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default

CONFIGURE ARCHIVELOG DELETION POLICY TONONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO'/u01/apps/oracle/product/11gr2/db_1/dbs/snapcf_bkt.f'; # default

删除后alert日志报错:

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

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 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 ;

ORACLE instance shut down.

sys@BKT> startup

ORACLE instance started.

Total System Global Area  417546240 bytes

Fixed Size                  2228944 bytes

Variable Size            322964784 bytes

Database Buffers          83886080 bytes

Redo Buffers                8466432 bytes

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

[root@master ~]# cp/u01/apps/oracle/product/11gr2/db_1/dbs/snapcf_bkt.f/u02/oradat/bkt/control01.ctl

[root@master ~]# cp/u01/apps/oracle/product/11gr2/db_1/dbs/snapcf_bkt.f/u02/flash_recovery_area/bkt/control02.ctl

[root@master ~]# chown oracle:oinstall/u02/oradat/bkt/control01.ctl

[root@master ~]# chown oracle:oinstall/u02/flash_recovery_area/bkt/control02.ctl

sys@BKT> recover database using backupcontrolfile ;

ORA-00279: change 1266893 generated at05/09/2013 03:27:56 needed for thread 1

ORA-00289: suggestion :/u02/flash_recovery_area/BKT/archivelog/2013_05_08/o1_mf_1_28_%u_.arc

ORA-00280: change 1266893 for thread 1 isin sequence #28

Specify log: {<RET>=suggested |filename | AUTO | CANCEL}

因为是老的controlfile,所以sequence都是老旧的,

dle> select group#,sequence#,status fromv$log ;

   GROUP#  SEQUENCE# STATUS

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

        1        25 INACTIVE

        3        24 INACTIVE

        2        26 CURRENT

idle> archive log list ;

Database log mode              Archive Mode

Automatic archival            Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence    24

Next log sequence to archive  26

Current log sequence          26

查看相应的目录

[oracle@master ~]$ ll/u02/flash_recovery_area/BKT/archivelog/2013_05_08/

total 62224

-rw-r----- 1 oracle oinstall  177152 May 7 12:10 o1_mf_1_10_8rlng20m_.arc

-rw-r----- 1 oracle oinstall    1024 May 7 12:12 o1_mf_1_11_8rlnkd1g_.arc

-rw-r----- 1 oracle oinstall    1024 May 7 12:12 o1_mf_1_12_8rlnkfdr_.arc

-rw-r----- 1 oracle oinstall    10752 May 7 12:17 o1_mf_1_13_8rlnt65r_.arc

-rw-r----- 1 oracle oinstall    1024 May 7 12:17 o1_mf_1_14_8rlnt6r7_.arc

-rw-r----- 1 oracle oinstall    1536 May 7 12:17 o1_mf_1_15_8rlnt7b1_.arc

-rw-r----- 1 oracle oinstall    1024 May 7 12:17 o1_mf_1_16_8rlnt7x7_.arc

-rw-r----- 1 oracle oinstall    1024 May 7 12:17 o1_mf_1_17_8rlnt8g7_.arc

-rw-r----- 1 oracle oinstall    1024 May 7 12:17 o1_mf_1_18_8rlnt8wk_.arc

-rw-r----- 1 oracle oinstall    1024 May 7 12:17 o1_mf_1_19_8rlnt9bn_.arc

-rw-r----- 1 oracle oinstall    1024 May 7 12:17 o1_mf_1_20_8rlnt9p8_.arc

-rw-r----- 1 oracle oinstall  184832 May 7 12:30 o1_mf_1_21_8rlokyy2_.arc

-rw-r----- 1 oracle oinstall  259584 May 7 12:55 o1_mf_1_22_8rlq1j4j_.arc

-rw-r----- 1 oracle oinstall    1024 May 7 12:55 o1_mf_1_23_8rlq1tck_.arc

-rw-r----- 1 oracle oinstall    1024 May 7 13:29 o1_mf_1_23_8rls13lv_.arc

-rw-r----- 1 oracle oinstall    2048 May 7 12:56 o1_mf_1_24_8rlq3pxx_.arc

-rw-r----- 1 oracle oinstall    2048 May 7 13:29 o1_mf_1_24_8rls13lj_.arc

-rw-r----- 1 oracle oinstall  243712 May 7 13:29 o1_mf_1_25_8rls13pd_.arc

-rw-r----- 1 oracle oinstall 42203648May  8 07:01 o1_mf_1_26_8rnpoljr_.arc

-rw-r----- 1 oracle oinstall 10391552May  8 12:28 o1_mf_1_27_8ro9sxgq_.arc

-rw-r----- 1 oracle oinstall 10078720May  7 11:58 o1_mf_1_9_8rlmpf3o_.arc

idle> select * from v$logfile ;

   GROUP# STATUS  TYPE    MEMBER                         IS_

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

        1 STALE  ONLINE  /u02/oradat/bkt/redo01.log    NO

        3 STALE  ONLINE  /u02/oradat/bkt/redo03.log    NO

        2        ONLINE  /u02/oradat/bkt/redo02.log    NO

顺序3、1、2

sys@BKT> recover database using backupcontrolfile ;

ORA-00279: change 1266893 generated at05/09/2013 03:27:56 needed for thread 1

ORA-00289: suggestion :/u02/flash_recovery_area/BKT/archivelog/2013_05_08/o1_mf_1_28_%u_.arc

ORA-00280: change 1266893 for thread 1 isin sequence #28

Specify log: {<RET>=suggested |filename | AUTO | CANCEL}

 /u02/oradat/bkt/redo03.log

ORA-00310: archived log contains sequence27; sequence 28 required

ORA-00334: archived log:'/u02/oradat/bkt/redo03.log'

这里必须resetlogs

sys@BKT> alter database open noresetlogs;

alter database open noresetlogs

*

ERROR at line 1:

ORA-01588: must use RESETLOGS option fordatabase open

sys@BKT> alter database open resetlogs ;

sys@BKT> ALTER TABLESPACE TEMP ADDTEMPFILE '/u02/oradat/bkt/temp01.dbf' REUSE;

Tablespace altered.

RMAN> catalog db_recovery_file_dest ;

using target database control file insteadof recovery catalog

searching for all files in the recoveryarea

相关推荐