Oracle JDBC连接池与数据库链接

时间:2009-11-26 04:51:01

标签: database oracle jdbc

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

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

1 个答案:

答案 0 :(得分:2)

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

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

同样,您可以在数据库A上同时运行查询的所有20个会话。

有一个DBMS_SESSION.CLOSE_DATABASE_LINK过程会断开远程连接。我有一些问题(9i数据库),当它拒绝关闭他们甚至在提交后立即声称“未完成的交易”。它似乎与缓存的PL / SQL游标有关。它可能不再是一个问题。