關於Oracle誤操作--數據被Commit后的數據回退恢復(閃回)


  今天操作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');

  這樣被誤操作的數據就可以“找”回來了。哈哈~

  於是乎,再想,Oracle有如此美妙的東西,那Sql Server有沒有呢? 於是乎查閱了一下資料,感覺有些悲催了。Sql Server沒有提供此類便捷的東西。貌似只能用Log恢復了。。。。

  正好剛才在看一篇文章,關於SQL的數據恢復。Mark一下:

        恢復SQLSERVER被誤刪除的數據:http://www.cnblogs.com/lyhabc/p/3683147.html

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM