oracle 闪回 flashback

今天更新生成数据,没有增加筛选条件,造成了全表更新,当时就蒙蔽了.这里记录下处理流程,也是警戒吧.不然只能跑路了......

  1. 第一时间查看是否有备份数据,然而往往没有;
  2. 查询测试库是否可以用,两个库时间差异很大,往往也没法用;
  3. 联系运维看是否有做数据备份.答案是有,但是数据量往往很大,这个恢复时间周期会比较长,也不是最优解.
  4. 偶然发现oracle数据有个闪回功能,这个命令有时效限制,所以要尽快执行,还好我执行时记录了时间,整个操作时间花了9分钟左右,确实很刺激.使用命令如下
select * from <tablename> as of timestamp "TO_TIMESTAMP"('2021-09-15 15:54:00', 'yyyy-mm-dd hh24:mi:ss')
-- 开启闪回,如果不开启无法进行闪回
alter table <tablename> enable row movement
-- 闪回表数据到某个时间点
flashback table <tablename> to timestamp TO_TIMESTAMP('2021-09-15 15:54:00', 'yyyy-mm-dd hh24:mi:ss');
-- 关闭闪回,回滚数据之后需要进行关闭-- 
alter table <tablename> disable row movement;
  1. 线上更新操作,要先备份再更新,对于常操作表自己也可以定期做个备份.或者删除和更新操作要先写筛选条件再增加实际的更新值,这样就算有问题也可以控制影响范围.

参考资料

oracle数据库表中数据误更新回滚

posted @ 2021-09-15 16:14  橙木鱼  阅读(61)  评论(0编辑  收藏  举报