ORA-02049: 超时: 分布式事务处理等待锁。
【问题思路】:
(1)首先我在数据库中刚查过数据(印刷流水号),sql为:
select visaserialno, businessno,visacode, visaname, usercode, visastatus, comcode from vsmark
where visacode like 'DAC051A32007A(山东)' and usercode='02110003' for update;
(2)然后在核心系统中输入查询的印刷流水号visaserialno,在核心系统中调用接口出现 ORA-02049: 超时: 分布式事务处理等待锁 的错误。
(3)我怀疑是因为上述sql只for update而没有提交事务(commit),数据库事务你没有commit或者rollback导致事务不能统一提交。导致把错误回传给客户端让其处理。因为核心系统用的数据库和我更改的数据库是一致的。
(4)然后我把本地数据库commit,再在核心系统中调用接口。成功。
【总结】:
该参数指定等待分布式锁资源的时间,超过这个时间事务自动回滚,即在等待未释放的资源超过一定的时间,系统自动报错给客户端,就会以ORA-02049: 超时: 分布式事务处理等待锁 的方式提错给你。该值默认为60,即等待分布式锁资源60秒。从上面的测试来看,使用dblink做分布式事务时一定要及时commit或rollback,尽量在分布式应用中使用短事务为宜。dblink 作用就是让数据库中的数据负载均衡,一般情况下数据量较大的数据都会用到。
现场报有一个功能走不下去,后台日志报错:java.sql.SQLException:
ORA
-01591:
锁
被未决
分布式事务
处理
657.7.39336持有。解决方案:
rollback
force ‘657.7.39336‘;--执行可能会比较慢执行完成后,查询DBA_2PC_PENDING,select*fromDBA_2PC_PENDINGswheres.local_tran...
今晚接到项目经理发来的数据库问题,报错为
ORA
-
02049
:
超时
:
分布式事务
处理
等待
锁
,第一时间感觉是维护的数据库的d
blink
问题,因为现在维护的这些数据库使用大量d
blink
,70%以上的查询都使用d
blink
,查看对于的存储过程发现,在循环
处理
后没有
commit
,导致该问题的出现。下面是在测试环境的模拟:连接第一个数据库,查看DISTRIBUTED_LOCK_TIMEOUT参数的值为60...
今晚接到项目经理发来的数据库问题,报错为
ORA
-
02049
:
超时
:
分布式事务
处理
等待
锁
,第一时间感觉是维护的数据库的d
blink
问题,因为现在维护的这些数据库使用大量d
blink
,70%以上的查询都使用d
blink
,查看对于...
最近在工作中遇到了一个问题,错误是
Ora
cle dbca时报错:
ORA
-12547: TNS:lost contact,通过查找相关的资料终于找到了解决的方法,下面分享给大家,话不多说了,来一起看看详细的介绍吧。
OS:RHEL6.5 x86-64bit
DB:11.2.0.4 for Linux 86-64bit
DBCA报错,首先看DBCA的日志,日志中也是报
ORA
-12547: TNS:lost contact
于是再sqlplus / as sysdba敲回车,也是报
ORA
-12547: TNS:lost contact,
基于之前的工程经验,先
公司服务器周末要加硬盘,周一来后应用连不上了。报错如下 报错:
ORA
-12170:TNS connect timeout occurred
第一反应是监听没开:
1. 测试了一下, 连接
超时
没用ping 通
C:\Users\Administrator>tnsping brorcl
TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 – Production on 15-6月 -2015 09:45:43
已使用的参数文件
ORA
-
02049
是一个
分布式事务
等待
超时
的错误,当一个session 持有一个行级
锁
,另一个
分布式事务
比如通过d
blink
也想修改相同行的数据,就会产生行
锁
队列
等待
,当
等待
时间超过了系统参数distributed_lock_timeout的值时,就产生了这个错误,任何通过通过D
BLINK
的操作都是分布式事物。
测试库1:
创建测试表并插入测试数据:
SQL> create table test(id number
一.系统环境:
ORA
CLE:9IR2OS:WINDOWS 2003 SERVER二.问题描述:现场人员报怨报表数据不准确,查明为韩国方面数据回传中断,联系韩国相关人员后,给我发了个他那边回传程式报的一个错:
ORA
-
02049
:timeout:distributed transaction waiting for lock.三.问题分析:找了下有关
ORA
-
02049
错误的简短说明如下:
ORA
-020...
S.USERNAME,
DECODE(L.TYPE, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL,
O.OWNER,
O.OBJECT_NAME,
O.OBJECT_TYPE,
S.SID,
S.SERIAL#,
S.TERMINAL,
S.MACHINE,
ORA
-
02049
:timeout:...
ORA
-02036:preceding...
原因
:远端的目标表独占
锁
,导致本地的连接一直在
等待
,导致连接
超时
报错。
还有一种情形就是当通过d
blink
更新视图报错
ORA
-02036的时候,可能是创建的d
blink
包含order by等子句,无法进行更新。
可更新的视图不得包含以下任何构造:set...
ORA
-
02049
‘timeout: distributed transaction waiting for lock’
ORA
-
02049
是一个
分布式事务
等待
超时
的异常,当一个session 持有一个行级
锁
,另一个
分布式事务
比如通过d
blink
也想修改相同行的数据,就会产生 tx队列
等待
,当
等待
时间超过了系统参数distributed_lock_timeout的值时,就产生了这个错误,任何通过通...
1.在通过远程方式连接上数据库后,首先对数据库主机的CPU/内存等硬件资源进行检查,未发现明显资源瓶颈。
2.在数据库实例中检查是否存在
锁
等问题,相关进程有enq: TM – contention表
锁
等待
,但是未发现对应的阻塞源头进程。
3.根据报错信息中的
分布式事务
超时
问题,查看数据库相关视图表,发现有110个状态为collecting的
分布式事务
,是是非正常状态的,之后进
原因
:使用D
BLINK
后,很容易出现一个问题:
ORA
-
02049
:
超时
:
分布式事务
处理
等待
锁
ORA
-02063:紧接着line(起自ODS_LINK)。
事物没有提交或回滚导致
锁
。
基本思路:找到lock的sid和SERIAL,杀掉
命令: ALTER SYSTEM KILL SESSION ‘SID,SERIAL#’;
查找sid相关命令:
SELECT S.USERNAME,
DECODE(L.TYPE, 'T