你
执行闪回
查询以选择statementwith作为条款。你使用闪回查询restrieve数据作为它的存在在过去的一段时间。查询显式引用的menasof时间戳或SCN的过去。它的回报承诺,在这一点上,银泰是当前数据。
通过SELECT子句语句的闪回查询执行,可以检索过去一段时间的闪回数据,用闪回查询重现过去已有的数据,这个查询显式地指过去的一段时间或SCN,闪回查询返回的数据
都是已提交数据的过去时间。
闪回查询的潜在用途包括:
可用于放置闪回查询:
恢复丢失的数据或撤消不
正确的、已提交的更改。例如,如果您
错误地
删除或更新行,然后提交它们,您可以立即撤消错误。
恢复丢失的数据或撤销已提交的错误。例如,如果意外删除或更新行并提交,您可以立即撤销错误。
将当前数据与过去某个时间对应的数据进行比较。例如,您可以
运行一个
显示昨天数据变化的日报
报告。您可以比较表数据的单个行或查找行集的交集或联合。
比较当前数据和历史数据的一致性。例如,您可能需要在数据更新的前一天生成报告,您可以比较表的每一行或找到交集和联合。
在特定时间
检查事务数据的状态。例如,您可以验证某一天的帐户余额。
在特定的时间检查事务
类型数据的状态,例如,您可以在某一天检查您的帐户余额。
通过删除存储某些时态数据的需要来简化
应用程序设计。
删除为需求而存储的一些临时数据,以简化应用程序设计。
将
打包生成的应用程序(如报表生成
工具)应用到过去的数据中。
使用包装应用程序的历史数据(如报表生成工具)
提供一个应用自助错误修正,从而使
用户撤销和纠正他们的错误。
为了为应用程序提供自助
服务纠错,用户可以撤销或更正其错误。
实例:
SQL> Conn /数据库;
它已经
连接了。
SQL >集PageSize 200
SQL SELECT * FROM scott.dept >;
编号名称
位置 ---------------------------------------------------------------
10纽约会计
20研究达拉斯
30销售奇卡
40运营的波士顿
现在,让我们添加一个数据并提交:
SQL >插入scott.dept值(50,误差数据',‘');
创建了1行代码。
SQL SELECT * FROM scott.dept >;
DEPTNO DNAME LOC
---------------------------------------------------------------
10纽约会计
20研究达拉斯
30销售奇卡
40运营的波士顿
50错误数据中国
已提交;(提供10:51:00)
提交完成。
通常,因为提交
操作已经完成,所以回滚无效。如果你想在10:51:00提供获取数据
在闪回时使用时间戳:
SQL >选择*从scott.dept作为时间戳to_timestamp('2011-12-09 10,'yyyy-mm-dd hh24:MI:SS);
编号名称位置
---------------------------------------------------------------
10纽约会计
20研究达拉斯
30销售奇卡
40运营的波士顿
闪回查询,主要依靠撤销表
空间,如果你想回更多的数据,你需要建立一个较大规模的undo_tablespaces和undo_retention。
如果要将当前表更新到历史的某个时间状态,可以直接使用闪回关键字:
SQL> ALTER TABLE scott.dept使行运动;
桌子已经换了。
SQL >闪回表scott.dept时间戳的to_timestamp('2011-12-09 10,'yyyy-mm-dd hh24:MI:SS);
完全倒叙。
{注}:
闪回不是一切,当一个表是大的或时间太长,如果没有
设置更大的闪回空间和时间,闪回就会失败,可能会出现以下错误: