在未开启闪回的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' ;