带有数据库链接的 Oracle JDBC 连接池

Posted

技术标签:

【中文标题】带有数据库链接的 Oracle JDBC 连接池【英文标题】:Oracle JDBC connection pooling with database link 【发布时间】:2009-11-26 04:51:00 【问题描述】:

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

如果应用服务器创建了 20 个到数据库 A 的连接,并且所有查询都在数据库 B 中查找数据,那么数据库 A 会创建 20 个到数据库 B 的连接吗?还是所有查询都通过同一个连接隧道?

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

以上是关于带有数据库链接的 Oracle JDBC 连接池的主要内容,如果未能解决你的问题,请参考以下文章

JDBC链接oracle数据库

java怎么连接oracle数据库

求救:jdbc_odbc链接oracle数据库失败,代码如下,运行后,显示:常连接到数据库。 但没有抓到资料。

带有查询的链接表在列名中包含“/”

jdbc连接Oracle数据库

Idea-JDBC连接Oracle的方法