我在我的工作上犯了一個可怕的錯誤,我在沒有'where'子句的oracle表上執行了一個更新的查詢,並且這個表上的所有內容都發生了變化,我想知道是否有任何方法可以恢復表中的數據。我知道我可以使用閃回,但是有沒有其他方法可以做到這一點?如果你知道如何在oracle中創建一個閃回表,請告訴我。如何恢復Oracle表中的數據?
我使用的是Oracle 10g R2 10.2.0.1
我在我的工作上犯了一個可怕的錯誤,我在沒有'where'子句的oracle表上執行了一個更新的查詢,並且這個表上的所有內容都發生了變化,我想知道是否有任何方法可以恢復表中的數據。我知道我可以使用閃回,但是有沒有其他方法可以做到這一點?如果你知道如何在oracle中創建一個閃回表,請告訴我。如何恢復Oracle表中的數據?
我使用的是Oracle 10g R2 10.2.0.1
首先,您是否進行了更改?如果沒有,您可以簡單地發出rollback
以恢復您的更改。
假設您確實提交了更改,其他用戶是否同時修改表?您是否需要保留其他人所做的更改,並僅恢復您在交易中所做的更改?還是可以在更改之前將整個表還原到某個時間點?
如果你能在時間整個表恢復到一個點
FLASHBACK TABLE <<table name>>
TO TIMESTAMP(systimestamp - interval '10' minute)
只會返回一個表,它是在10分鐘內的狀態前假設必要這麼做UNDO
仍然可用(所以你在犯錯後會有一段時間才能閃回那個錯誤)。爲了發出FLASHBACK TABLE
,你還必須確保
ALTER TABLE <<table name>> ENABLE ROW MOVEMENT
FLASHBACK
權限或FLASHBACK ANY TABLE
系統權限。如果您還想**檢索您刪除的數據,則可以在出現錯誤前使用此查詢:SELECT * FROM <
指定與版本一起使用的Oracle的確切版本總是有幫助的。 Oracle 11.2.0.1企業版)。這種事情從發佈到發佈都有很大的變化,不同的版本具有不同的功能。我做了一些猜測,因爲時間是關鍵(很多方法都依賴於'UNDO'的存在,這取決於你的配置,可能只給你幾分鐘的窗口)。但更具體的你可以變得更好。 – 2013-03-08 16:46:20