ORA-02049: 超时: 分布式事务处理等待锁诊断

正式环境有两个数据库A和B,在A库上建的dblink,业务是要将A库中的一些表,通过dblink更新到B库中去,更新的时候总是报错:ORA-02049: 超时: 分布式事务处理等待超时。

之前我写过一篇blog:ORA-02049: 超时: 分布式事务处理等待锁模拟,大致的意思是通过A更新B中的数据时,由于B库中的数据有锁,一直都不释放,导致通过A更新报错。

诊断如下:

在B库上执行,找到产生锁的会话

select s.owner, s.object_name, l.SID, l.TYPE, l.LMODE, l.REQUEST, l.BLOCK

from gv$lock l, dba_objects s

where l.ID1 = s.object_id

and s.object_name = ‘TEST‘;.

再找到有锁的会话信息,然后通过osuser,machine找到具体应用,停止应用后再进行测试就可以了。

select sid,username,schemaname,osuser,machine,program from gv$session where sid=1142;

时间: 2024-08-01 22:30:21

ORA-02049: 超时: 分布式事务处理等待锁诊断的相关文章

ORA-02049: 超时: 分布式事务处理等待锁

java.sql.SQLSyntaxErrorException: ORA-02049: 超时: 分布式事务处理等待锁 ORA-06512: 在 "HECDEV.BGT_JOURNAL_BALANCE_PKG", line 107 ORA-06512: 在 "HECDEV.BGT_JOURNAL_BALANCE_PKG", line 902 ORA-06512: 在 "HECDEV.BGT_JOURNAL_BALANCE_PKG", line 1

【ORA-02049】超时分布式事务处理等待锁 解决方法

(1)以sys用户登陆数据库查询死锁: SQL> select username,lockwait,status,machine,program from v$session where sid in (select session_id from v$locked_object); (2)然后使用一下语句查找被死锁的语句 SQL> select sql_text from v$sql where hash_value in (select sql_hash_value from v$sess

【转】错误: ORA-01591: 锁被未决分布式事务处理 7.2.428982 持有--解决方案

SQL 错误: ORA-01591: 锁被未决分布式事务处理 7.2.428982 持有 01591. 00000 -  "lock held by in-doubt distributed transaction %s" *Cause:    Trying to access resource that is locked by a dead two-phase commit transaction that is in prepared state. *Action:   DBA

ORA-01591: 锁被未决分布式事务处理解决方案

现场报有一个功能走不下去,后台日志报错:java.sql.SQLException: ORA-01591: 锁被未决分布式事务处理 657.7.39336 持有.    解决方案: rollback force '657.7.39336';--执行可能会比较慢 执行完成后,查询DBA_2PC_PENDING, select * from DBA_2PC_PENDING s  where s.local_tran_id='657.7.39336'; 657.7.39336 SP4GD.a6dfea

.NET简谈事务、分布式事务处理

在本人的 " .NET简谈事务本质论"一文中我们从整体上了解了事务模型,在我们脑子里能有一个全局的事务处理结构,消除对数据库事务的依赖理解,重新认识事务编程模型. 今天这篇文章我们将使用.NET C#来进行事务性编程,从浅显.简单的本地事务开始,也就是我们用的最多的ADO.NET事务处理,然后我们逐渐扩大事务处理范围,包括对分布式事务处理的使用,多线程事务处理的使用. 数据库事务处理 数据库事务处理我们基本都很熟悉了,begin Transaction --end Transactio

.NET分布式事务处理总结【下】 - 包含MSMQ的分布式事务处理

转自:http://www.cnblogs.com/daxnet/archive/2011/03/15/1984995.html .NET直接提供对MSMQ的访问支持,只需要添加System.Messaging程序集引用即可方便地操作MSMQ.MSMQ支持两种事务处理模式:内部事务处理以及基于MS-DTC的分布式事务处理. MSMQ的内部事务处理 MSMQ的内部事务处理是指,仅采用MSMQ本身提供的事务处理机制完成事务处理.比如,假设有一系列的消息需要发布到MSMQ,那么,就可以启动一个内部事务

分布式事务处理学习报告

1.什么是事务? 事务通俗说就是一个事情分为多个步骤完成: 比如: 2.事务的ACID四大属性: 原子性(Atomicity):意为:即一事务的操作要么全部执行,要么全部不执行.当事务非正常终止时,其中间结果将被取消. 一致性(Consistence):指的是保证数据在变化中只存在一个完整状态.比如修改一个人的信息(姓名,性别,年龄),在更新过程中发生错误,则所做的修改要么全没了,要么全保留. 隔离性(Isolation):一个未完成事务不能在提交前就把其中间结果提供给其它事务使用. 持久性(D

【JTA】JTA允许应用程序执行分布式事务处理

JTA,即Java Transaction API,JTA允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据.JDBC驱动程序的JTA支持极大地增强了数据访问能力. http://baike.baidu.com/link?url=SNKjFH-_gd0t4CYnCC_h-yHP9DvgQS6urhSe8ewwAUBm7yfjfR-7f7CM0Aha9WFP1-1YaRmN_lwOuJhrwl5mBa

sqlite3 事务、调整页面缓存、等待锁、代码

事务 一.事务生命周期 何时开始?何时结束? 在任何时候,只在一个事务下执行一个连接. 何时开始影响其他连接? 自动提交模式下,每发一个命令就运行一个单独的事务:发出begin命令时,直到COMMIT或rollback,为一个事务. 二.锁状态 UNLOCK.PENDING.SHARED.RESERVED都可在同一时间同一数据库的不同连接中存在. EXCLUSIVE:排他锁 锁到事务结束或系统崩溃时,才会释放. 三.读事务 以两次select操作为例. 显示事务只锁定一次,且能确认两次查询结果一