0.查undo情況, 閃回用到undo
SQL> show parameter undo
1.查scn
SQL> select dbms_flashback.get_system_change_number from dual;
或SQL> select current_scn from v$database;
2.查scn與timestamp對應表
SQL>select scn,to_char(time_dp,'yyyy-mm-dd hh24:mi:ss') from sys.smon_scn_time;
3.根據timestamp查看t1表5分鐘以前情況
SQL> select * from t1 as of timestamp sysdate-5/1440
4.根據scn查看t1表
SQL> select * from t1 as of scn 344197;
5.根據scn查看t1表記錄的變化情況
SQL> select id,vl,versions_startscn,versions_endscn,versions_operation from t1 versions between scn 372466 and 372538 order by 2;
6.根據timestamp查看t1表記錄的變化情況
SQL> select * from t1 versions between timestamp sysdate-5/1440 and sysdate;
7.從RECYCLEBIN中恢復
SQL> select object_name,original_name from recyclebin;
8.根據scn恢復被刪數據行
SQL> insert into t1 select *from t1 as of scn 344197 where id not in(select id from t1);
9.恢復到指定scn
SQL> flashback table t1 to scn 593480;
若提示: ORA-08189: 因為未啟用行移動功能, 不能閃回表,則執行以下語句啟用row movement,.
SQL> alter table t1 enable row movement;
10.恢復到指定timestamp
SQL> flashback table t1 to timestamp sysdate-20/12400;
11.根據timestamp恢復被刪除數據行
SQL> insert into t1 select *from t1 as of timestamp sysdate-5/1440 where id not in(select id from t1);
12.恢復被刪除數據表t1
SQL> flashback table t1 to before drop;
13.真正刪除表(添加purge), 不能恢復.
SQL> drop table t7 purge;
Table dropped
SQL> commit;
Commit complete
SQL> flashback table t7 to before drop;
flashback table t7 to before drop
ORA-38305: 對象不在回收站中
SQL> flashback table t7 to scn 2474345;
flashback table t7 to scn 2474345
ORA-00942: 表或視圖不存在
14.開啟/關閉自動回收(recyclebin)
SQL> alter session set recyclebin=on;
SQL> alter session set recyclebin = off;
15.Transaction query事務查詢
SQL> select xid,commit_scn,commit_timestamp,operation,undo_sql from flashback_transaction_query q where q.xid in( select versions_xid from t1 versions
between scn 2474922 and 2475048);
16.恢復數據庫到指定scn
數據庫必須處于 ARCHIVELOG 模式
必須激活數據庫的 FLASHBACK 特征
必須合理配置初始化參數 db_flashback_retention_target,該初始化參數用于控制可以恢復到的最早時間點
SQL> alter database flashback on;
SQL> shutdown immediate;
SQL> startup mount exclusive;
SQL> flashback database to scn 686384;
SQL> alter database open resetlogs;