oracle意外断电 导致ORA-01033: ORACLE initialization or shutdown in progress

 

电脑强制重启后,打开Oracle登录,提示如下:

 

造成ORA-01033的原因有很多,比如断电、电脑强制重启,或者数据库文件误删等,这些导致oracle要么卡在初始化中,要么关闭了,我们要做的就是重启它。

一.检查oracle服务是否启动。

    如果没有启动,就手动开启。如果启动,手动重启后,再尝试连接Oracle。

二.利用cmd命令重启数据库

    1.打开cmd,以管理员身份登录orcl。

 

 

    2.尝试打开数据库 alter database open,提示“ORA-00600”错误。ORA-00600[kcratr_nab_less_than_odr]故障解决,从这篇文章大致得出,数据库需要恢复到rba到70153,但是因为某种原因实例恢复的时候,只能利用1 thread 329 seq#,恢复rba到70139,从而导致数据库无法正常open。

    3.接着根据2中的文章提示,输入recover database until cancel 尝试不完全恢复,可以看到返回四条错误,这里大致是说,恢复成功,但有一个文件SYSTEM01.DEF没有从旧的备份中恢复,打到这里的时候本人当时不明白,也就没有在意,后来才发现其实这里是说的介质恢复,把这个文件恢复了,数据库就能正常打开了(后面操作了那么多,还是回到了这个文件上)。

    4.关闭重启数据库。输入 shutdown immediate(或shutdown normal) startup nomount,又报ORA-12514错误。可参考[Oracle]startup mount时报ORA-12514错误的解决方法。

    这里再将文章中的内容描述一下:

        找到listener.ora文件,添加如下红框中的内容:

    

 

    在cmd中,输入“lsnrctl stop”“lsnrctl start”重启侦听服务,下面是cmd中的内容

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>lsnrctl stop

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 06-6月 -2018 20:4
6:42

Copyright (c) 1991, 2010, Oracle.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
命令执行成功

C:\Users\Administrator>lsnrctl start

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 06-6月 -2018 20:4
7:00

Copyright (c) 1991, 2010, Oracle.  All rights reserved.

启动tnslsnr: 请稍候...

TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
系统参数文件为D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listene
r.ora
写入d:\app\administrator\diag\tnslsnr\3BAZ7JK7QG9VRB0\listener\alert\log.xml的日
志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Produ
ction
启动日期                  06-6月 -2018 20:47:05
正常运行时间              0 天 0 小时 0 分 5 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          D:\app\Administrator\product\11.2.0\dbhome_1\network\a
dmin\listener.ora
监听程序日志文件          d:\app\administrator\diag\tnslsnr\3BAZ7JK7QG9VRB0\list
ener\alert\log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
  实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "orcl" 包含 1 个实例。
  实例 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功

C:\Users\Administrator>
 

    上面其实就两句话:lsnrctl stop 和 lsnrctl start,但要注意不是在sql中输入,如果在cmd中登录oracle,需要exit退出后,才能执行,且不要输入“;”(不要被上面文章中的格式误导),这样监听就修复好了。

    5.再次登录orcl实例,启动数据库后,可以看到例程已经启动。之后本人重复 shutdown 和startup,后提示“装载完毕”,输入打开命令后,提示“ORA-01589”异常。

    

 

    

    

    6.介质恢复。关于“ORA-01589”可参考非正常关机,oracle启动报错,要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项 和 ORA-01589错误 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项。两文章都表明了用日志文件恢复的办法。

    

    按照文章中的提示输入,alter database open resetlogs 果然提示有一个文件需要介质恢复,正是上面3中提到的SYSTEM01.DEF,接着到输入指定日志的地址,如果不知道日志在哪,可以去参考的SYSTEM01.DEF目录下,如下图,可以看到有.LOG后缀的日志文件,未恢复的情况下,修改时间是不同的,找最新的文件即可,未恢复前时间最新的是REDO02.LOG。按照提示输入完成。

    oracle意外断电 导致ORA-01033: ORACLE initialization or shutdown in progress_第1张图片

 

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