(2010.-05-29解决Oracle故障总结)ora-01033:oracle initialization or shutdown in progress

来源:互联网 发布:js queryselector 编辑:程序博客网 时间:2024/06/08 15:08

 

    昨天晚上一客户Q求助,说Oracle系统用SQLPLUS登录不进去,在命令行却可以用sysdba的身份登录进去,提示如上图的错误:

很明显可以从错误提示中看出,这是ORA-01033错误,正好之前解决过这个ORA-01033错误,所以三两下的功夫就解决了故障。但由于在解决的过程中明显的感觉自己忘记了很多东西,今天特此写下此总结作为记录参考。

  

错误编码:ORA-01033: ORACLE initialization or shutdown in progress

故障描述:因为移动了数据库文件([NAME].DMP)/日志文件等文件,导致数据库连接出现ORA-01033错误。

故障分析:网上有一种常见的说法是该类故障通常是由于移动文件而影响了数据库日志文件出现损坏而导致的无法正常进行IO操作而引起的错误。ORACLE将识别为数据库未装载完成而导致出现如上错误。

故障特征:使用命令行sqlplus或PL/SQL Developer均无法打开数据库。但是可以使用sys用户以sysdba的身份登录系统

 

处理步骤

1. 在 ‘开始’-->‘运行’执行cmd

2. 输入:sqlplus "/ as sysdba"

  应提示类似于如下信息:

SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 5月 20 22:07:45 2009

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

3. 输入:shutdown immediate
  应提示类似于如下信息:

ORA-01109: 数据库未打开

已经卸载数据库。

4. 输入:startup

  应提示类似于如下信息:

ORA-01157: 无法标识/锁定数据文件 15 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 15: 'D:/TEST/MY_INDEX1_1.DBF'
5. 根据第4步信息输入:alter database datafile 'D:/TEST/MY_INDEX1_1.DBF' offline drop

  应提示类似于如下信息:

数据库已更改。

6. 重复第3、4、5步骤,直到第4步不再出现ORA-01157、ORA-01110错误信息,即告OK.

 

 

 上面是网上找的一个解决ORA-01033故障的帖子,我据此来解决客户的问题,现在列出解决步骤:

(1)首先在命令行中输入Shutdown immediate/normal,关闭数据库,如图:

 

(2)然后输入startup mount,再输入alter database open,根据提示的错误是7号数据文件EXAM.DBF无法识别被锁定了,如图:

 

 

(3)在命令行继续输入:alter database datafile 'C:/EXAM.DBF' offline drop ,然后shutdown immediate,如图:

(4)在命令行输入startup,如图:

(5)根据图中错误,这是个ORA-16038错误,ORA-16038: 日志 3 序列号 364 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 3 线程 1:
......REDO03.LOG'

 

该客户的DB是归档模式, 每个日志组只有一个文件,没办法, 搜寻文档和网上的资料, 有如下的解决方法:

损坏非当前联机日志:

1、启动数据库,遇到ORA-00312 or ORA-00313错误,如:
ORA-00313: open failed for members of log group 4 of thread 1
ORA-00312: online log 3 thread 1: '/opt/oracle/db04/oradata/ORCL/redo03.log'
从这里我们知道日志组1的数据文件损坏或丢失了
从报警文件可以看到更详细的信息

 

 
3、可以知道,该组1是非当前状态,而且已经归档。

4、用CLEAR命令重建该日志文件
SQL>alter database clear logfile group 3;

如果是该日志组还没有归档,则需要用
SQL>alter database clear unarchived logfile group 3;


5、打开数据库,重新备份数据库
SQL>alter database open;

6.至此,故障解决,从解决的过程中可以看出是因为客户把数据库文件EXAM.DBF从Oracle_Home中移动到了C盘根目录中,而客户一直说没移动过啥文件,操他妈的,这还说谎,事实都摆在眼前了,日志文件和此数据文件都不是在同一目录下了。

原创粉丝点击