Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2765963
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Oracle

2015-03-15 16:47:58

                 Oracle Redo Log日志故障处理一则

      某日oracle服务器异常重启,当重启oracle数据时,发现redo log文件被损坏,
且这个日志文件是current状态的,导致数据库无法打开;

数据库的alert.log报如下错误

Sat Mar 14 08:34:25 2015
ALTER DATABASE OPEN
Beginning crash recovery of 1 threads
 parallel recovery started with 3 processes
Started redo scan
Sat Mar 14 08:34:47 2015
Errors in file /usr/oracle/diag/rdbms/ftest/ftest/trace/ftest_ora_20852.trc:
ORA-00333: redo log read error block 20482 count 4096
ORA-00312: online log 2 thread 1: '/usr/oracle/oradata/ftest/redo02.log'
ORA-27072: File I/O error
Linux-x86_64 Error: 2: No such file or directory
Additional information: 4
Additional information: 20482
Additional information: 732160
Sat Mar 14 08:34:58 2015
Errors in file /usr/oracle/diag/rdbms/ftest/ftest/trace/ftest_ora_20852.trc:
ORA-00333: redo log read error block 16386 count 8192
ORA-00312: online log 2 thread 1: '/usr/oracle/oradata/ftest/redo02.log'
ORA-27072: File I/O error
Linux-x86_64 Error: 2: No such file or directory
Additional information: 4
Additional information: 16386
Additional information: 2829312
Aborting crash recovery due to error 333
 
 可以看出当数据库在打开时,做实例恢复时需要扫描redo02.log文件,但是读取该文件报错
这个redo02.log文件是存在的,只是无法进行io了,在os级别使用cp命令也无法读取这个文件.

启动实例到mount状态,这个日志是current状态的.


SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 CURRENT
         3 INACTIVE

由于该数据库没有人做备份,所以现在使用备份来做不完全恢复也是不可能了.看来只有使用非常规手段
来进行修复了.


启动数据库到mount状态,然后使用了不完全恢复


SQL> recover database until cancel;

选择auto

这时候恢复并没有真正的恢复,只是有点类似于不完全恢复的标志,这样下次在打开时候就可以
resetlogs操作了.

 查看各文件的checkpoint信息,发现一致,接下来可以使用隐含参数应该可以打开数据库.

SQL> select file#,checkpoint_change# from v$datafile;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1         6880798637
         2         6880798637
         3         6880798637
         4         6880798637
         5         6880798637
         6         6880798637
         7         6880798637

7 rows selected.
 

   使用"_allow_resetlogs_corruption"参数,然后alter database open resetlogs
数据库被成功打开。但是alert.log中会报ora-600[4194]的错误,这个需要清理一下原
来的undo表空间,之前的blog有介绍,可以参考.

 

 

阅读(6316) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~