您的位置:首页 > 数据库 > Oracle

oracle恢复误删数据

2013-03-23 11:32 537 查看
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方式则能够确保记录处理的时间点一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: