Oracle11g 閃回事務查詢就是對過去某段時間内所完成的事務的查詢和撤銷,通過閃回事物分析,可以識别在一個特定的時間段内所發生的所有變化,也可以對數據庫表進行事物級恢複。 前面提到可以審計一個事務到底做了什麼,現在可以獲得事務的曆史操作進行撤銷。
1、查詢某段時間内的操作發生情況:
select id,name,versions _operation,versions_xid,versions_starttime from testversions between timestamp minvalue and maxvalue order by id;
2、 根據 XID 對 flashback _transaction_query 進行查詢
select table _name,table_owner,undo_SQL from flashback_transaction_query wherexid=‘„’
3、運行上面找出的 sql 語句,即可将以前删除的數據恢複回來。
Flashback Transaction Query 也是使用 UNDO 信息來實現。利用這個功能可以查看某個事務執行的所有變化,它需要訪問 flashback _transaction_query 視圖,這個視圖的 XID 列代表事務 ID,利用這個 ID 可以區分特定事務發生的所有數據變化。
先開啟附加日志
SQL> create table B(id int); Table created. SQL> insert into B values(1); 1 row created. SQL> insert into B values(2); 1 row created. SQL> insert into B values(3); 1 row created.
查看視圖,每個事務都對應相同的XID
SQL>select xid,operation,commit_scn,undo_sql from flashback_transaction_query where xid in (Select versions_xid from B versions between scn minvalue and maxvalue);
删除數據:
SQL> delete from B where id=3; 1 row deleted. SQL> commit; Commit complete.
再次查看視圖,每個事務都對應相同的XID
SQL>select xid,operation,commit_scn,undo_sql from flashback_transaction_query where xid in (Select versions_xid from scott.B versions between scn minvalue and maxvalue);
閃回事務查詢可以将同一事務的所有撤銷SQL列出,這是閃回查詢做不到的,如有必要,管理員還能夠執行對應一個事務的部分撤銷SQL以一種破壞事務原子性的方式恢複一部分數據,如此行事正确與否完全取決于應用的邏輯。
後面會分享更多flashback方面的内容,感興趣的朋友可以關注下!
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!