2009-11-26 161 views
1

我正在用Oracle数据库构建J2EE Web应用程序。应用程序服务器使用JDBC连接池到Oracle数据库A(例如,最多20个连接),并且通过数据库链接执行的一些查询使用远程Oracle数据库B中的表。Oracle JDBC连接池与数据库链接

如果App Server创建了20个连接到数据库A,并且所有查询都在数据库B中查找数据,那么数据库A是否会创建20个到数据库B的连接?或者所有查询都通过相同的连接隧道?

回答

2

本地和远程数据库会话之间存在一对一的关系。 必须针对以下情况: 本地DB上的会话A1运行INSERT INTO table @ B VALUES('A1'); 该插入是会话A1的事务的一部分。

会话A2出现并执行SELECT * FROM table @ B。 由于会话A1尚未提交,因此会话A2不应该看到该行。因此它需要一个与属于A1的远程会话不同的远程会话。

同样你可以有同时在数据库B

有这将断开远程连接DBMS_SESSION.CLOSE_DATABASE_LINK程序对数据库中的运行查询的所有20次。当它拒绝关闭它们,甚至在提交后立即声称'未完成的事务'时,我在那个(9i数据库)中遇到了一些问题。它似乎与缓存的PL/SQL游标有关。它可能不再是一个问题。