首批通过分布式安全可靠测评,为关键业务系统打造
Oracle 模式的事务隔离级别
更新时间:2026-04-06 17:08:04
Oracle 模式支持的隔离级别
OceanBase 数据库在 Oracle 模式下,支持以下隔离级别:
读已提交(Read Committed):一个事务执行的查询,只能看到这次查询开始之前提交的数据。读已提交无法防止不可重复读和幻读两种异常情况。
可串行化(Serializable):一个事务的查询,只能看到事务开始之前提交的数据。这是最严格的隔离级别,可以防止脏读、不可重复读和幻读三种异常情况,事务看起来就像是串行执行的。
OceanBase 数据库默认的隔离级别为读已提交(Read Committed)。
隔离级别行为对比
Oracle 数据库支持读已提交和可串行化隔离级别,OceanBase 数据库的 Oracle 模式在这两种隔离级别下的行为与 Oracle 数据库的行为一致。
隔离级别设置方法
设置隔离级别有两种方式,分别为事务级别(Transaction level)和会话级别(Session level)。
事务级别
SET TRANSACTION ISOLATION LEVEL [READ COMMITTED | SERIALIZABLE];该语句会开启一个新事务,并设置此事务的隔离级别。
会话级别
ALTER SESSION SET ISOLATION_LEVEL = [READ COMMITTED | SERIALIZABLE];
隔离级别使用限制
不允许在事务执行过程中设置隔离级别,否则会报如下错误:
ERROR:OBE-01453: SET TRANSACTION must be first statement of transaction在开启可串行化隔离级别时需要确保全局时钟服务(Global Timestamp Service)是打开的。
Session 需要维护 session 级别的事务隔离级别,在开启事务时获取 session 级别的事务隔离级别,该隔离级别可以被事务级别的隔离级别覆盖。