您的位置:首页 > 数据库 > Oracle

从ORA-01033 到重建控制文件

2017-03-29 16:39 399 查看

前言

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

 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’;


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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息