日期:2014-05-17  浏览次数:21283 次

关于dblink中的lock问题
遇到一个问题一直解决不了,希望高人救命啊。
在一个程序中连续更新了10个表,分别为表A,B......J,因为用的是同一个conn,所以并没有commit,在更新第11个表的时候发生了lock,就是一直在等直到timeout(经过了几个小时),   其中更新第11个表的sql是   update   K   set   (.....)   =   (select   ....   from   A   where   ....)   where.....,是这种结构,需要说明的是,这里面用到了dblink,表K就是dblink的表。为什么会出现这种情况呢?

补充说明   还是这个程序,不用dblink,也就是说有的表都是位于本地的oracle上,就没有任何问题.....

在线等......

------解决方案--------------------
和dblink应该没有关系,查查K表的锁等待是谁引起的
------解决方案--------------------
有类似的问题:现在发现dx锁 ,每次抓到的sql都是 select count(*) from A where f!=1,也是用dblink。 小木, "刚才在网上看到一个说法,是使用dblink的时候,即使是select文也要进行commit,或者是rollback,如果不那样做的话,时间长了会阻碍其他进程。
是这样吗?为什么? " 请问你在那里看到这个的?
------解决方案--------------------
是不是每次执行到第11个update都会锁?可以查下原因,更新表K的时候如果不是用A表去做子查询而是用张本地的表看下会不会锁?