关于Oracle误操做--数据被Commit后的数据回退恢复(闪回)

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

  因而乎,把全部的员工工号都给更新成一个同一个工号了。这是一个悲催的故事。数据库

  由于工号是Check了好屡次才存入数据库,工号是惟一性的啊~~spa

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

  若是屡次commit数据后,那可不能够闪回呢?貌似不能够。闪回只能暂存最近一次的数据操做。这个就和内存同样。你不能够再内存中找到上一年的数据吧。 htm

  闪回执行步骤: blog

  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'表示上次更新数据前的时间,get

  2.闪回操做前启用行移动功能(不启用不能够闪回flash

   alter table account enable row movement;

  其中account表示被误操做的表 it

  3.执行闪回语句:

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

  这样被误操做的数据就能够“找”回来了。哈哈~

  因而乎,再想,Oracle有如此美妙的东西,那Sql Server有没有呢? 因而乎查阅了一下资料,感受有些悲催了。Sql Server没有提供此类便捷的东西。貌似只能用Log恢复了。。。。

  正好刚才在看一篇文章,关于SQL的数据恢复。Mark一下:

        恢复SQLSERVER被误删除的数据:http://www.cnblogs.com/lyhabc/p/3683147.html

相关文章
相关标签/搜索