oracle jdbc driver version madness

2022-09-02 09:22:20

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

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

因此,我仔细查看了Oracle的下载站点,并注意到尽管文件共享相同的名称,但没有一个文件大小匹配。

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

他们为什么不将所有版本链接到同一个“一个驱动程序适合所有人”文件?
还是有微小的差异导致像我们的随机错误这样的影响?

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


答案 1

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

还要记住,时间戳数据类型仅在 Oracle 10 之后可用。


答案 2

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


推荐