關於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

相關文章
相關標籤/搜索