今晚接到项目经理发来的数据库问题,报错为ORA-02049: 超时: 分布式事务处理等待锁,第一时间感觉是维护的数据库的dblink问题,因为现在维护的这些数据库使用大量dblink,70%以上的查询都使用dblink,查看对于的存储过程发现,在循环处理后没有commit,导致该问题的出现。
下面是在测试环境的模拟:
连接第一个数据库,查看DISTRIBUTED_LOCK_TIMEOUT参数的值为60,创建测试表,并产生一个事务,不提交
SQL> show parameter DISTRIBUTED_LOCK_TIMEOUT
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
distributed_lock_timeout integer 60
SQL> create table t_herman
2 (id number(10),
3 name varchar(20));
Table created.
SQL> insert into t_herman values(0,'test');
1 row created.
SQL> commit;
Commit complete.
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,&