Oracle控制文件恢复案例


案例一:单个控制文件丢失

这种情况解决方法很简单,只要把多路复用的控制文件拷贝到相应路径就行了。

案例二:所有控制文件都丢失(用trace中的SQL创建)

在做这个实验前先生成一个trace文件

alter database backup controlfileto trace as'/backup/siqianctl.trc';

1.先关闭数据库

shutdown immediate

2.删除所有控制文件

之前可以用show parameter control_files来看下控制文件在哪些路径下

[Oracle@siqian siqian11g]$ rm-f control0*

3.起库出错

startup

ORA-00205: errorin identifying controlfile,check alert logfor more info

4.利用trace来创建控制文件

CREATE CONTROLFILE REUSE DATABASE"SIQIAN11" NORESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1 '/u01/oradata/siqian11g/redo01.log'  SIZE 50M,

  GROUP 2 '/u01/oradata/siqian11g/redo02.log'  SIZE 50M,

  GROUP 3 '/u01/oradata/siqian11g/redo03.log'  SIZE 50M

DATAFILE

  '/u01/oradata/siqian11g/system01.dbf',

  '/u01/oradata/siqian11g/sysaux01.dbf',

  '/u01/oradata/siqian11g/undotbs1.dbf',

  '/u01/oradata/siqian11g/users01.dbf',

  '/u01/oradata/siqian11g/example01.dbf',

  '/u01/oradata/siqian11g/test01.dbf'

CHARACTER SET WE8MSWIN1252

;

5.打开数据库

alter database open;

案例三:用trace里的SQL创建的控制文件但此时的创建的控制文件是老的

现在我再创建一个表空间,使控制文件发生变化,一会重建时会缺少那个表空间的数据文件。

1.创建表空间

create tablespace new_ts datafile'/u01/oradata/siqian11g/new_ts01.dbf' size10m;

2.关闭数据库

shutdown immediate

3.删除所有控制文件

[oracle@siqian siqian11g]$ rm-f control0*

4.打开数据库

startup

ORA-00205: errorin identifying controlfile,check alert logfor more info

5.利用trace创建控制文件

CREATE CONTROLFILE REUSE DATABASE"SIQIAN11" NORESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1 '/u01/oradata/siqian11g/redo01.log'  SIZE 50M,

  GROUP 2 '/u01/oradata/siqian11g/redo02.log'  SIZE 50M,

  GROUP 3 '/u01/oradata/siqian11g/redo03.log'  SIZE 50M

DATAFILE

  '/u01/oradata/siqian11g/system01.dbf',

  '/u01/oradata/siqian11g/sysaux01.dbf',

  '/u01/oradata/siqian11g/undotbs1.dbf',

  '/u01/oradata/siqian11g/users01.dbf',

  '/u01/oradata/siqian11g/example01.dbf',

  '/u01/oradata/siqian11g/test01.dbf'

CHARACTER SET WE8MSWIN1252

;

6.打开数据库

alter database open;

7.查看dba_data_files数据字典

sys@SIQIAN11>selectfile_name,tablespace_namefrom dba_data_files;

FILE_NAME                                          TABLESPACE_NAME

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

/u01/oradata/siqian11g/test01.dbf                 TEST

/u01/oradata/siqian11g/example01.dbf              EXAMPLE

/u01/oradata/siqian11g/users01.dbf                USERS

/u01/oradata/siqian11g/undotbs1.dbf                UNDOTBS1

/u01/oradata/siqian11g/sysaux01.dbf                SYSAUX

/u01/oradata/siqian11g/system01.dbf                SYSTEM

/u01/oracle/dbs/MISSING00007                      NEW_TS

 

7 rows selected.

发现有个数据文件是‘/u01/oracle/dbs/MISSING00007’,其实出现这种情况是因为控制文件中没有这个表空间的数据文件的记录。

8.关闭数据库并启动到mount

shutdown immediate

startup mount

9.将控制文件中的数据文件名重命名

alter database rename file'/u01/oracle/dbs/MISSING00007' to'/u01/oradata/siqian11g/new_ts01.dbf';

10.打开数据库

alter database open;

11.恢复数据文件

recover datafile 7;

  • 1
  • 2
  • 下一页

相关内容