博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DBA2 第六章:闪回

Posted on 2011-09-18 22:28  little健健  阅读(440)  评论(0)    收藏  举报

闪回技术概述

回收站

  • 参数RECYCLEBIN
    • on(默认):删除的表将进入回收站
    • off:删除的表不会进入回收站
  • 删除表放入回收站的过程
    • 在表空间中创建了名为 EMPLOYEES 的表
    • 删除 EMPLOYEES表
    • 此时,EMPLOYEES 占用的区被视为可用空间
    • 将 EMPLOYEES 重命名并插入到回收站中
  • 从回收站还原表
    • 还原删除的表和相关对象
    • 如果多个回收站条目具有相同原始名称
      • 使用系统生成的唯一名称来还原特定版本
      • 使用原始名称时,还原的表遵循后进先出 (LIFO) 的规则
    • 重命名原始名称
      • FLASHBACK TABLE <table_name>
        TO BEFORE DROP [RENAME TO <new_name>];

          

  • 自动回收空间
    • 与回收站对象不对应的空闲空间
    • 与回收站对象对应的空闲空间。在这种情况下,将使用先进先出(FIFO) 算法自动将回收站对象从回收站中清除。
    • 自动分配的可用空间(如果表空间是可以自动扩展的)
  • 手动回收空间
    • PURGE {TABLE <table_name>|INDEX <index_name>}  --清除表和索引
      PURGE TABLESPACE <ts_name> [USER <user_name>] --清除表空间内容
      PURGE [USER_|DBA_]RECYCLEBIN --清除属于当前用户的所有对象

        

  • 不使用回收站
    • DROP TABLE <table_name> [PURGE] ;

      DROP TABLESPACE <ts_name>
      [INCLUDING CONTENTS] ;

      DROP USER <user_name> [CASCADE] ;

        

  • 查询回收站
    • 查询 user_recyclebin 或 RECYCLEBIN查看已经删除的所有对象
    • dba_recyclebin 显示所有用户已删除的以及仍驻留在回收站中的所有对象
    • 重要信息
      • original_name 是对象删除前的名称
      • object_name 是对象删除后的系统生成名称
      • type 是对象的类型
      • ts_name 是对象所属的表空间的名称
      • droptime 是删除对象的日期
      • related 是已删除对象的对象标识符
      • space是对象当前使用的块数
  • 查询已删除表中的数据
    • SELECT ... 
      FROM "BIN$zbjrBdpw==$0" [AS OF ...]
      WHERE ...

        

闪回数据库

  • 概述
    • 作用类似于数据库的倒回按钮
    • 可以在用户造成了逻辑数据损坏的情况下使用
  • 体系结构
    • 启用闪回数据库时,将启动新的 RVWR 后台进程。此后台进程按顺序将闪回数据库数据从闪回缓冲区写入闪回数据库日志,这些日志会被循环使用。随后,发出 FLASHBACK DATABASE 命令时,使用闪回日志还原至块的前像,然后使用重做数据前滚至所需的闪回时间。
    • 启用闪回数据库的开销取决于数据库工作量的读写混合情况。
  • 示例
    • RMAN
      • RMAN> FLASHBACK DATABASE TO TIME =
        2> "TO_DATE('27.05.04 16:00:00',
        3> 'YYYY-MM-DD HH24:MI:SS')";

        RMAN
        > FLASHBACK DATABASE TO SCN=23565;

        RMAN
        > FLASHBACK DATABASE
        2> TO SEQUENCE=223 THREAD=1;

          

    • SQL
      • SQL> FLASHBACK DATABASE
        TO TIMESTAMP(SYSDATE-1/24);

        SQL
        > FLASHBACK DATABASE TO SCN 53943;

        SQL
        > FLASHBACK DATABASE TO RESTORE POINT b4_load;

          

  • 注意事项
    • 闪回数据库操作完成后,打开数据库
      • 在只读模式下验证使用的目标时间或 SCN 正确无误
      • 通过 RESETLOGS 操作打开,以允许 DML
    • “闪回”与“恢复”是对立的
    • 不能使用闪回数据库操作
      • 控制文件已还原或已重新创建
      • 表空间已删除
      • 已经收缩了数据文件
    • 使用 TO BEFORE RESETLOGS 闪回到最后一次RESETLOGS 操作之前

配置闪回数据库

  • SQL*PLUS
    • 配置快速恢复区
    • 使用初始化参数DB_FLASHBACK_RETENTION_TARGET 设置保留目标。可指定一个上限(以分钟为单位),指示数据库能够闪回到多长时间以前。
      • SQL> SHUTDOWN IMMEDIATE;
        SQL
        > STARTUP MOUNT EXCLUSIVE;
        SQL
        > ALTER SYSTEM SET 2 DB_FLASHBACK_RETENTION_TARGET=2880 SCOPE=BOTH;

          

    • 启用闪回数据库
      • ALTER DATABASE FLASHBACK ON;

          

    • 查询来确定是否已启用闪回数据库
      • SELECT flashback_on FROM v$database;

          

  • EM
    • 确保数据库处于 ARCHIVELOG 模式
      • 维护--->恢复设置--->勾选ARCHIVELOG 模式
    • 启用闪回事件记录并指定快速恢复区
      • 维护-->恢复设置--->快速恢复区

监视闪回数据库

  • V$FLASHBACK_DATABASE_LOG 视图
    • ESTIMATED_FLASHBACK_SIZE 使用先前记录的闪回数据,来估计要满足当前闪回保留目标时闪回日志在快速恢复区中所需的磁盘空间。
    • FLASHBACK_SIZE 提供当前闪回数据的大小,以字节表示
    • OLDEST_FLASHBACK_SCN 和 OLDEST_FLASHBACK_TIME 显示可以将数据库闪回到的最小 SCN 和时间的近似值。
  • V$FLASHBACK_DATABASE_STAT 视图
    • SQL> SELECT begin_time, end_time, flashback_data, db_data, 
      redo_data, estimated_flashback_size
      AS EST_FB_SZE
      FROM V$FLASHBACK_DATABASE_STAT;

        

  • V$RECOVERY_FILE_DEST
    • NAME:快速恢复区名称,指示位置字符串
    • SPACE_LIMIT:DB_RECOVERY_FILE_DEST_SIZE 参数中指定的磁盘限额
    • SPACE_USED:快速恢复区文件使用的空间(以字节表示)
    • SPACE_RECLAIMABLE:使用空间管理算法,通过删除过时、冗余的以及其它低优先级的文件而回收的空间大小
    • NUMBER_OF_FILES:文件数

可靠还原点

  • 确保您可以随时对该 SCN 执行

    FLASHBACK DATABASE 命令
  • SQL> CREATE RESTORE POINT before_load  GUARANTEE FLASHBACK DATABASE;