Oracle 数据误删或误改后恢复方法
当某个表的数据有误删或误改的操作,如果记录已经commit,此时要进行数据回滚的话有两种常用方式:闪回和查看数据快照。
查看数据快照
如果我们知道哪些数据误删或误修改了,那我们可以查看表的数据快照中的数据,通过对比,将变更的记录恢复回去。
查看的语句:
1 | -- 查看100分钟之前的数据 |
我们可以将快照中的数据复制到一个临时表,将有变更的数据从临时表中更新回原表,这样就达到了恢复的效果。
1 | -- 将3小时之前的数据复制到临时表 |
闪回
闪回方式可以将一个表回退到某一个时间点,缺点是整个表数据都会回退,不能只回退误操作的部分。
在进行数据回滚前,可以先查看回滚时间点数据快照的数据情况,确认之后就可以开始进行数据回滚操作了。
- 开启闪回,如果不开启无法进行闪回
1 | alter table 表名 enable row movement; |
- 闪回表数据到某个时间点
1 | flashback table 表名 to timestamp TO_TIMESTAMP('2012-09-20 10:00:00', 'yyyy-mm-dd hh24:mi:ss'); |
- 关闭闪回
1 | alter table 表名 disable row movement; |
------ 本文完 ------