前言
之前的一个项目,闲置了很长时间后,再次打开提示
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’;