Oracle登录 ORA-01033: ORACLE正在初始化或关闭的解决办法
2015-03-16 01:20 | 160511人阅读 | 来源
Oracle登录 ORA-01033: ORACLE正在初始化或关闭的解决方法
Oracle存在多实例
相应的在DOS命令下执行:
1. 设置正确的ORACLE实例:set ORACLE_SID = INSTANCE_NAME
2. 启动SQLPLUS:sqlplus /nolog
3.以DBA(通常有好几个sys或system)用户sqlplus登录:connect system/sys as sysdba
oracle登录错误(ORA-01033:ORACLE initialization or shutdown in progress
上面说到了创建表分区的例子,所以创建表空间的时候创建了好几个表空间物理文件,之后感觉创建的有误,想删掉它们,可是删不掉(因为数据库进程启动着),所以把数据库服务给关了,直接Shift+Del把文件给删掉了。
问题出来了:我再次启动oracle相关服务后,登录不了了。
出现了ORA-01033:ORACLE initialization or shutdown in progress
原因就是因为我把介质文件给删掉了
解决步骤:
以DBA(通常有好几个sys或system)用户sqlplus登录
请输入用户名: system/sys as sysdba
然后(卸载数据)输入:
SQL> shutdown normal
会出现:
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
然后(装载数据)输入:
SQL> startup mount
ORACLE 例程已经启动。
数据库装载完毕。
之后:
SQL>alter database open;
第 1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 6: 'D:/ORACLE/PRODUCT/10.1.0/ORADATA/RAILWAY/2008_1.DAT'
SQL> alter database create datafile 6;
数据库已更改。
SQL>alter database open;
第 1 行出现错误:
ORA-01113: 文件 6 需要介质恢复
ORA-01110: 数据文件 6: 'D:/ORACLE/PRODUCT/10.1.0/ORADATA/RAILWAY/2008_1.DAT'
SQL> alter database datafile 6 offline drop;
数据库已更改。
继续
SQL>alter database open;
如果出现以上错误,继续执行相关操作,上面的6要和create和drop对应。
如果
SQL> alter database open;
出现了:
数据库已更改。
则成功了。
这时可以再用PL/SQL等客户端工具,登录操作数据库了。
至于介质恢复: ora-01172 ora-01151了,解决办法如下:
c:>sqlplus /nolog
SQL> connect sys/sys@oracle as SYSDBA
已连接
SQL> startup mount
ORA-01081: 无法启动已在运行的 ORACLE --- 请首先关闭
SQL> alter database open read only;
alter database open read only
*
ERROR 位于第 1 行:
ORA-16005: 数据库需要恢复
SQL> recover database
完成介质恢复。
SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 730931140 bytes
Fixed Size 454596 bytes
Variable Size 411041792 bytes
Database Buffers 318767104 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
今天用客户端连接oracle时,发现报ORA-01033: ORACLE 正在初始化或关闭错误,其实这个错误报了几天了,前两次重启一下就好了,今天是怎么也起不来了,通过在网上查找,很好的就解决了,
首先我用startup mount命令,可以正常,然后用alter database open就会报错,如下图
从中可以看出归档文件的问题,随后
可以看出改组非当前状态但已归档,所以用clear命令来重建当前组
SQL>alter database clear logfile group 3;
如果是该日志组还没有归档,则需要用
SQL>alter database clear unarchived logfile group 3;
然后alter database open 数据库就可以连上了。
我这是在自己本机上随便做的,但是如果在生产机上最好立刻做备份一下。
说明:
1)、如果损坏的是非当前的联机日志文件,一般只需要clear就可以重建该日志文件,但是如果该数据库处于归档状态但该日志还没有归档,就需要强行clear。
2)、建议clear,特别是强行clear后作一次数据库的全备份。
3)、此方法适用于归档与非归档数据库。
百度经验:
http://jingyan.baidu.com/article/36d6ed1f6e3bb61bcf4883e1.html