在设置了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>
阅读(2866) | 评论(0) | 转发(0) |