基本判断出要恢复误操作的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的闪回查询的更多相关文章
-
O(1)时间删除链表的已知结点
这题并不需要从头结点遍历到已知结点,只需要知道已知结点,将改结点下一个结点赋值给它,再删除这个下一个结点就行,其中还需要考虑各种情况. 1)链表为空或者已知结点为空 2)链表只有一个结点,这个结点就是 ...
-
WCF 已知类型和泛型解析程序 KnownType
数据协定继承 已知类型和泛型解析程序 Juval Lowy 下载代码示例 自首次发布以来,Windows Communication Foundation (WCF) 开发人员便必须处理数据协定继承方 ...
-
WP8.1开发者预览版本号已知 Bug
偶的 Lumia 920 已经升级到最新的 8.1 开发者预览版本号,使用中没有发现什么问题. 可能是由于偶玩手机的情况比較少吧!忽然看到 MS 停止此版本号的更新,并说明有非常多的 BUG,偶就郁闷 ...
-
Delphi 查找标题已知的窗口句柄,遍历窗口控件句柄(转)
用我的方法来控制其他程序窗体上的窗口控件,必须先了解什么是 回调函数.我的理解是这样的: 回 调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,比如其他的程序等 ...
-
HoloLens开发手记 - Known issues 已知问题
本文主要提及一份问题清单,这些问题都可能对我们开发HoloLens应用造成困扰. Visual Studio 在使用VS 2015 Update 1连接HoloLens时,可能会有些小问题.但是这些小 ...
-
C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常,不存在从对象类型System.Windows.Forms.DateTimePicker到已知的托管提供程序本机类型的映射。
一:C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常 其实,这个问题与C#的垃圾回收有关.垃圾回收器管 理所有的托管对象,所有需要托管数据的.NET语言(包括 C#)都受运行库的 垃圾回收器 ...
-
已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)
1.文字描述: 已知一颗二叉树的前序(后序)遍历序列和中序遍历序列,如何构建这棵二叉树? 以前序为例子: 前序遍历序列:ABCDEF 中序遍历序列:CBDAEF 前序遍历先访问根节点,因此前序遍历序列 ...
-
实战分享:如何成功防护1.2T国内已知最大流量DDoS攻击
作者:腾讯云宙斯盾安全团队&腾讯安全平台部 引言: DDoS攻击势头愈演愈烈,除了攻击手法的多样化发展之外,最直接的还是攻击流量的成倍增长.3月份国内的最大规模DDoS攻击纪录还停留在数百G规 ...
-
Confluence 6 指定日志选项和已知问题
指定 Confluence 日志选项 这里是一些特定的日志配置,你可能在对问题进行调试的时候需要. 在日志中记录数据库使用的 SQL 查询请求 你可能希望增加日志的中的内容,记录 Confluence ...
随机推荐
-
pyqt的信号槽机制(转)
PySide/PyQt Tutorial: Creating Your Own Signals and Slots This article is part 5 of 8 in the series ...
-
java 25 - 4 网络编程之 UDP协议传输思路
UDP传输 两个类:DatagramSocket与DatagramPacket(具体看API) A:建立发送端,接收端. B:建立数据包. C:调用Socket的发送接收方法. D:关闭Socket. ...
-
POJ 3292 Semi-prime H-numbers
类似素数筛... Semi-prime H-numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6873 Accept ...
-
使用JS调用WebService接口
<script> $(document).ready(function () { var username = "admin"; var password = &quo ...
-
模板方法模式(Template Pattern)
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法的结构下,重新定义算法中的某些步骤. 这个模式是用来创建一个算法模板.模板就是一个方法.更具体地 ...
-
maven一些问题
maven一些问题 - ljhzzyx的日志 - 网易博客 1. The container 'Maven Dependencies' references non existing library ...
-
jpda
http://www.ibm.com/developerworks/cn/java/j-lo-jpda1/ 远程调试用rmi通信,被调试端需要启动一个调试服务器,用命令jsadebugd. java/ ...
-
css 点点加载demo
content字符生成配合CSS3 animation的点点点loading效果实例 代码: CSS代码: dot { display: inline-block; height: 1em; line ...
-
Vue学习笔记之Nodejs中的NPM使用
0x00 NPM是什么 简单的说,npm就是JavaScript的包管理工具.类似Java语法中的maven,gradle,python中的pip. 0x01 NPM安装 傻瓜式的安装. 第一步:打开 ...
-
fastdfs5.11+centos7.2 按照部署(三)【转载】
1.测试 前面两篇博文已对FastDFS的安装和配置,做了比较详细的讲解.FastDFS的基础模块都搭好了,现在开始测试下载. 1.1 配置客户端 同样的,需要修改客户端的配置文件: vim /etc ...