首批通过分布式安全可靠测评,为关键业务系统打造
事务空闲超时,错误代码 ORA-24761
更新时间:2026-07-15 22:01:30
本文介绍 OceanBase 数据库 Oracle 模式下事务空闲超时后报 ORA-24761 错误的处理方法。
问题现象
开启事务后,等待较长一段时间,执行查询表数据时报错。
obclient [SYS]> SELECT * FROM ordr;
+----+------+-------+------------------------------+
| ID | NAME | VALUE | GMT_CREATE |
+----+------+-------+------------------------------+
| 1 | CN | NULL | 04-NOV-22 06.06.16.843024 PM |
| 2 | UK | NULL | 04-NOV-22 06.06.16.843024 PM |
| 3 | US | NULL | 04-NOV-22 06.06.16.843024 PM |
+----+------+-------+------------------------------+
3 rows in set
obclient [SYS]> UPDATE ordr SET value=1003 WHERE id=3;
Query OK, 1 rows affected
Rows matched: 1 Changed: 1 Warnings: 0
/* 等待较长一段时间不操作*/
obclient [SYS]> SELECT * FROM ordr;
ORA-24761: transaction rolled back: transaction idle timeout
该报错信息对应的错误码信息如下:
错误码:ORA-24761
OceanBase 错误码:6211
SQLSTATE:25000
关于错误码的详细说明及介绍,请参见 错误码概述。
可能原因
事务空闲超时表示事务内两条语句的执行间隔超过了指定的阈值。当事务空闲时间超过了指定的阈值时,如果继续执行数据库操作,系统就会报错。事务空闲超时由租户变量 ob_trx_idle_timeout 控制,默认值为 86400000000 微秒,即 24 小时。
说明
OceanBase 数据库为了避免事务长时间不提交持有锁影响其他会话,设计了两个超时逻辑:事务空闲超时和事务未提交超时。通常只会有一个超时机制会先被触发。
解决方法
请参考以下步骤,查看并修改租户变量,再通过 ROLLBACK 回滚事务后,继续操作。
查看变量
ob_trx_idle_timeout的值,确认操作的超时时间是否超过了设置的值。事务空闲超时时间阈值由租户变量
ob_trx_idle_timeout控制,单位为微秒,建议使用默认值 24 小时(86400000000 微秒)。
说明
以下设置变量的方法仅对当前会话有效,如果需要保证设置永久生效,请使用 SET GLOBAL 语法配置相同变量后,再重启会话使其生效。
obclient [SYS]> SHOW VARIABLES LIKE 'ob_trx_idle_timeout';
+---------------------+-----------+
| VARIABLE_NAME | VALUE |
+---------------------+-----------+
| ob_trx_idle_timeout | 120000000 |
+---------------------+-----------+
1 row in set
obclient [SYS]> SET SESSION ob_trx_idle_timeout=86400000000;
Query OK, 0 rows affected
使用
ROLLBACK回滚事务。obclient [SYS]> ROLLBACK; Query OK, 0 rows affected再次查询表数据。
obclient [SYS]> SELECT * FROM ordr; +----+------+-------+------------------------------+ | ID | NAME | VALUE | GMT_CREATE | +----+------+-------+------------------------------+ | 1 | CN | NULL | 04-NOV-22 06.06.16.843024 PM | | 2 | UK | NULL | 04-NOV-22 06.06.16.843024 PM | | 3 | US | NULL | 04-NOV-22 06.06.16.843024 PM | +----+------+-------+------------------------------+ 3 rows in set