oracle体系-7-重建控制文件

时间:2022-03-16 20:58:00

恢复控制文件方法

控制文件一旦损坏,系统将不能正常工作。受损的控制文件会记录在告警日志中,恢复或重建控制文件必须使系统在NOMOUNT

1)单个文件损坏了:参照多元化章节,通过简单复制解决。

2)所有的控制文件丢失:

①如果有binary控制文件备份,利用备份恢复控制文件,

②如果没有备份,利用trace脚本文件重新创建控制文件(代价:丢失归档记录信息和RMAN信息)

3.5.2重建控制文件示例

第一步Mountopen下生成trace脚本

SQL>alter database backup controlfile to trace as ‘/u01/oradata/prod/con.trace‘;

第二步、启动到nomount 状态下准备执行trace脚本

SQL> startup force nomount

第三步、执行重建控制文件语句

SQL>CREATE CONTROLFILE REUSE DATABASE "prod" NORESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1 ‘/u01/oradata/prod/redo01.log‘  SIZE 50M,

  GROUP 2 ‘/u01/oradata/prod/redo02.log‘  SIZE 50M,

  GROUP 3 ‘/u01/oradata/prod/redo03.log‘  SIZE 50M

-- STANDBY LOGFILE

DATAFILE

  ‘/u01/oradata/prod/system01.dbf‘,

  ‘/u01/oradata/prod/sysaux01.dbf‘,

  ‘/u01/oradata/prod/users01.dbf‘,

  ‘/u01/oradata/prod/example01.dbf‘,

  ‘/u01/oradata/prod/test01.dbf‘,

  ‘/u01/oradata/prod/undotbs01.dbf‘

CHARACTER SET ZHS16GBK

;

可以看到执行后三个控制文件又重新建立了。这时数据库已在mount

说明:这个重建控制文件的过程主要有两大部分内容:

第一部分是脚本中的可见信息:

1)定义db_name,

2)指定几个参数限定控制文件的最大值,

3)在线日志的物理信息,

4)数据文件的物理信息,

5)使用的字符集。

第二部分是隐含的不可见信息,比如SCN信息,重建复制了当前所有数据文件头部的最新SCN信息复制到了控制文件中。以便接下来打开数据库。

SQL> select file#,checkpoint_change# from v$datafile;

SQL> select file#,checkpoint_change# from v$datafile_header;

第四步、打开数据库

SQL> alter database open;

 

第五步、添加临时数据文件信息(脚本中的最后一行)

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE ‘/u01/oradata/prod/temp01.dbf‘

SIZE 30408704  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;