关于“ORA-02049: 超时: 分布式事务处理等待锁”的原因和解决办法

来源:互联网 发布:winzip 软件下载 编辑:程序博客网 时间:2024/05/16 05:40

【问题】:

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 作用就是让数据库中的数据负载均衡,一般情况下数据量较大的数据都会用到。
阅读全文
0 0
原创粉丝点击