oracle jdbc驱动程序版疯狂

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

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

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

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

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

编辑:我错了9i数据库。

请参阅http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#02_02上的兼容性矩阵

另请注意,timestamp数据类型仅在Oracle 10之后可用。

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

我在这里有类似的问题https://stackoverflow.com/users/1017344/user1017344

它似乎是JDBC驱动程序本身内部的无效操作

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个主要版本),因此,即使建议使用,也不必在两个层上使用相同版本的产品。