从ORA-01033 到重建控制文件

作者: 新手村的0级玩家 | 来源:发表于2017-03-29 16:34 被阅读33次
    数据库命令行

    前言

    之前的一个项目,闲置了很长时间后,再次打开提示

    1.数据库未打开

    ORA-01033: ORACLE initialization or shutdown in progress
    

    查看当前数据库状态

    SQL> select status from v$instance;
    
    STATUS
    ------------
    MOUNTED
    

    2.数据库打开失败

    发现当前数据库不是处于OPEN的状态

    那就打开 数据库

    SQL>alter database open;
    
    ORA-01122:数据库文件1验证失败
    ORA-01110:数据文件1: 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF'
    ORA-01207:文件比控制文件更新-旧的控制文件
    

    应该是控制文件出错了,只能重建控制文件

    重建控制文件

    此处不对控制文件本身做详细介绍,只列出重建控制文件的步骤

    1.生成可以重建控制文件的脚本

    SQL>alter database backup controlfile to trace as ‘D:\trace’;
    

    2.关闭数据库

    SQL>shutdown immediate;
    

    3.启动到 nomount 状态下

    SQL>startup nomount;
    

    4. 构造脚本

    打开D:\trace文件,找到以下语句:

    CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
               MAXLOGFILES 16
               MAXLOGMEMBERS 3
               MAXDATAFILES 100
               MAXINSTANCES 8
               MAXLOGHISTORY 292
    LOGFILE
              GROUP 1 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' SIZE50M,
              GROUP 2 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' SIZE50M,
              GROUP 3 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' SIZE50M
    DATAFILE
              'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF',
              'D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF',
              'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF',
              'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF',
    CHARACTER SET ZHS16GBK
    ;
    
    

    对路径进行修正:

    CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
               MAXLOGFILES 16
               MAXLOGMEMBERS 3
               MAXDATAFILES 100
               MAXINSTANCES 8
               MAXLOGHISTORY 292
    LOGFILE
              GROUP 1 'D:/APP/ADMINISTRATOR/ORADATA/ORCL/REDO01.LOG' SIZE50M,
              GROUP 2 'D:/APP/ADMINISTRATOR/ORADATA/ORCL/REDO02.LOG' SIZE50M,
              GROUP 3 'D:/APP/ADMINISTRATOR/ORADATA/ORCL/REDO03.LOG' SIZE50M
    DATAFILE
              'D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSTEM01.DBF',
              'D:/APP/ADMINISTRATOR/ORADATA/ORCL/UNDOTBS01.DBF',
              'D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSAUX01.DBF',
              'D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF',
    CHARACTER SET ZHS16GBK
    ;
    
    

    将其拷贝到数据库命令行中执行即可

    特别说明:
    执行本脚本有可能会出现命令行卡死的情况,
    SQLplus登录提示:已经登录空闲实例
    这个时候, 右击我的电脑--->管理---> 服务和应用程序-->服务
    找到oracle的相关服务,停止后重新启动即可

    管理

    5. 恢复数据库

    SQL>alter database backup controlfile to trace as ‘D:\trace’;
    

    6.重新打开数据库

    SQL>alter database backup controlfile to trace as ‘D:\trace’;
    

    控制文件重建完毕,可以正常使用了


    相关文章

      网友评论

        本文标题:从ORA-01033 到重建控制文件

        本文链接:https://www.haomeiwen.com/subject/uetyottx.html