繁体   English   中英

oracle jdbc驱动版本疯狂

[英]oracle jdbc driver version madness

为什么 Oracle 为每个(!)数据库版本提供不同(!)版本的 JDBC 驱动程序,例如 ojdbc14.jar?
这些文件都有不同的大小,因此可能有不同的内容。

背景:
保存数据时,我们会收到一个随机且看似不可重现的错误,即“无效数字”(我们猜测它是时间戳)。 但这不是任何特定的陈述。 大多数时候,它保存得很好。 一个月一次,看似无害的声明就会失败。

所以我仔细查看了 Oracle 的下载站点,发现尽管文件共享相同的名称,但没有一个文件大小匹配。

我们的产品在客户维护的数据库上运行,即客户运行的任何版本和补丁都是如此。
那么我们使用什么驱动呢? 最新的(Oracle 11g)——尽管它通常是 9i 和 10g 数据库?

他们为什么不将所有版本链接到同一个“一个驱动程序适合所有人”文件?
或者是否存在细微的差异会导致我们的随机错误等影响?

编辑:我误解了 9i 数据库。

请参阅https://docs.oracle.com/en/database/oracle/oracle-database/19/jjdbc/JDBC-getting-started.html#GUID-926E5324-D89A-4A00-B1AE-975C1089F0EA上的兼容性矩阵

另请注意,时间戳数据类型仅在 Oracle 10 之后才可用。

ojdbc14.jar、ojdbc5.jar、ojdbc6.jar、ojdbc7.jar 和 ojdbc8.jar 中的数字指的是使用的 Java 编译器的版本。 每个版本的 Java 都带有新的 JDBC API,因此这些数字对于了解预期内容很有用。 例如,在 Java 8 中, java.sql.PreparedStatement中有一个新方法executeLargeUpdate 此方法将在 ojdbc8.jar 中实现,但不在 ojdbc7.jar 中实现。 此外,如果您的运行时使用 Java 7,那么您知道您不能使用 ojdbc8.jar,否则您将遇到java.lang.UnsupportedClassVersionError错误。 这就是 Oracle 在 jar 名称中包含这些数字的原因。 另请注意,如果您想知道 jar 来自哪个 Oracle 数据库版本,您可以运行java -jar ojdbc8.jar 数据库和驱动程序都向后兼容(最多 1 个主要版本),因此,即使建议这样做,您也不必在两个层上使用相同版本的产品。

当我们将 Oracle 数据库从 8.1.7 升级到 10.2.0 时,我能够使用相同的 Oracle jdbc 驱动程序 (ojdbc14.jar)。 所以他们的jdbc驱动同时支持好几个版本。 当然,有些驱动程序可能有问题,但计划是同时支持更多版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM