---
title: 事务未提交时 OceanBase Oracle 与原生 Oracle 的 exit 行为差异-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于事务未提交时 OceanBase Oracle 与原生 Oracle 的 exit 行为差异相关的常见问题和使用技巧，帮助您快速解决事务未提交时 OceanBase Oracle 与原生 Oracle 的 exit 行为差异的难题。
---
切换语言

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

划线反馈

# 事务未提交时 OceanBase Oracle 与原生 Oracle 的 exit 行为差异

更新时间：2026-06-10 09:51

适用版本： V2.1.x、V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x 内容类型：TechNote  

在使用 SQLPlus 连接 Oracle 数据库时，autocommit 设置为 OFF 且事务未提交时，通过 exit 命令正常退出会提交当前事务。然而，当使用 obclient 连接 OceanBase 的 Oracle 租户时，在相同条件下，exit 命令会回滚当前事务。这一差异表现出 OceanBase 的 Oracle 租户与原生 Oracle 数据库在事务处理上的不兼容性。

## 不同数据库中 exit 命令的行为

- 原生 Oracle 数据库的行为

  当使用 SQLPlus 连接到 Oracle 数据库时，如果 autocommit 设置为 OFF，并且存在活跃的事务，执行 exit 命令时，驱动程序会自动向 Oracle 发送一次 COMMIT 命令以提交当前事务。 在接收到 COMMIT 的响应后，驱动程序会再执行 QUIT 命令关闭连接。即使在 COMMIT 执行过程中出现任何异常，驱动程序也会吞掉异常，并不会抛出给用户。因此，原生 Oracle 数据库下的 exit 命令会导致当前事务的提交。
 - OceanBase Oracle 租户的行为

  OceanBase 的 Oracle 租户是基于 OB MySQL 租户扩展而来的。在 obclient 中执行 exit 命令时，若 autocommit 设置为 OFF，当前活跃的事务会被回滚。 这与 MySQL 的行为一致，在 MySQL 中，如果 autocommit 为 OFF，任何活跃的会话在退出时均会导致相关事务的回滚。

## 行为表现差异的原因

原生 Oracle：驱动会主动提交活跃事务，以确保数据一致性。在执行 exit 命令时，会自动发送 COMMIT，之后才能关闭连接。

OceanBase 的 Oracle 租户：因继承 OceanBase MySQL 的事务管理特性，当 autocommit 为 OFF 时，执行 exit 时会回滚未提交的事务，从而导致与原生 Oracle 的行为不一致。

## 适用版本

OceanBase 数据库 V2.x、V3.x、V4.x 版本。 obclient V2.2.1 及之前所有版本。

上一篇

[OceanBase 数据库 V3.x 集群的 DML 语句在事务超时后，SQL 语句无法正常停止，执行 kill session 后状态变为 session_killed 但依然无法停止](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002842309)

下一篇

[ob_admin 删除表锁](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003564247) ![有帮助](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) 咨询热线
