控制文件的手工创建

来源:互联网 发布:centos 7服务器版下载 编辑:程序博客网 时间:2024/04/29 14:03

     如果所有的控制文件都损坏,但是没有进行备份的情况下,需要我们手工进行创建控制文件。

      控制文件是一个比较复杂的过程,也比较耗时,故强烈建议在数据库的文件结构发生变化的时候,使用如下的命令生成一份创建控制文件的脚本,以防万一。最好也做好控制文件的备份工作:

详细脚本:

SQL>shutdown immediate;

SQL>startup mount;

SQL>alter database backup controlfile to trace;

 

下面是创建脚本的过程:

 如果没有报错的话:

SQL>shutdown immediate;

SQL>shutdown noumount;

SQL>  CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG

-- SET STANDBY TO MAXIMIZE PERFORMANCE
    MAXLOGFILES 50
    MAXLOGMEMBERS 5
    MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 226
LOGFILE
 GROUP 1 'D:/ORACLE/ORADATA/ORCL/REDO01.LOG' SIZE 100M,
 GROUP 2 'D:/ORACLE/ORADATA/ORCL/REDO02.LOG' SIZE 100M,
 GROUP 3 'D:/ORACLE/ORADATA/ORCL/REDO03.LOG' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
 'D:/ORACLE/ORADATA/ORCL/SYSTEM01.DBF',
 'D:/ORACLE/ORADATA/ORCL/UNDOTBS01.DBF',
 'D:/ORACLE/ORADATA/ORCL/CWMLITE01.DBF',
 'D:/ORACLE/ORADATA/ORCL/DRSYS01.DBF',
 'D:/ORACLE/ORADATA/ORCL/EXAMPLE01.DBF',
 'D:/ORACLE/ORADATA/ORCL/INDX01.DBF',
 'D:/ORACLE/ORADATA/ORCL/ODM01.DBF',
 'D:/ORACLE/ORADATA/ORCL/TOOLS01.DBF',
 'D:/ORACLE/ORADATA/ORCL/USERS01.DBF',
 'D:/ORACLE/ORADATA/ORCL/XDB01.DBF'
CHARACTER SET ZHS16GBK
;

 

SQL>alter database mount;

SQL>alter database open;

 

SQL>  ALTER TABLESPACE "TEMP" 

    ADD TEMPFILE 'D:/ORACLE/ORADATA/ORCL/TEMP01.DBF' SIZE 500M

    REUSE AUTOEXTEND
    ON NEXT 655360K MAXSIZE 32767M

 

到此位置,所有的操作已经完成。

附加说明:

    以上代码,在数据库正常关闭后,并且所有的在线日志都是有效的话,该方法可以打开数据库。

如果数据是非normal或immediate方式关闭,且所有在线日志文件无效的话,在创建控制文件的时候需要把NORESETLOGS 改为 Resetlog

并且在控制文件成功创建后,需要一次介质修复操作;

SQL>recover database;

SQL>alter database open;

 

SQL> recover database using backup controlfile;

SQL>alter database open resetlogs;

 

如果数据文件是从备份中恢复或在最后一次shutdown 时不是normal 或immediate时候要求进行恢复:
     创建完成后,由于temp表空间的文件没有包含在控制文件中,导致表空间无数据文件,我们必须要使用下面的语句进行添加:
原创粉丝点击