日常工作中,我们经常会出现误删Oracle数据的情况,当delete和drop(未加purge)表时,我们可以通过如下进行快速恢复:
(1) delete 误删数据时:
我们可以通过构造一致性读的方式来进行恢复,前提是及时发现误删的数据,同时当前的undo块或者撤销快未被覆盖
create table quick_table as
select * from emp_temp as of timestamp (SYSTIMESTAMP - INTERVAL '60' MINUTE);
此时 quick_table就是包含了该表60分钟前的数据,这里的60可以根据实际情况来改变。
(2) drop 误删表时:
前提是我们没有使用drop table XX purge方式删除表,而是通过drop table XX的方式进行删除的,这时我们可以通过:
flashback table XXX to before drop;
以此来进行快速的恢复。
总结
以上的方法都有局限性,这就要求我们在日常工作中操作数据库时,一定要格外小心,同时做好相应的备份工作,保证每天都有备份,做到有备无患。