博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Oracle误操作--数据被Commit后的数据回退(闪回)
阅读量:6237 次
发布时间:2019-06-22

本文共 771 字,大约阅读时间需要 2 分钟。

今天操作Oracle数据库时,做一个Update数据时,不小心少写了个where,看这粗心大意的。

  于是乎,把所有的员工工号都给更新成一个同一个工号了。这是一个悲催的故事。

  因为工号是Check了好多次才存入数据库,工号是唯一性的啊~~

  不过,好在更新过后意识到这一点了。于是乎,先停止操作数据库。想想数据库Commit过后的数据可以回退不!在网上搜索了一下。发现Oracle有“闪回”的功能。具体“闪回”的概念,可以参见百度百科。

  如果多次commit数据后,那可不可以闪回呢?貌似不可以。闪回只能暂存最近一次的数据操作。这个就和内存一样。你不可以再内存中找到上一年的数据吧。 

  闪回执行步骤: 

  1.查询最近更新数据之前的数据(以便确定是不是Commit之前的数据)

select * from account as of timestamp to_timestamp('2014-04-22 08:00:00', 'yyyy-mm-dd hh24:mi:ss');

  其中account为被误操作的表,'2014-04-22 08:00:00'表示上次更新数据前的时间,

  2.闪回操作前启用行移动功能(不启用不可以闪回

alter table account enable row movement;

  其中account表示被误操作的表 

  3.执行闪回语句:

flashback table account to timestamp TO_TIMESTAMP('20140422 15:10:00','YYYYMMDD HH24:MI:SS');

  这样被误操作的数据就可以“找”回来了。哈哈~

转载于:https://www.cnblogs.com/ms-grf/p/7170948.html

你可能感兴趣的文章
为什么输入shutdown -h -t会报错:command not fount
查看>>
Spark 集群环境搭建
查看>>
4.css浏览器原理与兼容等
查看>>
页面加载海量数据
查看>>
javascript数据类型以及类型间的转化函数
查看>>
[Android Pro] CPU占用计算方法
查看>>
[Android Pro] static 和 Volatile 的区别
查看>>
Python 5
查看>>
SpannableString富文本
查看>>
类的组合
查看>>
oracle权限管理应用,判断A字段中是否包含B字段的值
查看>>
gcc的基本用法
查看>>
迭代器和生成器
查看>>
阅读书单(陆续更新中)
查看>>
分布式锁的三种实现方式
查看>>
跨域文件上传解决方案
查看>>
2018.09.17python作业
查看>>
centos的用户的基本操作
查看>>
正则表达式
查看>>
laravel Event执行顺序
查看>>