---
title: "Oracle 模式的事务隔离级别 - OceanBase 数据库 V4.6.0 | OceanBase 文档中心"
description: Oracle 模式的事务隔离级别 Oracle 模式支持的隔离级别 OceanBase 数据库在 Oracle 模式下，支持以下隔离级别： 读已提交（Read Committed）：一个事务执行的查询，只能看到这次查询开始之前提交的数据。读已提交无法防止不可重复读和幻读两种异常情况。 可串行化（Serializabl…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.6.0

# Oracle 模式的事务隔离级别

更新时间：2026-07-15 15:27:38

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.6.0/zh-CN/700.reference/100.oceanbase-database-concepts/800.transaction-management/200.transaction-concurrency-and-consistency/400.transaction-isolation-level/200.transaction-isolation-level-of-oracle-mode.md)  

## Oracle 模式支持的隔离级别

OceanBase 数据库在 Oracle 模式下，支持以下隔离级别：

- 读已提交（Read Committed）：一个事务执行的查询，只能看到这次查询开始之前提交的数据。读已提交无法防止不可重复读和幻读两种异常情况。
 - 可串行化（Serializable）：一个事务的查询，只能看到事务开始之前提交的数据。这是最严格的隔离级别，可以防止脏读、不可重复读和幻读三种异常情况，事务看起来就像是串行执行的。

OceanBase 数据库默认的隔离级别为**读已提交（Read Committed）**。

## 隔离级别行为对比

Oracle 数据库支持**读已提交**和**可串行化**隔离级别，OceanBase 数据库的 Oracle 模式在这两种隔离级别下的行为与 Oracle 数据库的行为一致。

## 隔离级别设置方法

设置隔离级别有两种方式，分别为事务级别（Transaction level）和会话级别（Session level）。

- 事务级别

  ```sql
  SET TRANSACTION ISOLATION LEVEL [READ COMMITTED | SERIALIZABLE];

  ```

  该语句会开启一个新事务，并设置此事务的隔离级别。
 - 会话级别

  ```sql
  ALTER SESSION SET ISOLATION_LEVEL = [READ COMMITTED | SERIALIZABLE];

  ```

## 隔离级别使用限制

- 不允许在事务执行过程中设置隔离级别，否则会报如下错误：

  ```javascript
  ERROR:OBE-01453: SET TRANSACTION must be first statement of transaction

  ```
 - 在开启可串行化隔离级别时需要确保全局时钟服务（Global Timestamp Service）是打开的。
 - Session 需要维护 session 级别的事务隔离级别，在开启事务时获取 session 级别的事务隔离级别，该隔离级别可以被事务级别的隔离级别覆盖。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
