oracle redo log日志(当前或非当前日志)损坏之后的db恢复

来源:互联网 发布:淘宝在线人数 编辑:程序博客网 时间:2024/05/21 13:45

出错情况:
sql> alter database open;
alter database open
*
第 1 行出现错误:
ora-01113: 文件 1 需要介质恢复
ora-01110: 数据文件 1: 'f:/oracle/oradata/orcl/system01.dbf'

试图恢复数据文件出错:
sql> recover datafile 'f:/oracle/oradata/orcl/system01.dbf';
ora-00283: 恢复会话因错误而取消
ora-00322: 日志 3 (用于线程 1) 不是最新副本
ora-00312: 联机日志 3 线程 1: 'f:/oracle/oradata/orcl/redo03.log'

联机日志分为当前联机日志(current)和非当前联机日志(inactive),非当前联机日志(inactive)的损坏是比较简单的,一般通过clear命令就可以解决问题。
在数据库mount或open状态下查询v$log,显示log状态。
sql> select group#,
  2         status,
  3         first_change#
  4  from   v$log;

    group# status           first_change#
---------- ---------------- -------------
         1 unused                 1324963
         3 current                1363585
         2 unused                 1343246
        
此时可以发现redo日志3是current状态,具体恢复步骤如下:

使用clear命令清理這個文件所在的redo log group。
sql> alter database clear unarchived logfile group 3;
数据库已更改。

sql>recover datafile 'f:/oracle/oradata/orcl/system01.dbf';
完成介质恢复。
sql> alter database open;
alter database open
*
第 1 行出现错误:
ora-01113: 文件 2 需要介质恢复
ora-01110: 数据文件 2: 'f:/oracle/oradata/orcl/sysaux01.dbf'

然后根据提示一步步恢复数据文件即可。

原创粉丝点击