19

なぜオラクルは (!) データベースのバージョンごとに異なる (!) バージョンの JDBC ドライバー (ojdbc14.jar など) を提供するのでしょうか?
ファイルのサイズはすべて異なるため、おそらく内容が異なります。

背景:
データを保存するときに、「無効な番号」というランダムで一見再現不可能なエラーが発生します (タイムスタンプだと思います)。しかし、それは特定の声明ではありません。ほとんどの場合、問題なく保存されます。月に 1 回だけ、無害に見えるステートメントが失敗します。

そのため、Oracle のダウンロード サイトを詳しく調べたところ、同じ名前のファイルがあるにもかかわらず、一致するファイル サイズがないことに気付きました。

当社の製品は、クライアントが管理するデータベース上で実行されます。つまり、クライアントが実行しているバージョンとパッチが何であれ、それはそのままです。
では、どのドライバーを使用しますか? 最新 (Oracle 11g) - 通常は9i および10g データベースであるという事実にもかかわらず?

すべてのバージョンを同じ「1 つのドライバーがすべてに適した」ファイルにリンクしないのはなぜですか?
それとも、ランダムエラーのような影響につながるわずかな違いがありますか?

編集: 9i データベースについて誤解していました。

4

3 に答える 3

23

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#02_02で互換性マトリックスを参照して ください。

また、タイムスタンプ データ型は Oracle 10 以降でのみ使用できることにも注意してください。

于 2009-04-16T13:56:56.037 に答える
11

ojdbc14.jar、ojdbc5.jar、ojdbc6.jar、ojdbc7.jar、および ojdbc8.jar の数字は、使用された Java コンパイラのバージョンを示しています。Java のすべてのバージョンには新しい JDBC API が付属しているため、これらの数値は予想される内容を知るのに役立ちます。たとえば Java 8 では、 に新しいメソッドexecuteLargeUpdateがありjava.sql.PreparedStatementます。このメソッドは ojdbc8.jar に実装されますが、ojdbc7.jar には実装されません。また、ランタイムが Java 7 を使用している場合、ojdbc8.jar を使用できないことがわかります。そうしないと、java.lang.UnsupportedClassVersionErrorエラーが発生します。これらが、Oracle がこれらの番号を jar の名前に含める理由です。また、jarがどのOracle Databaseリリースからのものかを知りたい場合は、実行できることに注意してくださいjava -jar ojdbc8.jar. データベースとドライバーの両方に下位互換性 (最大 1 つのメジャー リリース) があるため、推奨されていますが、両方の層で同じバージョンの製品を使用する必要はありません。

于 2018-02-15T13:01:12.233 に答える
3

Oracleデータベースを8.1.7から10.2.0にアップグレードしたとき、同じOracle jdbcドライバー(ojdbc14.jar)を使用できました。したがって、彼らのjdbcドライバーは、同時にかなりの数のバージョンをサポートします。もちろん、一部のドライバーにバグがある可能性もありますが、同時により多くのバージョンをサポートする予定です。

于 2009-04-16T17:08:51.883 に答える