Oracle一次断电后重启无法登陆数据库

本方法参考于:http://www.xifenfei.com/2014/09/重建控制文件丢失数据文件导致悲剧.html

在一次意外的断电后,发现链接数据库是会报错:

ERROR:
ORA-01033: ORACLE initialization or shutdown in progress

解决办法:

1.SQL> SELECT STATUS FROM V$INSTANCE; 
-----输出:STATUS
-----输出:------------
-----输出:MOUNTED
 
--尝试直接recover database
2.SQL> RECOVER DATABASE ;
-----输出:ORA-00283: 恢复会话因错误而取消
-----输出:ORA-00264: 不要求恢复
--提示不用恢复
--再打开数据库,还是kcratr_nab_less_than_odr错误警告


3.SQL> ALTER DATABASE OPEN;
-----输出:ALTER DATABASE OPEN
-----输出:第 1 行出现错误:
-----输出:ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [99189],
-----输出:[43531], [43569], [], [], [], [], [], [], []
 
--尝试不完全恢复
4.SQL> RECOVER DATABASE UNTIL CANCEL;
-----输出:ORA-10879: error signaled in parallel recovery slave
-----输出:ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
-----输出:ORA-01152: 文件 1 没有从过旧的备份中还原
-----输出:ORA-01110: 数据文件 1: 'D:\DBDMS\DATA\SYSTEM01.DBF'
 
--重建控制文件(可以自己制定文件的位置及文件名eg:D:/1.TXT)
5.SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS 'D:/1.TXT';
-----输出:数据库已更改。
 
6.SQL> SHUTDOWN IMMEDIATE;
-----输出:ORA-01109: 数据库未打开
已经卸载数据库。
-----输出:ORACLE 例程已经关闭。


7.SQL> STARTUP NOMOUNT;
-----sysoORACLE 例程已经启动。 
-----输出:Total System Global Area  417546240 bytes
-----输出:Fixed Size                  2176328 bytes
-----输出:Variable Size             268438200 bytes
-----输出:Database Buffers          138412032 bytes
-----输出:Redo Buffers                8519680 bytes


然后就是以下为重建控制文件:

8.在控制台输入以下代码:

SQL>CREATE CONTROLFILE REUSE DATABASE orcl NORESETLOGS FORCE LOGGING ARCHIVELOG 
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 2921
LOGFILE
GROUP 1 'C:\app\imcacme\oradata\orcl\REDO01.LOG'  SIZE 50M,
GROUP 2 'C:\app\imcacme\oradata\orcl\REDO02.LOG'  SIZE 50M,
GROUP 3 'C:\app\imcacme\oradata\orcl\REDO03.LOG'  SIZE 50M
DATAFILE
'C:\app\imcacme\oradata\orcl\SYSTEM01.DBF',
'C:\app\imcacme\oradata\orcl\SYSAUX01.DBF',
'C:\app\imcacme\oradata\orcl\UNDOTBS01.DBF',
'C:\app\imcacme\oradata\orcl\USERS01.DBF'
CHARACTER SET ZHS16GBK;
-----输出:控制文件已创建。
其中的目录C:\app\imcacme\oradata\orcl为oracle安装目录下的一个子目录
Oracle一次断电后重启无法登陆数据库_第1张图片

--继续尝试恢复
9.SQL> RECOVER DATABASE ;
-----输出:完成介质恢复。

10.SQL> ALTER DATABASE OPEN; 
-----输出:数据库已更改。
--open成功

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