【问题标题】:Why isn't querying a JDBC-compliant database from Oracle as easy as pie?为什么从 Oracle 查询符合 JDBC 的数据库不像馅饼那么容易?
【发布时间】:2010-09-16 22:56:33
【问题描述】:

好的,所以它几乎已经像馅饼一样简单了。但它真的应该比它更容易。

我想我应该能够通过将 JDBC 连接字符串放入 TNSNAMES 来连接到另一个数据库。每个数据库供应商都有一个 type-4 JDBC 驱动程序,而且通常有一个很好的免费替代方案。

由于 Oracle 如此热衷于 Java 粉丝,并且在数据库中内置了 JVM,我原以为基于 JDBC 的链接技术会是一件轻而易举的事。在 TNSNAMES 中有一个 JDBC 连接字符串似乎是一个自然的扩展,并且一切都会“正常工作”——你可以对任何东西使用“sql*plus”。

但它不是这样工作的。如果你想连接到另一个非 Oracle 数据库,你必须购买一个叫做 Oracle Gateways 的东西或者使用 ODBC(通过一个叫做 Generic Connectivity 的东西)。

[原创警告...这与我的previous question 有关,但有人建议我输入补充评论作为单独的问题。我该和谁争论?]

【问题讨论】:

  • 数据库中有一个 JVM,其他每个数据库都有 JDBC 驱动程序——它应该“正常工作”,所以我只能假设它没有被“正常工作”是有原因的。我的问题是是否有人知道这个原因。有人吗?
  • 我不明白为什么这个问题被否决了。想我已经错过了心情。 :-)

标签: java oracle jdbc


【解决方案1】:

答案与下列问题相同:

  1. 为什么 Oracle 不提供将数据卸载为非专有格式(例如逗号分隔或 XML)的有效方法
  2. 为什么大多数 Oracle 非 DB 产品只能与 Oracle RDBMS 一起使用? (无需使用 Oracle 数据库网关)

你听说过Vendor lock-in这个概念吗?

【讨论】:

  • 感谢安德鲁的回答。我同意你关于供应商锁定的观点,但这不是相反的情况吗?我说的是从任何地方向 Oracle 提取数据。让外部可用数据尽可能可访问当然符合 Oracle 的利益。
  • Oracle 可能会回复您:您应该将任何其他数据库迁移到 Oracle(例如 Oracle Migration Workbench),然后对于在线分布式查询使用 DB 链接或通过平面文件导入数据...
【解决方案2】:

我当然认为这个问题有点修辞,并且需要大量盐分。 :-)

本着这种精神,一个适当轻率的答案可能是“因为他们不希望你使用其他人的数据库”?

【讨论】:

    【解决方案3】:

    这是一个真实的问题 - 可能有点开玩笑,但肯定不是修辞。让访问其他人的数据变得非常容易完全符合 Oracle 的利益。目前有很多方法可以做到这一点,但没有一个足够简单。数据库中有一个 JVM,其他每个数据库都有 JDBC 驱动程序——它应该“正常工作”,所以我只能假设它没有被“正常工作”是有原因的。

    我的问题是是否有人知道这个原因。有人吗?

    【讨论】:

      【解决方案4】:

      TNS 有点乱,恕我直言。根据我(诚然有限的)经验,它在不同平台之间的行为似乎不一致。

      我要为 Oracle 辩护,但我对 JDBC 瘦驱动程序没有任何问题。 (如果您阅读 oracle jdbc 文档,除非您有充分的理由,否则它们会阻止您使用 oci。

      将它与 JNDI 配对(在 j2ee 应用服务器上),您的所有连接管理问题都会得到解决。

      【讨论】:

      • 在应用程序中使用 JDBC 真的很容易 - 我同意。我可以编写一个 Java 存储过程,将数据直接从 MS SQL Server 提取到 Oracle - 没问题。但是如果 TNSNAMES 是 JDBC 友好的,我可以设置一个数据库链接并在标准 SQL 中提取数据。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      相关资源
      最近更新 更多