Update誤操作後如何恢復資料

2021-08-13 20:52:28 字數 1325 閱讀 8842

今天在公司操作使用者表,要求更新某個使用者的密碼字段,結果在寫更新語句的時候忘記加條件了,導致所有使用者資料都被更新了,瞬間慌神了,表中可有幾十條資料,而且密碼都是md5加密的,於是趕緊查資料,使用了資料恢復方法,目前資料已成功恢復,所以在這裡總結一下,希望以後在遇到同樣問題的時候能夠快速的解決。

系統:windows xp

資料庫:oracle9i

工具:plsql

採用的方法就是利用oracle資料庫的基於時間查詢as of timestamp語句的辦法進行恢復資料,下面以乙個簡單地例子進行演示。

1.比如我新建test1表,目前表中有以下三條資料

2.我現在做乙個update操作,要把id=1的passwd欄位更新為123456,但是由於我操作的失誤,id=1條件忘了加了,導致整表更新了,其他記錄的passwd欄位全部都是123456。

sql:update test1 set passwd=』123456』;

誤操作後結果:

3.此時我們可以採用oracle的基於時間查詢的辦法查詢出5分鐘前的表的記錄情況,查詢sql如下:

select * from test1 as of timestamp sysdate – 5/1440

查詢結果:

對sql的解釋說明:

sysdate :當前時間

1440 :24h*60m=1440m

4.通過上面的查詢,我們看到了在update之前的資料情況。那麼把資料恢復回去就很簡單了,通過id關聯的方式更新回去即可。如下:

update test1 t1 set t1.passwd = (select passwd from test1 as of timestamp sysdate - 5/ 1440 where t1.id = id);

更新後結果:

這種做法也是dba常用的恢復資料的手段。對於刪除的情況,那麼就通過insert辦法重新把記錄插入表即可。

提醒

最後需要 特別提醒大家注意的是,sql中的sysdate-5/1440代表查詢5分鐘前的記錄情況,由於是和當前時間sysdate的距離5分鐘前,所以這個隨著隔的時間不同及時間的推移是會變化的,一般的做法是在真正做恢復時的update前,需要先select查詢一下比如5分鐘前的資料是否是我們想要的資料,確認無誤後立即做恢復的update。如果資料不是我們想要的,那麼就需要通過調節分鐘數直到找到我們想要的資料。這種辦法適合小批量資料,如果是大批量資料且很重要的資料的話,建議大家新建一張結構相同的表,先把as of timestamp查詢出來的資料存到新錶中,再進行恢復操作,因為這樣資料不再受時間差的影響,確保資料是準確的,無論你何時開始做恢復操作都沒有問題。

Update誤操作後如何恢復資料

今天在公司操作使用者表,要求更新某個使用者的密碼字段,結果在寫更新語句的時候忘記加條件了,導致所有使用者資料都被更新了,瞬間慌神了,表中可有幾十條資料,而且密碼都是md5加密的,於是趕緊查資料,使用了資料恢復方法,目前資料已成功恢復,所以在這裡總結一下,希望以後在遇到同樣問題的時候能夠快速的解決。系...

oracle使用update後閃回恢復資料

使用update後忘記加條件導致全表更新可以使用,閃回技術恢復資料。閃回技術 oracle提供了四種可供使用的閃回技術 閃回查詢,閃回刪除,閃回歸檔,閃回資料庫 一 閃回查詢 1.查詢某個操作是幾時執行的時間點 例查詢2020 11 11執行的update語句 select t.sql text,t...

電腦硬碟檔案誤操作後怎麼恢復

上大學的時候,選了個看似有前途的計算機專業,但是畢業的時候才發現,自己真沒那個程式設計的天分,永遠在模仿,一到自己編的時候,腦子就轉不過來了。所以,大學畢業之後跟幾個志同道合的朋友開了維修中心,他負責硬體維修,我負責軟體維護。所幸現在電腦使用量大,我們的生意也還算紅火。抽著一點閒空,跟大家說乙個小竅...