在未開啓閃回的oracle數據庫中,表的數據被誤刪之後,即使沒有開啓閃回,只要發現及時還是有方法找回的,前提是數據還存在於undo 中沒被刷出去。 要是被刷出undo 了,只能試試通過logminer 挖掘歸檔日誌,或者從備份中還原了(12c rman好像是可以直接針對表進行數據還原的)。
通過時間戳方式查詢undo數據 :
例:
select *
from dba_objects
as of timestamp to_timestamp('03-09-2014 08:00:00', 'DD-MM-YYYY HH24:MI:SS')
where OBJECT_NAME = 'aaabbb' ;
由於dba_objects 使用的是輔助表空間,所以,我們也可以通過這樣的方法查詢到dba_objects 錶的歷史數據。同樣,對於一張普通表,我們也可以這樣查詢。
select *
from t_putongbiao
as of timestamp to_timestamp('03-09-2014 08:00:00', 'DD-MM-YYYY HH24:MI:SS')
where id= '123' ;