1.应用Flashback Query查询过去的数据
自9i之后,使用Flashback Query的特性,我们可以很轻松地恢复记录。 Flashback Query这一特性,最常被应用的就是修复误操作的数据了。注意,这并不是说Flashback Query能够恢复数据。Flashback Query本身不会恢复任何操作或修改,也不能告诉你做过什么操作或修改,实际上Flashback Query特性实际应用时,是基于标准SELECT的扩展,借助该特性能够让用户查询到指定时间点的表中的记录。
操作示例:
1. select * from test_table t //查询test_table 中所有的数据
2. delete test_table //删除test_table 中所有的数据
3. select * from test_table t //无数据。
4. insert into test_table select * from test_table as of timestamp to_Date('2011-01-19 15:28:00', 'yyyy-mm-dd hh24:mi:ss') //已将误删除数据插入表中
5. select * from test_table t //又会看到数据。
我们来分析下第四步,注意这句:
select * from test_table as of timestamp to_Date('2013-03-23 11:28:00', 'yyyy-mm-dd hh24:mi:ss'),什么意思呢, 找到test_table在2013-03-23 11:28:00这个时间点的所有数据(数据快照)。
INSERT INTO test_table SELECT * FROM test_table AS OF TIMESTAMP SYSDATE-5/1440
AS OF TIMESTAMP方式的使用非常方便,但是在某些情况下,我们建议使用AS OF SCN的方式执行Flashback Query。如需要对多个相互有主外键约束的表进行恢复时,如果使用AS OF TIMESTAMP的方式,可能会由于时间点不统一的缘故造成数据选择或插入失败,通过AS OF SCN方式则能够确保记录处理的时间点一致。