ORA-01591 锁定已被有问题的分配事务处理

来源:互联网 发布:厨房布局知乎 编辑:程序博客网 时间:2024/05/06 17:54
 

最近,在webogic中使用两阶段提交事务,遇到了错误java.sql.SQLException: ORA-01591: 锁定已被有问题的分配事务处理8.47.144854挂起
注意:8.47.144854是事务编号

在网上找到一个比较详细解释http://www.chinageren.com/jc/HTML/120874.html

可在oracle提供的Administrator’s Guide文档中查找ORA-01591,获得相关的错误信息
英文原文:
ORA-01591: lock held by in-doubt distributed transaction identifier
我觉得中文翻译不对:锁已被有问题的分布式事务持有
意译应该是:有问题的事务持有该资源(就是你想要查询的资源)的锁,比如一些两阶段事务提交(Two-Phase Commit),出现的问题,都会出现这些问题

下面是删除该锁的示例代码

1.现在DBA_2PC_PENDING表中找到出错的事务,注意STATE字段的信息

SQL> select * from DBA_2PC_PENDING;

LOCAL_TRAN_ID   GLOBAL_TRAN_ID               STATE         MIXED ADVICE TRAN_COMMENT FAIL_TIME   FORCE_TIME RETRY_TIME OS_USER         OS_TERMINAL HOST       DB_USER COMMIT#
-------------- ---------------------------- -------------- ----- ------ ------------- ----------- ----------- ----------- --------------- ------------ ---------- -------- -----------
8.47.144854     48801.00BEA9B42C3DFE95E711   prepared       no                         2007-4-5 下             2007-4-5 下 Administrator   unknown      wangjian            164812088

2.提交前面发生错误的事务

SQL> COMMIT FORCE "8.47.144854";

Commit complete

3.再查看DBA_2PC_PENDING表,注意STATE字段的信息

SQL> select * from DBA_2PC_PENDING;

LOCAL_TRAN_ID GLOBAL_TRAN_ID               STATE          MIXED ADVICE TRAN_COMMENT FAIL_TIME   FORCE_TIME RETRY_TIME OS_USER         OS_TERMINAL HOST       DB_USER COMMIT#
-------------- ---------------------------- -------------- ----- ------ ------------- ----------- ----------- ----------- --------------- ------------ ---------- -------- -----------
8.47.144854    48801.00BEA9B42C3DFE95E711   forced commit no                         2007-4-5 下 2007-4-5 下 2007-4-5 下 Administrator   unknown      wangjian     

原创粉丝点击