恢复控制文件方法
控制文件一旦损坏,系统将不能正常工作。受损的控制文件会记录在告警日志中,恢复或重建控制文件必须使系统在NOMOUNT下
1)单个文件损坏了:参照多元化章节,通过简单复制解决。
2)所有的控制文件丢失:
①如果有binary控制文件备份,利用备份恢复控制文件,
②如果没有备份,利用trace脚本文件重新创建控制文件(代价:丢失归档记录信息和RMAN信息)
3.5.2重建控制文件示例
第一步、Mount或open下生成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;