ITPub博客

首页 > 数据库 > Oracle > ora-01033:oracle initialization or shutdown in progress 解决方法

ora-01033:oracle initialization or shutdown in progress 解决方法

原创 Oracle 作者:maohaiqing0304 时间:2013-05-29 16:47:05 0 删除 编辑



标题:ora-01033:oracle initialization or shutdown in progress 及其数据文件损坏解决方法 

作者:lōττéry©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]


注释:
     今讨论群的朋友问叫帮忙解决ora-01033:oracle initialization or shutdown in progress 
  见如下详细信息


官网:
ORA-01033: ORACLE initialization or shutdown in progress
Cause: An attempt was made to log on while Oracle is being started up or shutdown.
Action: Wait a few minutes. Then retry the operation.



说白了就是数据库没有到 open状态

看下数据库状态

SQL> select open_mode from v$database; 

      OPEN_MODE
      ----------
 如果 MOUNTED    --> 如果状态是mounted 则试着open下 ,看报什么错,同时tail –f alertORACLE11g.log文件
 如果 READ WRITE --> 证明刚刚数据库还没有启动完成您就登陆了 重新登陆就好


下面信息针对 数据文件丢失/损坏的 解决

由于问我的人是将物理文件手动的删除导致这个错误(所以我清楚是数据文件丢失/损坏  再次也不看alertORACLE11g.log 告警文件了)(注意:数据库里的东西 ,不要直接删除物理文件,要利用命令将控制文件信息删除,免得下次重启或者利用到了 ’前提缓存信息被覆盖’,控制文件去找信息会报错)


模拟datafile损坏:

SQL> alter database open;  首先数据库open看下报什么错

ORA-01157: 无法标识/ 锁定数据文件 5 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 5: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST1.DBF'
SQL>

datafile损坏解决方案:
1)   如果有冷备份 或者 rman的copy 就将备份还原 open即可
2)   rman的话先restore 将数据文件还原 ,再recover 找redo/archive log/undo找回丢失的数据
3) 如果你删除的表空间你并不想恢复的话,直接更改控制文件即可 (如果数据库在调用的时候报错 ,直接将文件offline, alter tablespace users offline immediate;不触发检查)

第一个就没什么说的 手动拷回去就可以了

第二方案思路

①、查看test表空间状态à online 
   (数据是可用的,因为在数据字典是可用的,在还原之前要现确认将还原的数据文件状态 à改成 offline)
②、 SQL> alter tablespace users offline immediate;
    immediate说明不触发检查,因为数据文件已经没有了所以没必要将buffer cache信息写道数据文件中
③、SQL> SELECT STATUS FROM V$DATAFILE WHERE NAME LIKE '%TEST1.DBF%';à offline
④、rmane> restore tablespace users ;  ---- finish
    查看下物理文件  已经 归还,要 recover 下要不然和其他的数据文件 scn号不一致
⑤、rmane> recover tablespace users;
    using ....chanal分配的通道
    media recovery ---redo恢复
⑥、SQL> alter tablespace users online;
    select  file#, checkpoint_change#  from v$database ;  数据文件CKPT scn值
    发现users表空间的ckpt比其他的值要大   
    因为作了 recover 比别的表空间多ckpt操作,如果再发生一次ckpt   所有的数据文件ckpt scn就一致了


第三方案思路:

由于控制文件内记录这些数据文件位置,只要更改下控制文件信息就好
①、SQL> alter database backup controlfile to trace as 'd:\aa.txt';- à备份控制文件到d:\aa.txt
②、 编辑控制文件信息 E:\ > start d:\aa.txt   à主要信息
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'  SIZE 50M,
  GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'  SIZE 50M,
  GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'  SIZE 50M
DATAFILE
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST1.DBF' à删除该记录数据文件行
CHARACTER SET ZHS16GBK;
          ## 删除没有用的信息和空行
③、关闭数据库 开启到nomount
     SQL> shutdown immediate;
     ORA-01109: 数据库未打开
     已经卸载数据库。
     ORACLE 例程已经关闭。
     SQL> startup nomount
     ORACLE 例程已经启动。
     Total System Global Area  570425344 bytes
     Fixed Size                  1250188 bytes
     Variable Size             146803828 bytes
     Database Buffers          415236096 bytes
     Redo Buffers                7135232 bytes
     SQL>
④、将更改好的控制文件重新创建下
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
     MAXLOGFILES 16
     MAXLOGMEMBERS 3
     MAXDATAFILES 100
     MAXINSTANCES 8
     MAXLOGHISTORY 292
 LOGFILE
   GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'  SIZE 50M,
   GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'  SIZE 50M,
   GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'  SIZE 50M
 DATAFILE
   'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
   'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
   'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
   'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF'
 CHARACTER SET ZHS16GBK;
控制文件已创建。
⑤、  SQL> alter database open;
     数据库已更改。
     SQL>


  【源于本人笔记】 若有书写错误,表达错误,请指正...


此条目发表在 Oracle 分类目录。将固定连接加入收藏夹。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28602568/viewspace-762369/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: STATISTICS_LEVEL
请登录后发表评论 登录
全部评论
.

注册时间:2013-03-13

  • 博文量
    117
  • 访问量
    2626244