ORA-01033: ORACLE initialization or shutdown in progress错误正解

来源:互联网 发布:办公邮件软件 编辑:程序博客网 时间:2024/05/16 12:19
前言:此类问题一出困惑N多初学者,百度一下,发问者无数,即使是在比较知名的CSDN或者ITPUB也几乎无一结帖,不知道论坛内高手不屑一答,还是就本无高手(这种可能性低)。不论如何,做为超级初学者的我喜欢把一些问题总结归纳,已被后用。如能帮到类似问题困扰者,实乃我之幸事。
错误现象:
ORA-01033: ORACLE initialization or shutdown in progress
模拟错误过程:
启动SQLPlus,创建数据库
CREATE TABLESPACE eloa DATAFILE 'D:\test\eloa' SIZE 5M AUTOEXTEND ON NEXT 1M;
CREATE USER eloa IDENTIFIED BY javajava DEFAULT TABLESPACE eloa PROFILE DEFAULT ACCOUNT UNLOCK;
GRANT CONNECT TO eloa WITH ADMIN OPTION;
GRANT AQ_ADMINISTRATOR_ROLE TO eloa WITH ADMIN OPTION;
GRANT DBA TO eloa WITH ADMIN OPTION;
GRANT UNLIMITED TABLESPACE TO eloa;
ALTER USER eloa DEFAULT ROLE ALL;
commit;
然后在dos窗口下,键入命令imp进入数据库导入程序,结果没有成功,检查以前操作,认为创建数据库的时候在第一行写错了:'D:\test\eloa'应该是'D:\test\eloa.ora'
修改后重新操作,结果导入数据仍然没有成功,比较茫然,然后决定删掉已在D:\test\下生成的eloa和eloa.ora从新再来(初学还不懂如何正确删除),结果不允许删除,想到数据库服务没停,文件还在使用中。
于是关闭所有服务stop.batnet
stop "OracleWebAssistant0"
net stop "OracleOraHome81TNSListener"
net stop "OracleServiceORADB"
shutdown
在操作系统D:\test\下删除eloa和eloa.ora文件
重新启动服务start.bat
net start "OracleWebAssistant0"
net start "OracleOraHome81TNSListener"
net start "OracleServiceORADB"
服务里OracleServiceORADB显示已启动,但用SQL*Plus无法连接,
显示ORA-01033: ORACLE initialization or shutdown in progress错误。在Enterprise Manager Console下连接时亦弹出这样的错误信息窗口。
错误原因:由于数据库中某一数据文件被误删,导致控制面板的Oracle相关服务启动,但SQL*Plus无法连接。
解决方法:
让该数据文件脱机(正常删掉数据文件),就可以打开数据库
开始解决:
启动SQLPlus,以system用户登陆
当然马上报错,不要理他,继续下面的命令:
 SQL>connect system/manager as sysdba
 SQL>shutdown
 SQL>startup mount
--ARCHIVELOG(有文件,正常删除情况)模式命令,文件名要大写
 SQL>alter database datafile 'D:\TEST\ELOA.ORA' offline;
--NOARCHIVELOG(没有文件,如我们现在模拟的情况)模式命令
 SQL>alter database datafile 'D:\TEST\ELOA.ORA' offline drop;
 SQL>alter database open;
--查询数据文件联、脱机状态
 SQL>select file#,name,status from v$datafile;
 SQL>drop tablespace eloa
*
ERROR 位于第 1 行:
ORA-01549: 表空间非空,请使用 INCLUDING CONTENTS 选项
 SQL>drop tablespace eloa including contents
表空间已丢弃。
 SQL>conn eloa/javajava
已连接。
conn
sys/manager@orcl
ERROR:
ora-01033:oracle initialization or shutdown in progress
警告: 您不再连接到 ORACLE。
疑难问题:why why why ?执行到conn eloa/javajava这一步的时候是不是高兴万分,已连接三个字也看着那么亲切?原来高兴的有点早。怎么办?此时想到的是我们创建了2次表空间,那么说还差一个没有脱机,想到这重复前面的命令,没有搞明白问题依旧。周末耍了一天后重回战场。
SQL>conn sys/manager@orcl as sysdba;
已连接。
SQL>shutdown immediate;(shutdown好像不能显示出ORA-01109: 数据库未打开这样的信息)
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
ORACLE 例程已经启动。
(其实这个错误的意思就是数据库初始化或者被关闭,当我直接关闭后,终于报出了ORA-01109: 数据库未打开的错误。)
startup force;(注意要强制启动)
Total System Global Area  118255568 bytes
Fixed Size                   282576 bytes
Variable Size              83886080 bytes
Database Buffers           33554432 bytes
Redo Buffers                 532480 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 9 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 9: 'D:\test\ELOA'
遗留疑问:(晕死,上次不是脱机过了,居然阴魂不散,以后可以研究一下跟随表空间左右的还有什么东东)
 SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
 SQL> startup mount;
 SQL> alter database datafile 9 offline drop;
数据库已更改。
 SQL> recover datafile 9;(如果是其它文件可以恢复一下,此处不需要了)
完成介质恢复。
 SQL> alter database open;
数据库已更改。
 SQL>drop tablespace eloa
表空间已丢弃。
 SQL>conn
sys/manager@orcl
已连接。
 
转自:http://blog.sina.com.cn/s/blog_487f3cce010006i2.html