闪回表,实际上就是将表中的数据快速恢复到过去的一个时间点或者系统改变号SCN上。实现表的闪回,需要用到撤销表空间相关的UNDO信息,通过SHOW PARAMETER UNDO命令就可以了解这些信息。用户对表的数据的修改操作,都记录在撤销表空间中,这为表的闪回提供的数据恢复的基础。

修改记录被提交到undo表空间中的默认保留时间为900秒,用户可以在这900秒的时间内对表的进行闪回操作,从而将表中的数据恢复的修改前的状态。

如上图显示的默认900秒,我们通过sql来修改这个默认时间为1200:

flashtable的语法:

flashback table [schema.]table_name to {[before drop [rename to new_table_name]] | [SCN | TIMESTAMP] expr [enable | desable] triggers}

schema:模式名 table_name :表名

before drop 表示回复到删除之前

rename new_table_name 重新定义表名称

timestamp 时间戳,包括年月日时分秒

expr 制定一个值或表达式

enable triggers 触发器恢复后,呈启用状态

disabled triggers 触发器回复后,呈禁用状态,默认情况下为此选项。

下面演示一个示例:

首先在数据库中创建一个表,并插入3条数据

SQL>create table tb_flash1(id number primary key,content varchar2(40));

表已创建。

SQL> insert into tb_flash1(id,content)
  2  select 1,'第一行数据' from dual
  3  union all
  4  select 2,'第二行数据' from dual
  5  union
  6  select 3,'第三行数据' from dual
  7  /

已创建3行。

SQL> commit
  2  /

提交完成。

查询刚才插入的数据:

SQL> select * from tb_flash1
  2  /

ID CONTENT
---------- ----------------------------------------
         1 第一行数据
         2 第二行数据
         3 第三行数据

假设现在误删除一条id=2的数据:

SQL> delete from tb_flash1 where id=2
  2  /

已删除 1 行。

SQL> commit;

提交完成。

再次查询,表中只剩两条记录:

SQL> select * from tb_flash1
  2  /

ID CONTENT
---------- ----------------------------------------
         1 第一行数据
         3 第三行数据

接下来对刚删除的数据执行恢复操作:

1、开启表的移动功能

SQL> alter table tb_flash1 enable row movement
  2  /

表已更改。

2、将表恢复到删除数据的时间之前(注意这个时间尽量与您删除数据的时间相同或稍微靠前)

SQL> flashback table tb_flash1 to timestamp
  2  to_timestamp('2013-01-26 15:58:30','yyyy-mm-dd hh24:mi:ss')
  3  /

闪回完成。

SQL> select * from tb_flash1;

ID CONTENT
---------- ----------------------------------------
         1 第一行数据
         2 第二行数据
         3 第三行数据

至此数据已恢复。

下面介绍恢复到scn

将时间戳转换到scn

SQL> select timestamp_to_scn(to_timestamp('2013-01-26 15:58:30','yyyy-mm-dd hh24
:mi:ss')) from dual;

TIMESTAMP_TO_SCN(TO_TIMESTAMP('2013-01-2615:58:30','YYYY-MM-DDHH24:MI:SS'))
---------------------------------------------------------------------------
                                                                    1263136

SQL> flashback table tb_flash1 to 1263136;

闪回完成。闪回完成。闪回完成。

Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据的更多相关文章

  1. 利用FinalData恢复shift+delete误删的文件

    当前位置 : 首页 » 文章分类 :  生活  »  利用FinalData恢复shift+delete误删的文件 上一篇 有关可变形部件模型(Deformable Part Model)的一些说明 ...

  2. ORACLE 11G没有备份文件參数文件在异机通过rman备份恢复找回被误删的数据

    背景:          同事误删除线上数据.所以须要从备份中找回数据恢复. 真实屋漏偏逢连夜雨.船迟又遇打头风.前两天备份的磁盘坏块,如今仅仅有rman全备的.bak文件,没有控制文件和參数文件,所 ...

  3. Oracle闪回技术详解

     概述: 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复(多数闪回功能都能在数据库联机状态下完成).需要注意的是,闪回技术旨在快速 ...

  4. Oracle闪回技术(Flashback)

    闪回技术有闪回表.闪回删除.闪回查询.闪回事务查询.闪回事务.闪回数据库.闪回数据归档.其中,闪回查询.闪回事务查询用来“观察”过去:闪回数据归档并不是一个独立的功能,其功能是扩展闪回查询的时间窗口: ...

  5. Oracle 六闪回技术,flashback

    Flashback 技术基于Undo segment基于内容的, 因此,限制UNDO_RETENTON参数. 要使用flashback 特征,您必须启用自己主动撤销管理表空间. 在Oracle 11g ...

  6. Oracle闪回技术

    (一)闪回技术概要 闪回技术是数据库备份与恢复的重要补充手段,主要包括以下7种特性: 特性 原理 数据库支持 闪回查询(Flashback Query) 利用undo表空间中的回退信息,查询过去某个时 ...

  7. 【Oracle】Oracle 10g利用闪回挽救误删的数据

    我们在开发和运维过程中,经常遇到数据被误删除的情况.无论是在应用开发中的Bug,还是修改数据的时候,如果提交了错误数据修改结果,会带来很多问题.一般来说,一旦提交commit事务,我们是不能获取到之前 ...

  8. oracle 单实例DG(闪回技术四)

    一,flashback Oracle Flashback技术是一组数据库特性,它可以让你查看数据库对象的过去状态,或者将数据库对象返回到以前的状态,而无需使用基于时间点的介质恢复.根据数据库的变化,闪 ...

  9. Oracle Flashback Technology【闪回技术】

    -------------------------与其他数据库相比,Oracle的闪回让开发者多了一条选择的路. Flashback的目的 先看下Oracle官方文档中的解释: Oracle Flas ...

随机推荐

  1. RDLC直接打印帮助类

    代码 /// <summary> /// 打印帮助类 /// </summary> public class PrintHelper { private int m_curre ...

  2. C#属性: 利用set实现递归

    直接帖代码: public class Bird { int xdata; /// <summary> /// 属性的简洁写法,等同于下面的xData方式 /// </summary ...

  3. 深入了解view以及自定义控件

    参考文章: http://blog.csdn.net/guolin_blog/article/details/12921889 Android LayoutInflater原理分析,带你一步步深入了解 ...

  4. WebAPI使用多个xml文件生成帮助文档(转)

    http://www.cnblogs.com/idoudou/p/xmldocumentation-for-web-api-include-documentation-from-beyond-the- ...

  5. 用python简单处理图片(1):打开\显示\保存图像

    一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此, ...

  6. http 请求头设置缓存

     nginx不缓存设置 2013-08-15 10:47:39 分类: LINUX 在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apa ...

  7. 如何在Ubuntu 14.04中安装最新版Eclipse

    想必很多开发人员都知道,Ubuntu 软件源中提供的并不是最新版本的 Eclipse,本教程就教大家如何在 Ubuntu 14.04 中快速安装 Eclipse 官方发布的最新版本. 到目前为止,Ec ...

  8. Flask 开发全球化应用

    从C#世界迈入python总是令人有一种如释重负之感,同样的效果同样的功能,只需要付出1/10不到的代价,可能正是Python所倡导的简美哲学所带来的威力. 我还深深地记得在ASP.NET中做全球化的 ...

  9. Java技术路线图

    在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样我们清楚的知道我们大概处于那个阶段和水平. Java程序员 高级特性 反射.泛型. ...

  10. ubuntu中管理用户和用户组

    1. 添加一个用户组并指定id为1002 sudo groupadd -g 1002 www 2. 添加一个用户到www组并指定id为1003 sudo useradd wyx -g 1002 -u ...