zoukankan      html  css  js  c++  java
  • 重做日志(Redo Log)

    1. 又称在线联机日志/在线归档重做日志
    2. 特点
      1. 记录数据库的变化
      2. 用于数据块的恢复
      3. 以日志组的方式进行管理,至少有两组且每组至少有两个成员
      4. 一般情况下和数据文件放在不同的磁盘中
      5. 在线重做日志是循环覆盖写的
    3. 数据字典
      1. v$log;
      2. v$logfile
      3. v$archived_log
    4. 日志组
      1. 日志组切换
        1. 在归档模式下:执行日志切换命令,LGWR进程将打开下一个日志组进行记录,并通知ARCn进程将前一个日志组的日志进行归档保存。
        2. 在非归档模式下:执行日志切换命令,LGWR进程将打开下一个日志组进行记录,对于历史日志组的记录将覆盖。
      2. 日志组成员 member---每组的日志成员,内容都是完全一致的
      3. 查看日志组及成员
        1 SQL> select a.group#,a.members,a.status,a.bytes/1024/1024 M,b.member from v$log a,v$logfile b where a.group#=b.group# order by 1;
      1. 添加日志组
        1 SQL> alter database add logfile group 4('/u01/app/oracle/oradata/PROD1/redo04.log','/u01/app/oracle/oradata/PROD1/redo04a.log') size 200M reuse;
      1. 添加日志组成员
        1 SQL> alter database add logfile member '/u01/app/oracle/oradata/PROD1/redo04b.log' to group 4; ----单独添加日志组成员时,状态为INVALID,手工切换日志进行同步组成员 
        2 SQL> alter system switch logfile;
      1. 日志组状态
        1. UNUSED:新创建的日志组状态,一旦被使用,就不存在这个状态了
        2. CURRENT:当前数据库正在使用的日志组,不允许被覆盖
        3. ACTIVE:数据缓冲区里面的数据还没有刷入到磁盘,不允许被覆盖-----当发出alter system checkpoint;命令后,会从ACTIVE变成INACTIVE
        4. INACTIVE:非活动状态,可以被覆盖
      2. 删除日志组
        1 SQL> alter database drop logfile group 1(2,3,4,5); ------删除的是控制文件里的元数据,但是物理文件仍然是存在的
      1. 清除日志(不是删除日志,而是重建日志)
        1 SQL> alter database clear logfile group 1;------隐含的条件是日志已归档 SQL> alter database clear unarchived logfile group 1;-------未归档的日志清除时,使用此命令
    1. 备份、还原、恢复的概念
      1. 备份:backup
      2. 还原:restore 把原来备份的东西重新拿过来,这个过程(动作)叫还原。
      3. 恢复:recover 利用重做日志把数据库恢复到指定的时间点(完全恢复、不完全恢复)
    1. 在线日志组恢复

        

    1. CURRENT日志组丢失
      1. 非归档模式
        1. 如果Current日志组丢失,只能借助备份文件进行完全还原,无法进行实例恢复,即将丢失一部分数据。 非归档模式下,不管实例有没有崩溃,都只能进行完全还原。
        2. 步骤
          1. 关闭数据库;
          2. 将备份文件覆盖现有文件;
          3. 开启数据库;
      2. 归档模式
        1. 实例没有崩溃
          1. 执行切换日志组----SQL> alter system switch logfile;
          2. 执行完全检查点----SQL> alter system checkpoint;
          3. 强制清除日志组----SQL> alter database clear unarchived logfile group 1;----在归档模式下,清除日志组命令隐含着要将当前的日志组归档,但当前日志组所对应的物理文件已被删除,无法进行归档,所以报错。因此需用UNARCHIVED进行强制清除。
        2. 实例崩溃
          1. 实例崩溃必须通过还原和基于cancel-based时间点恢复来处理
            1. 情况一:还原了所有的数据文件、控制文件和日志文件。因为是一致性的,所以可以直接startup启动
            2. 情况二:还原了所有的数据文件、控制文件 ----SQL> startup mount;  SQL> recover database until cancel using backup controlfile  
            3. 情况三:仅还原所有的数据文件----SQL> startup mount;  SQL> recover database until cancel;

  • 相关阅读:
    Flink集群模式部署及案例执行
    Solr查询解析及内核剖析
    Spark Streaming流计算核心概念
    Kaldi语音识别CVTE模型实战
    Kaldi基础代码库及建模
    Kaldi样例实战
    Solr文本分析剖析【文本分析、分词器详解、自定义文本分析字段及分词器】
    Flink场景分析与比较【事件驱动、数据分析、数据管道】
    什么是Apache Flink实时流计算框架?
    基于Tesseract实现图片文字识别
  • 原文地址:https://www.cnblogs.com/eniniemand/p/13648292.html
Copyright © 2011-2022 走看看