ORA-01033: ORACLE initialization or shutdown in progress

冷备份你的数据库。   你在服务器端,用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#,sequence#,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中的信息将会丢失,也就是说数据库崩溃前已经提交的数据有可能会丢失。这对于某些要求很高的应用将会损失惨重,因此应尽量使每个日志组具有多个日志成员,并且放置在不同的驱动器上防止发生介质故障。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值