首批通过分布式安全可靠测评,为关键业务系统打造
Oracle 租户下报错 ORA-02051: another session or branch in same transaction failed or finalized 的原因
更新时间:2024-01-22 01:56
问题描述
在使用分布式事务时,应用收到 ORA-02501 异常,异常信息如下。
ORA-02051: another session or branch in same transaction failed or finalized
影响版本
OceanBase 数据库 V2.2.77 和 V3.x 版本。
问题原因
出现该问题的原因是 XA 事务的某个分支执行异常导致。
解决方法
- 拿到异常时的 observer.log 日志,使用 "-6264" 关键字过滤日志,找到异常日志的
trace_id以及线程 ID。 - 用
trace_id和线程 ID 再次过滤日志,找到关键字trans_id,trans_id中包含 addr,表示该 XA 事务的管理节点。然后,进入到该 XA 事务管理节点的日志文件中,通过trans_id中的hash值再次进行过滤,可以进一步确认该 XA 事务回滚的原因。比如可能会看到-6213、-6005等异常,从而确认异常原因和导致异常的 SQL 语句。