基本判断出要恢复误操作的dml的时间可以使用如下的方法进行数据的恢复:

example:

  一、创建test表

  -------create table flashback_asof------

  

  create table flashback_of(
    id varchar2(5) primary key,
    name varchar2(20),
    desc1 varchar2(20),
    desc2 varchar2(20)

  );

  二、insert值

  

  ------insert values-----
  insert into flashback_of values('01','name1','desc11','desc21');
  insert into flashback_of values('02','name2','desc12','desc22');
  insert into flashback_of values('03','name3','desc13','desc23');
  insert into flashback_of values('04','name4','desc14','desc24');

  三、获得当前日期下对应的scn值

  1、select to_char(sysdate,'yyyy-mm-dd hh24;mi:ss') time ,to_char(dbms_flashback.get_system_change_number) scn from dual;

  获取当前日期下对应的scn码。

  2、另外可以通过数据字典v$database中的 current_scn获得当前的scn码

  select name,current_scn from v$database;

  注:

  scn是oracle数据库系统提供的标识时间和系统改变码之间的一种映射关系(sys.smon_scn_time)。在10g中,系统平均每3秒产生一次系统时间与SCN的匹配并存入     SYS.SMON_SCN_ TIME表。因此10g版本如果使用AS OF TIMESTAMP查询UNDO中的数据,实际获取的数据是以指定的时间对应的SCN时的数据为基准。

  使用scn查询更加准确,因为scn对应的timestamp是时间的一个区间,scn对应一段区间值,并且在低版本 中timestamp和scn的值是每隔5分钟才真正映射到           smon_scn_time表中的,所以在闪回查询中尽量使用基于scn的闪回查询。

  使用SCN查询会比TIMESTAMP更加精确,事实上,即使执行Flashback Query时指定的是AS OF TIMESTAMP,Oracle也会将其转换成SCN,这是由于Oracle内部都是通   过SCN来标记操作而不是时间。

  select to_char(time_dp,'yyyy-mm-dd hh24:mi:ss') time,scn from smon_scn_time;

  查看时间和scn的对应关系。

  要查询指定范围的时间和scn的的映射关系可以使用函数timestamp_to_scn();或者scn_to_timestamp()函数

  select timestamp_to_scn(sysdate-30/1440) from dual;----查询半小时之前的scn码

  select scn_to_timestamp(80337709) from dual;-----查询指定scn码对应的timestamp

  四、修改数据值(dml误操作)

  update flashback_of set desc1='update1' ,desc2='update1' where id='01';

  commit;

  五、获得dml误操作之前指定的scn的全部数据值

  

    -----------------get before update---------------

   select * from flashback_of as of scn 80336359;

  六、获得误操作之前的记录保存到指定表中待处理

  

  ------------get original values  for dml opertations---------
  create table destination_table
    as select * from flashback_of as of scn 80336359;

  注:

  1、在确定了要闪回的大致时间以后可以使用如下sql确定scn

  select timestamp_to_scn(sysdate-30/1440) from dual;---获取半小时之前的scn码

  select * from tablename as of scn scn_value;------获得指定表在半小时之前的记录快照

  实现根据要闪回的大致时间获得要恢复的数据。

  2、避免直接使用 as of timestamp的方式获得闪回数据(timestamp的方式较scn不是非常的准确)

  最好是根据timestamp获得scn,然后利用scn直接获得目标闪回数据。

  

推荐使用scn,由于oracle9i中,因为scn与时间点的同步需要5分钟,如果最近5分钟之内的数据需要Falshback query查询,可能会查询丢失,而scn则不存在这个问题。Oracle10g中这个问题已修正(scn与时间点的大致关系,可以通过logmnr分析归档日志获得)。

Falshback query查询的局限:

1. 不能Falshback到5天以前的数据。

2. 闪回查询无法恢复到表结构改变之前,因为闪回查询使用的是当前的数据字典。

3. 受到undo_retention参数的影响,对于undo_retention之前的数据,Flashback不保证能Flashback成功。

4. 对drop,truncate等不记录回滚的操作,不能恢复。

5. 普通用户使用dbms_flashback包,必须通过管理员授权。命令如下:

SQL>grant execute on dbms_flashback to scott;

  

  

已知要闪回的大致时间使用基于as of scn的闪回查询的更多相关文章

  1. O(1)时间删除链表的已知结点

    这题并不需要从头结点遍历到已知结点,只需要知道已知结点,将改结点下一个结点赋值给它,再删除这个下一个结点就行,其中还需要考虑各种情况. 1)链表为空或者已知结点为空 2)链表只有一个结点,这个结点就是 ...

  2. WCF 已知类型和泛型解析程序 KnownType

    数据协定继承 已知类型和泛型解析程序 Juval Lowy 下载代码示例 自首次发布以来,Windows Communication Foundation (WCF) 开发人员便必须处理数据协定继承方 ...

  3. WP8.1开发者预览版本号已知 Bug

    偶的 Lumia 920 已经升级到最新的 8.1 开发者预览版本号,使用中没有发现什么问题. 可能是由于偶玩手机的情况比較少吧!忽然看到 MS 停止此版本号的更新,并说明有非常多的 BUG,偶就郁闷 ...

  4. Delphi 查找标题已知的窗口句柄,遍历窗口控件句柄(转)

    用我的方法来控制其他程序窗体上的窗口控件,必须先了解什么是 回调函数.我的理解是这样的: 回 调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,比如其他的程序等 ...

  5. HoloLens开发手记 - Known issues 已知问题

    本文主要提及一份问题清单,这些问题都可能对我们开发HoloLens应用造成困扰. Visual Studio 在使用VS 2015 Update 1连接HoloLens时,可能会有些小问题.但是这些小 ...

  6. C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常,不存在从对象类型System.Windows.Forms.DateTimePicker到已知的托管提供程序本机类型的映射。

    一:C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常 其实,这个问题与C#的垃圾回收有关.垃圾回收器管 理所有的托管对象,所有需要托管数据的.NET语言(包括 C#)都受运行库的 垃圾回收器 ...

  7. 已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)

    1.文字描述: 已知一颗二叉树的前序(后序)遍历序列和中序遍历序列,如何构建这棵二叉树? 以前序为例子: 前序遍历序列:ABCDEF 中序遍历序列:CBDAEF 前序遍历先访问根节点,因此前序遍历序列 ...

  8. 实战分享:如何成功防护1.2T国内已知最大流量DDoS攻击

    作者:腾讯云宙斯盾安全团队&腾讯安全平台部 引言: DDoS攻击势头愈演愈烈,除了攻击手法的多样化发展之外,最直接的还是攻击流量的成倍增长.3月份国内的最大规模DDoS攻击纪录还停留在数百G规 ...

  9. Confluence 6 指定日志选项和已知问题

    指定 Confluence 日志选项 这里是一些特定的日志配置,你可能在对问题进行调试的时候需要. 在日志中记录数据库使用的 SQL 查询请求 你可能希望增加日志的中的内容,记录 Confluence ...

随机推荐

  1. (原+转)使用opencv的DFT计算卷积

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5462665.html 参考网址: http://blog.csdn.net/lichengyu/art ...

  2. navicat导入mysql数据库sql时报错

    今天运维的一个项目需要进入数据库修改下数据,MYSQL的数据库,我先导出了一份数据结构和数据,然后进行修改,改完后发现项目报错了...粗心大意哪改错了,赶紧恢复数据库,结果导入SQL时报错了,当时心凉 ...

  3. Android实现点击事件的4种方式

    一.通过在activity_main.xml中,按钮button控件中添加onclick事件实现 在   activity_main.xml 对应的按钮Button中加入下面红色事件 <Butt ...

  4. 每天一点css3聚沙成塔(一):transition

    transition 语法: transition:[ transition-property ] || [ transition-duration ] || [ transition-timing- ...

  5. linux下挂载CDROM命令

    cdrom装载在/dev/cdrom 下面. 挂载时在权限范围内建立一个文件夹.例如mkdir /home/dang/cdtmp 然后执行 mount dev/cdrom /home/dang/cdt ...

  6. html file选中图片后 不经过服务器 立刻显示在页面

    html结构中 file类型加上 onchange事件 ,用FileReader读取图片的data:/images,然后显示在img标签中, 代码如下: <img class="pre ...

  7. ZendFramework2 源码分析 index.php

    <?php /** * This makes our life easier when dealing with paths. Everything is relative * to the a ...

  8. Palindrome(POJ 1159 DP)

      Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 58168   Accepted: 20180 De ...

  9. 动态PDF在线预览

    实战动态PDF在线预览及带签名的PDF文件转换 开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是 ...

  10. hdu Buy the Ticket

    import java.math.BigInteger; import java.util.*; public class Main { public static void main(String ...