问题描述

问题:在进行update 的时候,忘记加where条件,导致所有数据都被修改。如何进行恢复到sql 执行前的状态,话不多说操作如下。

笔者,环境是oracle环境,mysql 没有尝试过。

第一步:查询执行过的SQL语句

select r.first_load_time,r.* from v$sqlarea r where sql_text like '%执行的SQL语句%' order by r.first_load_time desc

‘%%’ 不写的话,就是查找所有执行记录


第二步:设置误操作表可数据回滚

alter table 误操作表名 enable row movement;

第三步:恢复到时间节点

flashback table 误操作表名 to timestamp to_timestamp('SQL误执行时间','yyyy-mm-dd hh24:mi:ss');

SQL误执行时间,选择上一条SQL语句时间(误操作SQL的上一条)

第四步:关闭表回滚

alter table 误操作表名 disable row movement;

第五步:收工,检查数据情况

刷新一下你的表吧,你会惊喜的发现,总算数据回来了。

请添加图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐