pl/sql中误删表中数据并提交恢复办法

时间:2023-03-08 22:17:56

最近在操作表中数据时,删除了表中数据,但是又想恢复,后来查到了官方的一篇文档,发现还蛮有用的,如下:

在pl/sql中运行,select * from A as of TIMESTAMP to_timestamp('','yyyymmdd');

此原理是利用Flashback Query这一特性,最常被应用的就是修复误操作的数据了。注意,这并不是说Flashback Query能够恢复数据。Flashback Query本身不会恢复任何操作或修改,也不能告诉你做过什么操作或修改,实际上Flashback Query特性实际应用时,是基于标准SELECT的扩展,借助该特性能够让用户查询到指定时间点的表中的记录,相当于拥有了看到过去的能力。

注意:1.红色标记的时间一定要改成你删除数据的最贴切时间,这样才能保证数据尽最大可能的被查询出来,之后可以把数据导出.sql文件,然后insert to 原表中

2.AS OF TIMESTAMP方式的使用非常方便,但是在某些情况下,我们建议使用AS OF SCN的方式执行Flashback Query。如需要对多个相互有主外键约束的表进行恢复时,如果使用AS OF TIMESTAMP的方式,可能会由于时间点不统一的缘故造成数据选择或插入失败,通过AS OF SCN方式则能够确保记录处理的时间点一致。