Oracle 11G 闪回技术 使用Oracle闪回查询


使用带有 AS OF 子句的 SELECT 语句进行闪回查询。闪回查询获取之前的时间点的数据。

语句通过时间戳或SCN显示地引用过去的时间。返回在那个时间点当时已经提交的数据。

闪回查询的使用包括:

1. 恢复丢失的数据、撤销不正确的且已经提交的改变。例如,如果你错误地删除或更新了行并且提交了,可以立即撤销这个错误。

2. 比较当前的数据和早些时候的数据。例如,可以运行一个日报表,来显示数据从昨天到今天的变化。

可以比较单独的行;也可以查看行集合的交集和并集。

3. 查看事务数据在特定的时间的状态。例如,可以验证某一天的帐户余额。

4. 通过消除存储一些类型的临时数据所需要,简化应用程序的设计。Oracle允许你直接从数据库获取过去的数据。

5. 对过去的数据应用打包的应用,例如报告产生工具。

6. 为应用提供了错误改正的自我服务,允许用户undo和改变他们的错误。

示例A. 检查和还原过去的数据
假设12:30 PM发现员工Chung所对应的数据行被从employees表中删除了。并且你知道在9:30 AM时,Chung的数据在数据库中是正常的。可以使用闪回查询来查看在9:30 AM时表中的内容,来找到丢失的数据。如果需要,可以还原数据。

employees

TO_TIMESTAMP'2004-04-04 09:30:00' )WHERE='Chung'

--使用闪回查询还原丢失的行INSERTINTO(  employees

ASOFTIMESTAMP(,'YYYY-MM-DD HH:MI:SS'

WHERE='Chung');


Oracle闪回查询指导

1. 可以对每个表指定或省略AS OF子句,对不同的表指定不同的次数。

注意:如果一个表是闪回数据归档,并且指定了时间比它创建的时间还要早,则查询会返回0行,而不会引起错误。

2. 可以在查询中使用AS OF子句来执行DDL操作(例如创建和截断表),

也可以用来在和闪回查询相同的会话中执行DML操作(INSERTDELETE)。

3. 在影响数据库当前状态的DDL语句或DML语句中使用闪回查询的结果,

可以在INSERTCREATE TABLE AS SELECT语句中使用AS OF子句。

4. 如果在应用中,这种3秒钟的误差对于闪回查询是重要的,则使用SCN而不是时间戳。

5. 可以使用创建视图引用过的数据,即在视图定义的SELECT语句中使用AS OF子句。

如果指定一个相对时间,即从数据库主机的当前时间减去,则对于每个查询,时间要重新计算。

hour_ago

SELECT*FROMASOFTIMESTAMP(-INTERVAL'60'MINUTEINSERTINTO( employees SYSTIMESTAMP ))MINUSSELECT*FROM);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值