博客
关于我
Oracle闪回查询总结
阅读量:500 次
发布时间:2019-03-07

本文共 3284 字,大约阅读时间需要 10 分钟。

Oracle闪回查询是一个强大的功能,允许数据库管理员(DBA)通过重做日志和自动回滚段管理(AUM)来恢复数据库的状态。以下是Oracle闪回查询的详细说明:

1.闪回查询的功能描述

在Oracle 9i之后,闪回查询功能提供了一种便捷的数据恢复方式,允许用户在不完全恢复的情况下,通过时间点或系统更改编号(SCN)来恢复数据库的状态。这一功能消除了传统方法中因数据误删或误改导致的繁琐恢复过程。

2.回滚段的作用

回滚段作为Oracle数据库中的关键组成部分,主要负责存储事务操作的前影像。它支持以下功能:

  • 事务回滚:在用户执行ROLLBACK语句时,Oracle利用回滚段中的前影像,将数据修改前的状态恢复。
  • 事务恢复:当事务未提交时,回滚段的信息被记录到重做日志文件中,Oracle在下次数据库启动时利用这些信息恢复未提交的数据。
  • 读一致性:确保在一个会话修改数据时,其他会话看不到该会话的未提交修改,保证了数据的完整性。

3.删除和提交操作的流程

Oracle的DELETECOMMIT操作都需要清晰地理解其数据库内存结构和日志管理机制:

  • 删除操作流程

  • Oracle将相关数据块读入缓冲区。
  • 在重做日志缓冲区中记录DELETE操作的全过程。
  • 在回滚段的事务表中创建回滚条目。
  • 创建前镜像并存入回滚段。
  • 修改数据块,标记为脏(dirty),开始记录到重做日志中。
  • 提交操作流程

  • Oracle生成一个系统更改编号(SCN)。
  • 在回滚段的事务表中标记此事务为已提交(committed)。
  • 日志读写进程将日志缓冲区中的记录写入重做日志文件。

4.闪回查询的实例演示

为了演示闪回查询的实际应用,可以按照以下步骤操作:

  • 准备工作

    • 初始化参数UNDO_MANAGEMENT=AUTOUNDO_RETENTION= n(n决定最大可翻滚时间)。
    • 通过sysdba权限登录,创建闪回用户并授予相应权限:
      conn sys/sys as sysdba  create user flash identified by flash;  grant connect, resource to flash;  grant execute on dbms_flashback to flash;
  • 操作示例

    • 创建并插入数据表:
      create table t_flash (test varchar2(10));  insert into t_flash values('google');  insert into t_flash values('KingXt');
    • 删除特定记录并提交:
      delete t_flash where test = 'google';  commit;
    • 启用闪回查询:
      execute dbms_flashback.enable_at_time(to_date('2010-05-08 17:00:00','yyyy-mm-dd hh24:mi:ss'));  execute dbms_flashback.disable;
  • 恢复数据

    • 使用闪回查询恢复数据:
      cursor flash_recover is select * from t_flash;  t_recode t_flash%rowtype;  begin  dbms_flashback.enable_at_time(to_date('2010-05-08 20:35:23','yyyy-mm-dd hh24:mi:ss'));  open FLASH_RECOVER;  dbms_flashback.disable;  loop  fetch FLASH_RECOVER into t_recode;  exit when FLASH_RECOVER%notfound;  insert into t_flash values (t_recode.test);  end loop;  close FLASH_RECOVER;  commit;  end;
  • 5.闪回查询的局限性

    • 每5分钟记录一次SCN,基于时间点的闪回查询可能无法精确恢复到SCN之外的时间段。
    • 需要详细了解回滚段的管理和_used_ الفона составляет,通过设置合理的UNDO_RETENTION参数来优化闪回性能。

    6.Flashback Database

    Flashback Database功能允许数据库管理员快速恢复到任意指定的时间点,而无需依赖物理备份。它通过创建闪回日志记录数据库的变更实例,通过如下命令实现:

    flashback database to time to_timestamp(xxx);  flashback database to scn xxx;

    7.Flashback Table

    Flashback Table功能允许恢复特定表的历史状态,适用于需要快速纠正误操作的场景。操作步骤如下:

  • 启用闪回表功能

    flashback table test to timestamp to_timestamp('2010-05-08 17:00:00','yyyy-mm-dd hh24:mi:ss');
  • 恢复表状态

  • flashback table test to timestamp to_timestamp('2010-05-08 17:00:00','yyyy-mm-dd hh24:mi:ss');

    ### 8.Flashback Drop  Flashback Drop功能类似于回收站,允许暂时保留被删除的表,便于恢复。操作步骤包括:1. **显示回收站信息**:  ```sqlshow recyclebin;
    1. 删除表并显示回收站记录

      drop table test_drop;  show recyclebin;
    2. 恢复被删除的表

      flashback table test_drop to before drop;
    3. 9.Flashback Version Query

      Flashback Version Query允许查看特定时间段内表的变更记录,适合审计操作或分析历史数据:

    4. 查看所有变更

      select versions_starttime, versions_operation, test from t_flash versions between minvalue and maxvalue order by versions_starttime;
    5. 查看指定时间段的变更

      select test from t_flash versions between timestamp to_date('2010-05-07 15:30:00', 'yyyy-mm-dd hh24:mi:ss') and to_date('2010-05-07 16:30:00', 'yyyy-mm-dd hh24:mi:ss');
    6. 10.Flashback Transaction Query

      Flashback Transaction Query允许审计特定事务的详细信息,并可回滚已提交的事务:

    7. 获取事务ID

      delete from test where id=2;  commit;  select xid from v$transaction;  XID ---------------- 04001200AE010000
    8. 审计事务

      select * from FLASHBACK_TRANSACTION_QUERY where xid='04001F0035000000';
    9. 回滚事务

      通过获取相关事务ID,将其回滚到指定状态。

    10. 结语

      Oracle闪回查询是一个强大工具,能够帮助数据库管理员快速恢复误操作或审计操作历史。在实际应用中,合理配置回滚段管理和设置合适的闪回保留时间,可以最大限度地提升闪回性能,保障数据库的稳定性和可靠性。

    转载地址:http://gzmjz.baihongyu.com/

    你可能感兴趣的文章
    Error: Flash Download failed - Cortex-M4
    查看>>
    前端学习之路
    查看>>
    008.Python基础语法(七)——序列数据类型
    查看>>
    centos 7 使用 163 yum 源
    查看>>
    Linux稀疏文件查看实际占用空间
    查看>>
    Python 强大的try-except-pass
    查看>>
    Weblogic 10.3.6 账户登录密码错误默认锁定策略
    查看>>
    Skype 与 Skype for Business 之间有何区别?
    查看>>
    1534. 统计好三元组
    查看>>
    数据库图形化客户端工具DBeaver
    查看>>
    真Unity3d_屏幕UI_2d转3d纯代码
    查看>>
    vscode中快速生成vue模板
    查看>>
    HTML5 Web Storage
    查看>>
    210所高校21届保研率曝光!这些211保研率堪比985!
    查看>>
    uniapp配置去掉友盟无法打包,提示配置错误如何解决
    查看>>
    网狐客户端-win32
    查看>>
    Ubuntu 20.10 QT 5.12.2 cannot find -lGL错误解决
    查看>>
    QT报make: Circular all <- first dependency dropped.错误解决。
    查看>>
    设计模式二十三之工厂模式--工厂方法模式
    查看>>
    设计模式二十三之工厂模式--建造者模式
    查看>>