【Oracle Database】FlashBack(閃回)
阿新 • • 發佈:2020-11-25
閃回版本查詢 SQL> set line 200 SQL> col starttime for a30 SQL> col endtime for a30 SQL> col operation for a30 SQL> select to_char(versions_starttime,'yyyy-mm-dd hh24:mi:ss') starttime,to_char(versions_endtime,'yyyy-mm-dd hh24:mi:ss') endtime, versions_xid xid,versions_operation operation from soe.customers versions between timestamp to_date('2018-09-22 14:00:00','yyyy-mm-dd hh24:mi:ss') and sysdate where versions_xid is not null; STARTTIME ENDTIME XID OPERATION ------------------------------ ------------------------------ ---------------- ------------------------------ 2018-09-22 14:00:36 05001100B8030000 U 2018-09-22 13:59:59 05000700B8030000 U 2018-09-22 14:00:25 08001B00CC030000 U 2018-09-22 14:00:14 05001000B8030000 I 2018-09-22 14:00:20 09001700C9030000 I 2018-09-22 14:00:05 0B00200041000000 I 2018-09-22 14:00:05 09000700CA030000 I 2018-09-22 14:00:11 03001800B4030000 I 8 rows selected. 閃回事務查詢 SQL> select undo_sql from flashback_transaction_query where xid = hextoraw('03001800B4030000'); UNDO_SQL -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- delete from "SOE"."LOGON" where ROWID = 'AAAVU+AAGAAAavRAB6'; delete from "SOE"."CARD_DETAILS" where ROWID = 'AAAVU4AAHAAAQEoABz'; delete from "SOE"."ADDRESSES" where ROWID = 'AAAVU3AAHAAAbuoAAy'; delete from "SOE"."CUSTOMERS" where ROWID = 'AAAVU2AAGAAAaqxAAO'; SQL> select undo_sql from flashback_transaction_query where xid = hextoraw('08001B00CC030000'); UNDO_SQL -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- update "SOE"."CUSTOMERS" set "PREFERRED_ADDRESS" = '1162533' where ROWID = 'AAAVU2AAGAAACC9AAS'; delete from "SOE"."ADDRESSES" where ROWID = 'AAAVU3AAHAAAbumAA5'; 閃回表 SQL> alter table soe.customers enable row movement; SQL> select count(*) from soe.customers; COUNT(*) ---------- 1000000 SQL> select dbms_flashback.get_system_change_number from dual; GET_SYSTEM_CHANGE_NUMBER ------------------------ 1439085 SQL> select scn_to_timestamp(1439085) scn from dual; SCN --------------------------------------------------------------------------- 25-MAY-20 05.31.02.000000000 PM SQL> delete from soe.customers where nls_territory = 'Korea'; 12920 rows deleted. SQL> commit; Commit complete. SQL> select count(*) from soe.customers; COUNT(*) ---------- 987080 SQL> select count(*) from soe.customers as of timestamp to_timestamp('2020-05-25 17:30:00','yyyy-mm-dd hh24:mi:ss'); COUNT(*) ---------- 1000000 SQL> flashback table soe.customers to timestamp to_timestamp('2020-05-25 17:30:00','yyyy-mm-dd hh24:mi:ss'); Flashback complete. SQL> select count(*) from soe.customers; COUNT(*) ---------- 1000000 閃回刪除 SQL> show parameter recyclebin; NAME TYPE VALUE ------------------------------------ --------------------------------- ------------------------------ recyclebin string ON SQL> drop table warehouses; Table dropped. SQL> show recyclebin; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- WAREHOUSES BIN$doc0/FwhEVPgU8kBqMBrow==$0 TABLE 2018-09-23:17:07:50 SQL> flashback table warehouses to before drop; Flashback complete. SQL> select count(*) from warehouses; COUNT(*) ---------- 1000 SQL> alter index "BIN$doc0/FwgEVPgU8kBqMBrow==$0" rename to warehouses_pk; Index altered. SQL> alter table warehouses rename constraint "BIN$doc0/FwfEVPgU8kBqMBrow==$0" to warehouses_pk; Table altered. 總結:閃回版本查詢,閃回事務查詢,閃回表與UNDO有關,與閃回日誌沒有任何關係 閃回刪除與recyclebin有關,與閃回日誌沒有任何關係 閃回資料庫與閃回日誌有關