SQL>select * from test;
1
2
一、按照SCN進行恢複
SQL>select * from sys.smon_scn_time
order by time_dp desc;
30970780
scn 與時間的對應關系:每隔5分鐘,系統産生一次系統時間标記與scn的比對并存入sys.smon_scn_time表
SQL>delete from test;
SQL>select
* from test as of scn 30970780
可以看到在這個檢查點的表的曆史情況
SQL>insert into
test
select * from
test as of scn 30970780
恢複test該時間點的資料
二、按照時間點恢複
為了看到更準确的時間點,可以建立一個臨時表用于檢視實驗的時間點:
create table rec_date(date_scn date);
删除之前存入時間:
SQL>insert into rec_date select sysdate from dual;
使用儲存的時間點進行恢複:
DECLARE
Restore_scn date;
BEGIN
Select date_scn into restore_scn from rec_date;
Dbms_flashback.enable_at_time (restore_scn);
END;
/
備注:
1、SMON_SCN_TIME表基礎知識(來自惜分飛的http://www.xifenfei.com/2754.html)
(1)、作用:由smon收集scn和time映射關系,用于flashback/查詢scn和time對應關系等操作。
(2)、保留條數:官方文檔給出說明instance number N * 12 times per hour * 24 hours * 5 days = 1440N rows,因為每次的時間間隔不是非常準确的5分鐘,是以在具體的條數在實際生産環境中有一定的出入。
(3)、采集和删除:smon程序沒5分鐘采集一次插入到SMON_SCN_TIME表中,同時将删除曆史資料(超過5天前資料)。
(4)、當查詢scn對應time,如果scn超過SMON_SCN_TIME表範圍,将提示錯誤;或者查詢time對應的scn,如果超過範圍也同樣報錯。
(5)、scn計算方法SCN=(SCN_WRP * 4294967296) + SCN_BAS
(6)、對于drop的表,閃回查詢不能恢複。