使用 JDBC 连接位于同一服务器上不同数据库中的 2 个 Oracle 表中的数据

Posted

技术标签:

【中文标题】使用 JDBC 连接位于同一服务器上不同数据库中的 2 个 Oracle 表中的数据【英文标题】:Join data from 2 Oracle tables located in different database on the same server using JDBC 【发布时间】:2013-09-19 13:50:15 【问题描述】:

我在一个 Oracle 数据库中有一个简单的表,需要与另一个 Oracle 数据库中的一组表连接。它们驻留在同一台服务器上(不同的端口)。我正在使用 JDBC 并希望保持简单。我可以连接到两个数据库并加入 Java 中的结果集。但我想知道是否有更好/更简单的方法。

由于我在僵化的公司环境中工作,我无法轻松使用新工具或框架,所以想知道是否可以仅使用 JDBC 来完成。

【问题讨论】:

您是否尝试过查看 Oracle 中的远程链接。这使您能够从不同的数据库中查询 2 个表并在它们上应用所有 SQL。 【参考方案1】:

据我所知,无法在纯 JDBC 中执行此操作,但您可以使用 oracle 数据库链接工具。它使一个数据库中的表在另一个数据库中可用,允许您执行连接等,就好像它们在同一个数据库中一样。 JDBC 可以很好地处理受这些链接约束的表。

设置它们是一项管理功能,因此您需要一些 DBA 参与。

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5005.htm

除此之外,如果“一个”表不太大,您可能必须将其读取到 Map 中,然后在代码中执行查询的连接部分(这并不理想)

【讨论】:

【参考方案2】:

我看到了两个选项。

    手动从两个数据源获取数据,然后将其合并(您已经考虑过)。 创建一个从一个数据库到另一个数据库的 db 链接,并在您的架构中为远程对象创建一个同义词,并使用来自 java 的连接直接执行 sql 语句。

【讨论】:

以上是关于使用 JDBC 连接位于同一服务器上不同数据库中的 2 个 Oracle 表中的数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel Eloquent 连接同一服务器上不同数据库中的两个 MySQL 表

Cassandra 多个节点位于同一服务器上的不同数据中心

是否可以使用 LINQ 跨不同数据库执行连接?

在tomcat上部署项目时,JDBC数据源无法正常工作

JDBC连接池性能对比

同一应用程序中的 JPA/Eclipselink 和 JDBC 连接