ora-01033:oracle initializationg or shutdown in progress 错误

1、进入CMD,执行set ORACLE_SID=fbms,确保连接到正确的SID;
2、运行sqlplus "/as sysdba"
      SQL>shutdown immediate      停止服务
     SQL>startup                          启动服务,观察启动时有无数据文件加载报错,并记住出错数据文件标号
     SQL>shutdown immediate      再次停止服务
     SQL>startup mount
     SQL> recover datafile 2         恢复出错的数据文件
     SQL>shutdown immediate      再次停止服务
    SQL>startup                          启动服务,此次正常。
3、进入PL/SQL Developer检查,没有再提示错误。

 

还启动不了,可能就是文件的问题,不过好像也有解决办法,你先看看这个好使不?其他的我再找找哈

 

由于系统优化时,不小心删除oracle联机日志文件,导致了ORA-01033错误,我的解决过程如下:

C:/>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Prod tion on T May 20 10:55:17 2008

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> connect system
Enter password:
ERROR:
ORA-01033: ORACLE initialization or shutdown in progress


SQL> connect/as sysdba
Connected.
SQL> shutdown abort
ORACLE instance shut down.
SQL> startip
SP2-0042: unknown command "startip" - rest of line ignored.
SQL> startup
ORACLE instance started.

Total System Global Area 135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database B?rs           25165824 bytes
Redo B?rs                 667648 bytes
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: 'C:/ORACLE/ORADATA/MX1/REDO01.LOG'


SQL> select group#,seqnce#,archived,status from v$log;

    GROUP# SEQNCE# ARC STATUS
---------- ---------- --- ----------------
         1        614 NO INACTIVE
         2        615 NO INACTIVE
         3        616 NO INVALIDATED

SQL> alter database clear logfile group 1;

Database altered.

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database B?rs           25165824 bytes
Redo B?rs                 667648 bytes
Database mounted.
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: 'C:/ORACLE/ORADATA/MX1/REDO02.LOG'


SQL> select group#,seqnce#,archived,status from v$log;

    GROUP# SEQNCE# ARC STATUS
---------- ---------- --- ----------------
         1          0 NO UNUSED
         2        615 NO INACTIVE
         3        616 NO INVALIDATED

SQL> alter database clear logfile group 2;

Database altered.

SQL> alter database clear logfile group 3;

Database altered.

SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database B?rs           25165824 bytes
Redo B?rs                 667648 bytes
Database mounted.
Database opened.
SQL>

 

 

 

 

冷备份你的数据库。   你在服务器端,用SVRMGRL命令  
  SVRMGRL>   connect   internal;  
  SVRMGRL>   SHUTDOWN   IMMEDIATE;       --   or   NORMAL  
  SVRMGRL>   STARTUP   MOUNT;  
  SVRMGRL>   alter   database   datafile   '/Oracle/oradata/ORCL/users01.dbf'   offline   drop;  
  SVRMGRL>   ALTER   DATABASE   OPEN;  
   
      把这个文件在数据库删除,因为这个文件对应的表空间是专门给一般  
  用户用的,删除对数据库没有影响。

 

 

D:/ORACLE/ORADATA/ORCL/REDO03.LOG 被不正确的文件覆盖了

属于联机日志损坏,修复一下就好了

 

c:/cd oracle9/ora92/bin   总之是 bin 文件进去就行

c:/......bin>sqlplus /nolog

SQL>connect sys/sting as sysdba

SQL> shutdown abort ;     ORACLE 例程已经关闭

SQL> startup nomount ;   ORACLE 例程已经启动。


SQL>startup               数据库装载完毕之后会提示出错的联机日志块 

进行不完全恢复:
SQL> recover database until cancel                 仿佛要多做几次


以sys登录为sysdba
sqlplus /NOLOG
SQL>connect sys/用户口令as sysdba
SQL>shutdown normal
SQL>startup mount
SQL>alter database open
SQL>shutdown normal
SQL>startup

结果出现
SQL> alter database open
  2  ;

alter database open

 

看看是哪个数据文件出现问题 ,然后不断反复尝试

SQL> alter database create datafile XXX;             XXX   表示错误的数据文件号
SQL> alter database datafile XXX  offline drop;          重复上述步骤,并且不断陆连接,直到不报错为止

 

也许能用的上的: 

SQL>alter database clear unarchivelog logfile group XXX,         XXX表示你的日志文件组,进行恢复

SQL>alter database open resetlogs;                                              从新打开数据库用日志文件


其他人的回答

方法 一

重新创建同名的dbf文件,在从备份文件里进行恢复  
  如果这个文件不需要了,  
  shutdown   immediate  
  startup   mount  
  alter   database   datafile   'c:/xxx.dbf'   drop   offline   (这里的语法记的不是很清楚,自己查一下)  
  alter   database   open  


 

方法 二

  [Q]丢失一个数据文件,但是没有备份,怎么样打开数据库    
  [A]如果没有备份只能是删除这个数据文件了,会导致相应的数据丢失。  
  SQL>startup   mount  
  --ARCHIVELOG模式命令  
  SQL>Alter   database   datafile   'file   name'   offline;  
  --NOARCHIVELOG模式命令  
  SQL>Alter   database   datafile   'file   name'   offline   drop;  

  SQLl>Alter   database   open;  
  注意:该数据文件不能是系统数据文件  


 

SQL>select group#,seqnce#,archived,status from v$log;             查看连机日志文件的一些属性

 

我进行操作的步骤,如下

SQL> alter database clear unarchived logfile group 1
  2  /
alter database clear unarchived logfile group 1
*
ERROR 位于第 1 行:
ORA-01624: 线程1的紧急恢复需要日志1
ORA-00312: 联机日志 1 线程 1: 'D:/ORACLE/ORADATA/OEMREP3/REDO01.LOG'


SQL> recover database until cancel
ORA-00283: 恢复会话因错误而取消
ORA-01124: 无法恢复数据文件 1 - 文件在使用中或在恢复中
ORA-01110: 数据文件 1: 'D:/ORACLE/ORADATA/OEMREP3/SYSTEM01.DBF'

 

先让该数据文件脱机,就可以打开数据库
C:/>svrmgrl
svrmgrl>connect internal
svrmgrl>shutdown
svrmgrl>startup mount
--ARCHIVELOG模式命令,文件名要大写
svrmgrl>alter database datafile 'C:/TEST.ORA' offline;
--NOARCHIVELOG模式命令
svrmgrl>alter database datafile 'C:/TEST.ORA' offline drop;
svrmgrl>alter database open;
--查询数据文件联、脱机状态
SQL> select file#,name,status from v$datafile;
SQL> drop tablespace test;
表空间已丢弃。
丢失联机日志文件
分两种情况处理
1、丢失的是非活动的日志文件;
2、丢失的是当前激活的日志文件。
如果是第一种情况,而发生故障的日志文件组又具有多个成员,可以先将数据库shutdown,然后用操作系统命令将损坏日志文件组中好的日志成员文件把损坏的成员文件覆盖(在同一个日志成员组中的所有日志文件的各为镜象的),如果其物理位置不可用可将其拷贝到新的驱动器上,使用alter database rename file ‘xxxx’ to ‘xxxx’改变文件位置,之后启动数据库,如果正常马上进行一个冷备份。如果损坏的日志组中只有一个日志成员,先mount上数据库,将其转换为noarchivelog模式,执行alter database add logfile member ‘xxx’ to group ‘x’给相关组增加一个成员,再执行alter database drop logfile member ‘bad_file’将损坏的日志文件删除,由于数据库的结构发生变动需要备份控制文件,之后将数据库改回archivelog模式,做一个冷备份。
如果丢失的是当前激活的日志文件,数据库又没有镜像而且当前日志组中所有成员均变为不可用。首先将数据库shutdown abort,从最近的一次全备份中恢复所有的数据文件,将数据库启动到mount状态。如果原来的日志文件物理位置不可用,使用alter database rename file ‘xxx’ to ‘xxx’改变文件的存放位置。然后,使用recover database until cancel命令来恢复数据库,直到提示最后一个归档日志运用完之后,输入cancel。之后用alter database open resetlogs打开数据库,如果没有问题,立即进行一个冷备份。注意!所有包含在损坏的redo log中的信息将会丢失,也就是说数据库崩溃前已经提交的数据有可能会丢失。这对于某些要求很高的应用将会损失惨重,因此应尽量使每个日志组具有多个日志成员,并且放置在不同的驱动器上防止发生介质故障。

你可能感兴趣的:(thread,oracle,sql,数据库,database,initialization)