如何恢复Oracle误提交的数据
误删(或者更新)表中的部分数据,并且已经向数据库提交了更改,在没有备份这些数据的情况下,有没有办法恢复到原来的样子?答案是:Yes!Oracle提供了一项叫作闪回查询(Flashback Query)的特性来帮助我们查看和重建意外删除或更改的受损数据。
闪回查询用于查询过去某个时间点的数据。
语法规则
SELECT
*
FROM
test AS OF TIMESTAMP ( SYSDATE - INTERVAL '1' HOUR )
-- 或者
SELECT
*
FROM
test AS OF TIMESTAMP to_timestamp('2019-07-17 00:00:00','YYYY-MM-DD HH24:MI:SS')
详细示例
假设当前时间下,表test
中的数据是:
接下来,请动手模拟如下的CRUD场景来感受一下闪回查询。
- 更改
id=2
记录的name
字段的值为654321
; - 删除
id=2
记录;
执行如下SQL语句来查看5分钟之前的表test
中的数据:
SELECT
*
FROM
test AS OF TIMESTAMP ( SYSDATE - INTERVAL '5' MINUTE )
ORDER BY
id
查询结果如下:
根据查询结果,还原id=2
的记录。删除id=2
记录后的恢复方法,与之类似,不再冗述。
以上就是闪回查询的入门介绍,更详细的用法请参考使用手册。
参考资料
写于 2019年07月18日