数据库闪回原理:

一旦启用了闪回数据库,修改的块映像会不时从数据库缓冲区复制到闪回缓冲区。通过新的后台恢复写入器(Recovery Writer, RVWR)将此闪回缓冲区内容刷新到磁盘和闪回日志接着LGWR将日志缓冲区刷新到磁盘,然后DBWR写数据文件。
执行数据库闪回时,Oracle读取闪回日志以提取每个改变块的数据块版本,并将这些版本复制到文件。

具体实验步骤如下:

1. 配置闪回数据库

//确保数据库处于archivelog模式

SQL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG

//创建闪回恢复区,并限定它占用的最大空间

SQL> alter system set db_recovery_file_dest='C:\ora\flash_recovery_area';
SQL> alter system set db_recovery_file_dest_size=1G;

//设置闪回保留目标时间。闪回日志是以循环方式重用,更新的数据将覆盖旧的数据。此参数指示oracle在重写它之前保留的分钟数。

SQL> alter system set db_flashback_retention_target=1440;

//干净关闭并加载数据库

SQL> shutdown immediate;
SQL> startup mount;

//启用闪回日志

SQL> alter database flashback on;

2. 监视闪回数据库

//查询闪回能力并估计为满足目标时间闪回日志所需空间

SQL> select retention_target, flashback_size, oldest_flashback_time
  2    from v$flashback_database_log;
  
RETENTION_TARGET FLASHBACK_SIZE OLDEST_FLASHBACK_TIME
---------------- -------------- ---------------------
            1440        8192000 2014-03-26 22:40:54

//显示启用闪回数据库而付出的代价,单位是每小时i/o字节数

SQL> select end_time, flashback_data, db_data, redo_data
  2    from v$flashback_database_stat;
 
END_TIME    FLASHBACK_DATA    DB_DATA  REDO_DATA
----------- -------------- ---------- ----------
2014-03-26         5472256    3719168    2918400

//查看闪回缓冲区大小,此大小不受dba控制

SQL> select * from v$sgastat where name='flashback generation buff';
 
POOL         NAME                            BYTES
------------ -------------------------- ----------
shared pool  flashback generation buff     3981204

3. 使用flasback闪回数据库

场景:在2014-03-26 22:40:54,dba不小心删除了用户scott。dba发现这个错误后用flashback闪回数据库
SQL> drop user scott cascade;

恢复步骤:

//此时其它类型的关闭都无意义

SQL> shutdown abort;
SQL> startup mount;

//闪回数据库并以只读模式打开(sqlplus中可以精确到秒,em中只能精确到分)

SQL> flashback database to timestamp to_timestamp('2014-03-26 22:40:54','yyyy-mm-dd hh24:mi:ss');
SQL> alter database open read only;

//闪回完毕后可以查看到模式已经恢复回来了,因为其中的对象可以查询到了

SQL> select * from scott.dept;

DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

已选择8行。

//确定已经找到满意的时间点后执行恢复操作

SQL> shutdown abort;
SQL> startup mount;
SQL> recover database until time '2014-03-26 22:40:54';

//执行最后一次数据库关闭,并使用resetlogs打开来创建数据库的一个新化身,此时数据库可以正常使用

SQL> shutdown abort;
SQL> startup mount;
SQL> alter database open resetlogs;

//测试发现之前误删除的用户又回来了

SQL> select * from scott.dept;

DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

已选择8行。

实验完毕


Flasback数据库(闪回数据库)的更多相关文章

  1. [Flashback]开启数据库闪回数据库功能

    Flashback是Oracle中一个重要的功能,想要使用闪回数据库功能,需要将数据库置于闪回数据库的状态. 1.检查数据库是否开启归档状态 SQL> archive log list; Dat ...

  2. Oracle Flashback Technologies - 闪回数据库

    Oracle Flashback Technologies - 闪回数据库 根据指定的SCN,使用rman闪回数据库 #查看可以闪回到多久前 SQL> select * from v$flash ...

  3. OCP读书笔记(12) - 执行闪回数据库

    闪回数据库使用的是闪回日志,闪回日志存在于闪回目录(也就是快速闪回区中)闪回日志:就是数据块修改之前的镜像,简称前像 1.查看闪回目录的位置:show parameter recovery 如果闪回目 ...

  4. oracle闪回技术总结之闪回数据库

    [实施步骤] 步骤一.设置如下的初始化参数: Sql>小时:以分钟为单位 SQL> 点00分左右发现表被删除 切了几个归档 22:00:38SQL>:06:05 SQL> :0 ...

  5. 【DG】利用闪回数据库(flashback)修复Failover后的DG环境

    利用闪回数据库(flashback)修复Failover后的DG环境 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能, ...

  6. Oracle 12c 新特性之 PDB 级别闪回数据库

    在Oracle Database 12.1中,闪回数据库操作仅限于 CDB ,Oracle Database 12.2支持 CDB 与 PDB 数据库的闪回. PDB 的还原点种类:1. normal ...

  7. Flashback Database 闪回数据库

    一.  Flashback Database 说明 Flashback Database 功能非常类似与 RMAN 的不完全恢复, 它可以把整个数据库回退到过去的某个时点的状态, 这个功能依赖于 Fl ...

  8. ORACLE数据库闪回日志写满

    网站页面无法显示完整.检查web服务是正常的,所以可能是ORACLE数据库出了问题. 首先检查闪回日志写满 然后检查归档日志文件写满的缘故了.使用以下几个命令可以看出当前归档日志文件的使用情况: se ...

  9. oracle数据库flashback系列--闪回数据库在dataguard中的使用

    很多人在学习flashback database这个oracle技术的时候,都会有一个疑问,就是如果我只有一个数据库作为生产库的话,是否有这样的业务需求导致我们要把数据库闪回到以前的时间点?以及这样做 ...

随机推荐

  1. [转]Oracle hang分析

    hanganalyze是ORACLE的一款性能诊断工具,这个款工具是从oracle 8.0.6开始可用,在oracle数据库出现严重的性能问题的时候它可以帮助你定位问题所在. 1.首先说说hangan ...

  2. IE8 innerHTML赋值时包含多级HTML标签时的解决方案

    var inhtml = ''; var font = document.createElement("font"); var a = document.createElement ...

  3. [改善Java代码]使用构造块精炼程序

    建议36: 使用构造代码块精炼程序 什么叫代码块(Code Block)?用大括号把多行代码封装在一起,形成一个独立的数据体,实现特定算法的代码集合即为代码块,一般来说代码块是不能单独运行的,必须要有 ...

  4. hdu 2004 成绩转换

    成绩转换 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  5. Editplus中使用正则表达式压缩代码

    快捷键ctrl+H打开查找与替换窗口,勾上使用正则表达式选项,查找项输入\t|^( )+,替换范围选当前文档,选择全部替换按钮,然后查找项在输入\n,再选择全部替换按钮. 大功告成!

  6. 如何查看Windows8.1计算机体验指数评分

    如果你已经安装使用了Windows 8.1,你就会发现自从Vista时代开始的计算机体验评分消失了,在文章<微软取消Windows 8 计算机评分功能>中,我猜测了微软取消评分功能的可能原 ...

  7. sqlserver 关于快照

    数据库快照:是数据库某一时间点的视图,快照涉及最初目的是为了报表服务,快照还可以和镜像结合来达到读写分离的目的 数据库快照:是sqlserver数据库的只读静态视图快照的作用:1 提供了一个静态的视图 ...

  8. oracle 所有下级

    --所有下级 SELECT SAP_ORGAN_CODE FROM SAP_ORGAN_LEVEL CONNECT BY PRIOR SAP_FATHER_ORGAN_CODE= SAP_ORGAN_ ...

  9. 关于JAVA System常见类的一些总结

    一.JAVA System类概述 1.概述: System 类是一个抽象类,所有的字段和方法都是静态的,即不能被实例化.其中包含一些有用的类字段和方法,它不能被实例化.在 System 类提供的设施中 ...

  10. 自定义DZLMoneyLabel

    一.简介 由于父亲生病,好久没有更新博客了,今天10.1 国庆(应该说是昨天了,已经过了12点了),心血来潮自定义了一个小label.这个控件的难度并不大,也没有什么可以值得炫耀的技术点.写这个控件的 ...