zoukankan      html  css  js  c++  java
  • oracle redo日志文件损坏恢复

    参考:How to Recover from Loss Of Online Redo Log And ORA-312 And ORA-313 (Doc ID 117481.1)

      在线重做日志文件丢失后恢复的场景包括:

    • 在线重做日志的配置:镜像或非镜像
    •  介质故障的类型:临时或永久性
    • 受故障影响的联机重做日志文件的状态类型:CURRENT,ACTIVE,UNARCHIVED或INACTIVE
    • 在丢失archivelog文件之前,数据库是否正常关闭

    1,丢失多member在线重做日志组成员后恢复

      如果是多个组员联机重做日志,并且每个联机重做日志组中至少有一个成员不受介质故障的影响,则数据库将继续正常运行,但会将错误消息写入日志写入器跟踪文件 和数据库的alert_SID.log。

    如果硬件问题是临时的,则修复问题。

    如果硬件问题是永久性的,则删除损坏的成员并使用以下过程添加新成员。

    要替换重做日志组的损坏成员:

    在v$logfile中找到损坏成员的文件名。 如果文件不可访问,则状态为INVALID:

    SQL> SELECT GROUP#, STATUS, MEMBER FROM V$LOGFILE WHERE STATUS='INVALID';
    
    GROUP#    STATUS       MEMBER
    -------   -----------  ---------------------
    0002      INVALID      /oracle/oradata/trgt/redo02.log

    删除损坏的日志组成员:

    SQL> ALTER DATABASE DROP LOGFILE MEMBER '/oracle/oradata/trgt/redo02.log';

    添加新的日志组成员:

    SQL> ALTER DATABASE ADD LOGFILE MEMBER '/oracle/oradata/trgt/redo02b.log' TO GROUP 2;
    ##如果添加的组员已经存在
    SQL> ALTER DATABASE ADD LOGFILE MEMBER '/oracle/oradata/trgt/redo02b.log' REUSE TO GROUP 2;

    2,丢失inactive在线重做日志组

    • 如果是硬件损坏,修复硬件,或者更改目录
    • 日志损坏但是已经归档,可以clear掉
    ALTER DATABASE CLEAR LOGFILE GROUP 2;
    • 清除未归档的损坏日志

      如果数据库已关闭,则启动新实例并装入数据库

      startup mount

      使用UNARCHIVED关键字清除日志。例如,要清除日志组2

    ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 2;

      如果存在需要清除日志使其联机的脱机数据文件,则需要关键字UNRECOVERABLE DATAFILE。必须删除数据文件及其整个表空间,因为正在清除使其联机所需的重做,并且没有它的副本。

    ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 2 UNRECOVERABLE DATAFILE;
    • 立即备份整个数据库,包括controlfile,以便您可以使用备份进行完全恢复,而无需依赖已清除的日志组
    • 由于介质故障,ALTER DATABASE CLEAR LOGFILE语句可能会因I / O错误而失败,重新指向新的目录,或者修复介质故障

    3,丢失在线redo

    • 如果缺少的日志不是最新的,只需删除日志组(alter database drop logfile group N),只有两组的话,提前要加一组
    • 如果丢失的日志是最新的,他们应该只执行虚假恢复,然后打开resetlogs
    sql> connect / as sysdba
    sql> startup mount
    sql> recover database until cancel;
    (cancel immediately)
    sql> alter database open resetlogs;

    注意:如果实例恢复所需的当前在线日志丢失,则必须通过最后一个可用的归档日志文件(PITR   point-in-time recovery)基于时间点恢复和恢复数据库。

  • 相关阅读:
    了解数据库的三级模式和二级映像
    Oracle函数
    SQL基本语法
    Oracle数据库之初步接触
    Java学习之正则表达式
    Java关于条件判断练习--统计一个src文件下的所有.java文件内的代码行数(注释行、空白行不统计在内)
    Java 关于循环的练习--和为n的正数序列
    Java学习之流Stream理解(一)
    Java学习之理解递归
    python+requests接口自动化测试框架实例详解教程
  • 原文地址:https://www.cnblogs.com/ocp-100/p/10672145.html
Copyright © 2011-2022 走看看