使用oracle閃回查詢功能恢復之前刪除的資料

2021-04-24 08:16:00 字數 795 閱讀 6735

在誤刪除資料之後使用oracle閃回查詢功能恢復刪除的記錄

首先,使用了oracle的閃回查詢功能:

flashback table test to timestamp to_timestamp(』2005-05-07 15:00:00』,』yyyy-mm-dd hh24:mi:ss』);

但是發現此功能只能夠將表閃回到某一時刻,但是使用者無法提供具體的時間或者scn,所以使用閃回表無法找到已刪除的資料

那麼我們可以考慮使用閃回版本查詢,顯示一段時間之內的記錄改變:

sql>select versions_starttime,versions_endtime, versions_xid,versions_operation,id

from test versions

between timestamp minvalue and maxvalue

order by versions_starttime;

但是不巧的是,使用者資料庫的undo_retention引數使用的是預設的900秒,現在已經超過了900秒,資料庫報錯:

ora-30052: invalid lower limit snapshot expression

最後使用閃回事務查詢解決此問題,因為我們知道大概的事務提交時間,事務操作的型別,事務操作的表,所以利用這些條件搜尋檢視flashback_transaction_query,從得到的結果中,找到我們錯誤執行的事務,執行undo_sql列裡的語句就可以了。

當然,幸運的是出現問題的資料庫是使用者測試用的資料庫,沒有太多的事務操作,所以很容易就可以找到我們需要閃回的事務。

Oracle 閃回功能

檢視閃回功能是否開啟 sql select flashback on from v database flashback on yes 開啟閃回功能 確保資料庫處於歸檔模式 sql shutdown immediate sql startup mount sql alter database arc...

Oracle閃回查詢

閃回查詢 查詢在特定時間點存在的所有資料。使用閃回查詢功能,可以執行截止到特定時間的查詢。使用select語句的as of子句,可以指定要檢視其對應資料的時間戳。這在分析資料差異時非常有用。注 timestamp和scn是as of子句的有效選項。update employees set salar...

oracle閃回功能示例

閃回表中的資料 必須開啟行移動功能alter table ccc log enable row movement select from ccc log delete from ccc log select from ccc log select from ccc log as of scn 945...