ORACLE數(shù)據(jù)庫事務(wù)隔離級別 之SERIALIZABLE

1.準備測試表及數(shù)據(jù)

create table TEST_SER
(
  tid   NUMBER,
  tname VARCHAR2(10)
);

2.插入測試數(shù)據(jù)

insert into test_ser(tid,tname)
select rownum tid,'n_' || rownum tname from dual connect by level<=1000;
commit;

3.查看數(shù)據(jù)分布

select min(tid) as min_tid,max(tid) as max_tid,
dbms_rowid.rowid_object(rowid)  as "object_id(數(shù)據(jù)對象號)",
dbms_rowid.rowid_relative_fno(rowid) as "file_id(相對文件號)",
dbms_rowid.rowid_block_number(rowid) as "block_id(在第幾個塊)"
--,dbms_rowid.rowid_row_number(rowid) as "num(在block中的行數(shù))"
from test_ser 
group by dbms_rowid.rowid_object(rowid),dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid);

  MIN_TID  MAX_TID  object_id(對象號)  file_id(文件號)    block_id(在第幾個塊)
    985     1000      73197               18                182
    500     984       73197               18                181
    1       499       73197               18                180

4.測試會話1

# T1 時間 設(shè)置事務(wù)級別 SERIALIZABLE 
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

# T2 時間
select tid,tname from test_ser where tid in(1,500);
    TID     TNAME
1   1       n_1
2   500     n_500

5.測試會話2

#T3 時間(可選項,因為默認是 READ COMMITTED )
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

#T4 時間
update test_ser t set t.tname='m_1' where t.tid=1;

#T5 時間
commit;

6.回到測試會話1

#T6 時間 (再次查詢結(jié)果 和 T2 時刻一致)
select tid,tname from test_ser where tid in(1,500);
    TID     TNAME
1   1       n_1
2   500     n_500

#T7時間 (執(zhí)行成功)
update test_ser t set t.tname='m_500' where t.tid=500;

#T8時間 (ORA-08117) 因為tid=499 和 會話1 中update的tid=1 的block_id 一樣所以失敗
update test_ser t set t.tname='m_499' where t.tid=499;

#T9時間 
select tid,tname from test_ser where tid in(1,500);
    TID     TNAME
1   1       n_1
2   500     m_500

#T10 時間
commit;

#T11 時間
select tid,tname from test_ser where tid in(1,499,500);
    TID     TNAME
1   1       m_1
2   499     n_499
3   500     m_500

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容