【数据库】Oracle数据库查看事务隔离级别

  • Post author:
  • Post category:其他


查看Oracle数据库事务的隔离级别。

--Oracle 查看事务隔离级别
SELECT * From dual for update;

SELECT s.sid, s.serial#,
case bitand(t.flag, POWER(2, 28))
  WHEN 0 THEN 'READ COMMITTED'
  ELSE 'SERIALIZABLE'
END AS isolation_level
FROM v$transaction t
JOIN v$session s ON t.addr = s.taddr AND s.sid = sys_context('USERENV', 'SID');

-- READ COMMITED 表示在事务中进行的任何数据更改, 在提交之前对其他事务不可见。

SID  SERIAL#  ISOLATION_LEVEL
613  32895    READ COMMITTED



可以防止脏读,但是不能解决不可重复读和幻读问题。


不可重复读

不可重复读 是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。


幻读

幻觉读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。



版权声明:本文为zhuwenchao90原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。