EAS_查询分析器中误删数据恢复
1、通过flashback query查询某历史时点的数据量,找到删除时间点的前1s,如 2020-05-13 16:38:07秒钟误删的数据:
select count(*) from t_test as of timestamp to_timestamp('2020-05-13 16:38:06', 'yyyy-mm-dd hh24:mi:ss'); -- 查出5000条数据,查询6s时的数据
select * from t_test as of timestamp to_timestamp('2020-05-13 16:38:06','yyyy-mm-dd hh24:mi:ss') where object_name in ('I_NTAB1','I_NTAB2','I_NTAB3'); --查询6s时的数据,有被删的3条记录 s
elect count(*) from t_test as of timestamp to_timestamp('2020-05-13 16:38:07', 'yyyy-mm-dd hh24:mi:ss'); -- 查出4997条数据,
查询7s时的数据, 可见记录数少了3条,说明数据是在7s时删除的。
2、创建临时表,从删除之前的那一刻恢复所有数据:
create table t_test_0513 as select * from t_test as of timestamp to_timestamp('2020-05-13 16:38:06','yyyy-mm-dd hh24:mi:ss');
3、从恢复的表中把当前表中不存在的记录恢复:
insert into t_test select * from t_test_0513 where object_name not in (select object_name from t_test); commit;
4、数据恢复完成,进行数据验证:
--让现场验证数据无误,并确定没问题时删除临时创建的表。
select count(*) from t_test; --查出5000条数据,跟被删除数据前数据条数一样
select * from t_test where object_name in ('I_NTAB1','I_NTAB2','I_NTAB3'); --被删的三条记录得到了闪回恢复
drop table t_test_0513; --删除闪回用到的中间表t_test_0513
注意:
1.通过EAS Cloud查询分析器上执行的插入、更新、删除操作,是隐式提交的,即自动做了提交。故在执行前一定要确认下语句的WHERE条件是否已写对。另外 建议执行更新、删除数据前,先对操作的表做下备份,以免操作有误可以用备份数据还原。
2.进行数据的更新、删除操作建议不要在EAS Cloud查询分析器中执行,建议在这些工具如PL/SQL developer、TOAD、Oracle Developer工具中执行,执行语句后要点提交或执行commit语句后才会把数据写到数据库中。
3.出现数据误操作后,需立即拿闪回查询的方法进行数据恢复,争取能恢复的时间,不要错过恢复的时机导致不能恢复。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具