ORACLE的閃回事務撤銷技術

2021-09-10 02:17:30 字數 2585 閱讀 3742

事務的依賴性 比如,兩個事務tx1和tx2,若符合以下3個條件的任意乙個就可以認為tx2依賴tx1:

(1)waw依賴(write after write),即在tx1修改了表的某行之後,tx2又修改了同一行。

(2)主鍵依賴,即在一張擁有主鍵的表中tx1首先刪除了一行,之後tx2又插入了具有相同主鍵值的另一行。

(3)外建依賴,即由於tx1的修改(insert或update)而產生了新的可被外來鍵參考的字段值,之後tx2修改(insert或update)外來鍵字段時利用了tx1所產生的字段值。

transaction_backout儲存過程的options引數就是為了解決事務依賴性問題而存在的,在該引數上管理員可以使用4種撤銷事務的方案,假設被撤銷的事務是tx1,若其具有依賴事務,則稱為tx2:

(1)nocascade,tx1不可以被任何其他事務依賴(即tx2不存在),否則撤銷操作報錯。

(2)cascade,將tx1連同tx2一起撤銷。

(3)nocascade_force,忽略tx2,直接執行tx1的撤銷sql將tx1撤銷,如果沒有約束上的衝突,操作將成功,否則約束報錯導致撤銷操作失敗。

(4)nonconfilict_only,在不影響tx2的前提下,撤銷tx1的修改。與nocascade_force的不同點在於會首先過濾一下tx1的撤銷sql,確保它們不會作用在tx2修改的行上。

如果閃回第乙個事務

剛開始:

deptno dname loc

10 accounting      new york

20 research dallas

30 sales chicago

40 operations boston

事務一之後:

sql> select * from dept;

deptno dname      loc
0 accounting      new york

10 research dallas

20 sales chicago

30 operations boston

事務二之後:

sql> select * from dept;

deptno dname      loc
15 accounting      new york

25 research dallas

35 sales chicago

45 operations boston

閃回事務一之後:

sql> select * from test1.dept;

deptno dname      loc
15 accounting      new york

25 research dallas

35 sales chicago

45 operations boston

閃回事務二之後:

sql> select * from test1.dept;

deptno dname      loc
0 accounting      new york

10 research dallas

20 sales chicago

30 operations boston

實驗:

alter database add supplemental log data;

alter database add supplemental log data (primary key) columns;

grant execute on dbms_flashback to test1;

grant select any transaction to test1;

select distinct xid,commit_scn

from flashback_transaction_query

where table_owner=『test1』 and

table_name=『dept』 and

commit_timestamp > systimestamp - interval 『15』 minute

order by commit_scn;

select undo_sql from flashback_transaction_query

where commit_scn=『8460526』;

declare

xids sys.xid_array;

begin

xids := sys.xid_array(『090019005e2c0000』);

dbms_flashback.transaction_backout(1,xids,options=>dbms_flashback.nocascade_force);

end;

/

閃回事務查詢 閃回事務查詢案例

閃回事務查詢 1閃回事務查詢是閃回版本查詢的乙個擴充 2閃回事務查詢可以審計某個事務或者撤銷乙個已經提交的事務 閃回事務查詢案例 測試資料 create table sct4 id number 4 name varchar2 20 insert into sct4 values 1,lili co...

閃回事務處理

1.閃回事務處理功能的前提 sql show user user is sys sql alter database add supplemental log data database altered.sql alter database add supplemental log data pri...

oracle閃回技術

1,閃回資料庫到之前某時間點 在安裝時需要開放閃回功能 不支援表空間刪除 select name from v database 看是否開啟閃回功能 select flashback on,name from v database select name from v bgprocess where...