本地应用通过Dblink查询,导致Weblogic的线程堵塞而垮掉

       最近一个星期,上线系统挂机了两次,弄得比较揪心。后来通过weblogic的服务器监控,经过线程运行情况的排查,发现在通过dblink,在查询另外一个数据库系统时,存在线程stuck的情况,经过网上查找,如下说明:DBLINK是远程连接到其他数据库进行访问,这个会涉及到一个事务的关系,尽管查询不会锁表,但是用DBLINK的方式一旦将远程的表进行锁住了。因而对于这部分无法及时提交的事务,导致weblogic的线程池存在堵塞的情况,最后导致weblogic整个服务因为事务的堵塞而垮掉。

       由于系统的框架问题这个事务不能自动去commit或rollback,进而产生大量的事务堆积。解决:后来通过调用存储过程,把查询数据插入到临时表,并关闭事务,然后通过查询临时表来返回记录。

 

 

你可能感兴趣的:(数据库)