由于使用了一个未经验证的清除垃圾文件的程序,导致Oracle数据库的两个日志文件被非法删除(Redo01,Redo02,Redo03),导致Oracle无法连接(能启动),系统报错:
ora-01033:oracle initializationg or shutdown in progress
最开始知道问题是由于文件被误删导致的,但不知道是日志文件被删除,由于数据库应用能启动,
因此决定做一次recover操作,步骤如下:
步骤0: sqlplus /NOLOG
SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 5月 12 09:12:59 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
步骤1: SQL> connect sys/password as sysdba
已连接。
步骤2: SQL> shutdown normal
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
步骤3: SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
步骤4: SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-00313: 无法打开日志组 1 (线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'C:\ORACLE\ORADATA\NIDB\REDO01.LOG'
在操作步骤4时,发现报ORA-00313,00312错误,检查应用实例目录下,发现Redo01,Redo02,Redo03三个日志文件都被删除了,问题到此已经明朗化。首先,执行下面的语句看看group1是不是current日志组
步骤5: SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 134 NO INACTIVE
2 135 NO INACTIVE
3 136 NO CURRENT
可以发现,被删除的日志不是当前日志组的成员,解决就比较简单 了:
步骤6: SQL> alter database clear logfile group 1;
数据库已更改。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 0 NO UNUSED
2 534 NO INACTIVE
3 535 NO CURRENT
SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-00313: 无法打开日志组 2 (线程 1) 的成员
ORA-00312: 联机日志 2 线程 1: 'C:\ORACLE\ORADATA\NIDB\REDO02.LOG'
SQL> alter database clear logfile group 2;
数据库已更改。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 0 NO UNUSED
2 0 NO UNUSED
3 535 NO CURRENT
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员
ORA-00312: 联机日志 3 线程 1:
'C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO03.LOG'
SQL> alter database clear logfile group 3;
alter database clear logfile group 3
*
第 1 行出现错误:
ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员
ORA-00312: 联机日志 3 线程 1:
'C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO03.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
由于日志文件REDO03.LOG为当前日志文件,不能用上面的方法进行恢复。
SQL> recover database until cancel;
完成介质恢复。
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 0 NO UNUSED
2 0 NO UNUSED
3 0 NO CLEARING_CURRENT
SQL> alter database open resetlogs;
数据库已更改。
SQL> conn test/111111
已连接。
到此,恢复成功!!
相关推荐
关于oracle-01033误删表空间文件解决方法关于oracle-01033误删表空间文件解决方法
该文件提供了oracle日志文件的分析方法,能够从日志中追查相关操作,并进行恢复工作。
利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据。
不知不觉中,操作不当,就会引起日志文件丢失!此文档记载了一些解决方法,喜欢的朋友们可以下载,希望可以帮到您!
收集了一些Oracle日志文件介绍,详细的介绍了如何操作Oracle的日志文件,很有实用价值
关于误删表空间文件导致Oracle不能启动的解决方法
oracle 数据恢复 误删恢复 111111111111111111111111111111111111111111111111111111111111111111111111
oracle 日志文件管理
Oracle数据库表数据误删还原的方法,在一定时间内表数据误删除了恢复数据的方法
对于oracel中的日志文件的的管理有了较为详细的描述,对于想学习oracle或是对oracle中的日志文件不是很了解的会有较大的帮助
查看oracle数据库alert日志文件位置
不知不觉的失误操作,就会把数据文件删除了!此文档中详细记载了oracle数据文件被误删除后的灾难处理方法,现在拿出来与大家分享,希望可以帮到您!
Oracle数据库联机日志文件丢失处理方法.docOracle数据库联机日志文件丢失处理方法.docOracle数据库联机日志文件丢失处理方法.docOracle数据库联机日志文件丢失处理方法.doc
ORACLE 修改redo日志文件 大小的方法 供大家参考
Oracle安装日志文件
oracle数据库日志查看方法,排查错误。
oracle日志文件恢复,如果不小心数据丢失了,可以通过oracle的日志文件恢复的。
日志文件详解 Oracle数据库中的日志常用的有: Redo log files 联机日志或重做日志 Archived log files 归档日志 Alert log files 告警日志 Trace files user_dump_dest 用户信息日志(如跟踪会话日志) ...
#功能:自动删除ORACLE归档日志文件 #删除方式:rman ,deletearchivelog #调用方式:可单独调用,或在job_clean_archivlog.sh脚本中根据需要调用见另外的附件) ##############################################
oracle日志文件相关命令