在设置了Oracle的隔离级别后,那么我们在运行的过程中,如何得知当前的隔离级别呢?
下面我show一个简单的方法(该方法在9.2.0.6上测试通过)
SQL> desc toms_test; 名称 是否为空? 类型 ------------------------- -------- --------------- NO NUMBER(38)
SQL> select * from toms_test;
NO ---------- 200
SQL> select decode(Bitand(Flag,268435456),268435456,'Serializable','Non-Serializable') 2 From V$Transaction, V$Session 3 Where Taddr=Addr and 4 Sid=(select toms_dbms.mysid from dual);
未选定行
SQL> update toms_test set no=100;
已更新 1 行。
SQL> select decode(Bitand(Flag,268435456),268435456,'Serializable','Non-Serializable') 2 From V$Transaction, V$Session 3 Where Taddr=Addr and 4 Sid=(select toms_dbms.mysid from dual);
DECODE(BITAND(FLAG,268435456), -------------------------------- Non-Serializable
SQL> rollback;
回退已完成。
SQL> set transaction isolation level serializable;
事务处理集。
SQL> update toms_test set no=100;
已更新 1 行。
SQL> select decode(Bitand(Flag,268435456),268435456,'Serializable','Non-Serializable') 2 From V$Transaction, V$Session 3 Where Taddr=Addr and 4 Sid=(select toms_dbms.mysid from dual);
DECODE(BITAND(FLAG,268435456), -------------------------------- Serializable
SQL>
|