在修改数据库总有智障的时刻,笔者使用的Navicat每次新建查询自动commit,方便之余也会因此碰到麻烦。
1.查询误操作之前的表
select * from table_name
as of timestamp to_timestamp('2018-04-05 12:00:00', 'yyyy-mm-dd hh24:mi:ss');
属性说明:table_name(表名),'2018-04-05 12:00:00'(误操作之前的时间点,不用太精确,只要在这刻是正确数据即可)。用于验证这个时间段数据是否正确。
2.开启闪回功能
alter table table_name enable row movement;
3.回滚表
flashback table_name account to timestamp TO_TIMESTAMP('20180405 12:00:00','YYYYMMDD HH24:MI:SS');
此时便如你所愿表回滚带指定时刻的状态了,一般误操作在数小时内可以进行回滚,如果在时间太长此方法无效。