閃回技術可以不需要使用備份檔案,依賴于復原段中的資料前鏡像,恢複一定時間内的資料。過久之前的資料,隻能通過備份檔案恢複了。
檢視是否開啟閃回:
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
一、閃回分類

前四種閃回技術,依賴于undo表空間,可閃回的極限時間由
undo_retention
決定;
閃回資料庫技術,可閃回的極限時間由
db_flashback_retention_target
所決定。
SQL> show parameter undo_retention;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_retention integer 900 (機關是秒)
SQL> show parameter db_flashback_retention_target;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440 (機關是分鐘)
二、閃回查詢
select * from scott.stu as of timestamp to_date('20211111 17:05:39','yyyymmdd hh24:mi:ss');
三、閃回版本查詢
select versions_starttime,versions_endtime,versions_xid,versions_operation,sno,sname,sage
from scott.stu
versions between timestamp minvalue and maxvalue;
-- versions_starttime,versions_endtime,versions_xid,versions_operation
-- 這些都是僞列:分别是事務的開始時間、結束時間、SCN号、ID号等
可以進行基于閃回版本查詢的恢複——閃回事務查詢;
就是從
flashback_transaction_query
中查詢引起資料變化的事務,和撤銷事務的SQL;查詢出的結果中的undo sql可以提取出來執行恢複;
select OPERATION,UNDO_SQL
from flashback_transaction_query
where table_owner='SCOTT' and table_name='STU';
-- 如果查詢結果中undo sql沒有值,執行指令:alter database add supplemental log data;
四、閃回表(自動回退)
特點:線上操作,自動恢複相關的屬性,包括索引、觸發器等。
前提:啟動行遷移
注意:sys的表不能閃回。
1. 啟動行遷移: alter table scott.stu enable row movement;
2. flashback table scott.stu to timestamp to_date('20211018 10:44:39','yyyymmdd hh24:mi:ss');
五、閃回删除
從資源回收筒裡撈回來
SQL> drop table stu;
Table dropped
SQL> select * from stu;
ORA-00942: table or view does not exist
SQL> flashback table stu to before drop;
Done
SQL> select * from stu;
SNO SNAME SAGE
-----------------------------------------------------
1 TOM 21
2 LILY 22
3 BOB 23
六、閃回資料庫
- 配置資料庫為歸檔模式:alter database archivelog;
- 配置閃回恢複區:show parameter db_recovery_file_dest;
- 配置閃回保留時間:show parameter db_flashback_retention_target;
- 啟用資料庫閃回:alter database flashback on;
- 進行閃回資料庫:flashback database to timestamp;