ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

Oracle JDBC ドライバのバージョンを管理する

手元にあるOracle JDBC ドライバのバージョンはどうやって調べるのか?

Oracle Database JDBC開発者ガイド(12.1)に記載があります。

JDBCドライバのバージョンを確認するには、次のサンプル・コードのように、OracleDatabaseMetaDataクラスのgetDriverVersionメソッドをコールします。

import java.sql.*;
import oracle.jdbc.*;
import oracle.jdbc.pool.OracleDataSource;

class JDBCVersion
{
  public static void main (String args[]) throws SQLException
  {
  OracleDataSource ods = new OracleDataSource();
  ods.setURL("jdbc:oracle:thin:HR/hr@<host>:<port>:<service>");
  Connection conn = ods.getConnection();

  // Create Oracle DatabaseMetaData object
  DatabaseMetaData meta = conn.getMetaData();

  // gets driver info:
  System.out.println("JDBC driver version is " + meta.getDriverVersion());
  }
}

次のコマンドを実行すると、JDBCドライバのバージョンを確認できます。

  • java -jar ojdbc6.jar
  • java -jar ojdbc7.jar
スタート・ガイド

JDBC ドライバのバージョンを調べるだけであれば、コマンド実行のほうが使いやすいと思います。

OTNサイトの Oracle JDBC ドライバのバージョンはどうやって調べるのか?

現時点でOTN (Oracle Technology Network)の Oracle JDBC ドライバダウンロードページは以下の記載となっています。

Oracle Database 12c Release 1 (12.1.0.2) drivers
Oracle Database 12c Release 1 (12.1.0.1) drivers
Oracle Database 11g Release 2 (11.2.0.4), (11.2.0.3), (11.2.0.2.0), (11.2.0.1.0) drivers

一見すると Oracle Database のバージョン毎にドライバが用意されているようも見えますが、実際には Oracle JDBC ドライバのバージョンと一致していました。例えば、"Oracle Database 12c Release 1 (12.1.0.2) drivers "からダウンロードした Oracle JDBC ドライバのバージョンは"12.1.0.2"です。
念のため、複数の Oracle JDBC ドライバをダウンロードし、バージョンが一致していることを確認しています。

商用/本番環境で利用する Oracle JDBC ドライバはどこから入手すべきか?

OTNのダウンロードページ(ソフトウェア・ダウンロード)からダウンロードしたソフトウェアはOTN開発者ライセンスがつきます。OTN開発者ライセンス付きのソフトウェアはアプリケーションの開発・テストなどに利用できますが、商用または本番利用には使用できません。

正規ライセンス付きの製品は以下のサイトからダウンロードしてください。
Oracle Software Delivery Cloud
パッチに関しては以下のサイトを参照ください。
Oracle Configuration Support Manager

詳細についてはOTNのソフトウェア・ダウンロードページを参照ください。
ソフトウェア・ダウンロード

実際の開発では利用するドライバのバージョンを指定もしくは制約されることがあるかと思います。可能な限り早いタイミングでDBAもしくはインフラ担当者と相談し、正規ライセンス付きのドライバを入手することをお勧めします。

Oracle Database と Oracle JDBC ドライバのバージョンの関係

Oracle Database JDBC開発者ガイド(12.1)に互換性についての記載があります。

Oracle JDBCドライバのバージョン互換性
この項では、一般的なJDBCバージョンの互換性について説明します。
下位互換性
Oracle Database 12cリリース1 (12.1) JDBCドライバは、現在サポートされているOracle Databaseリリース(11.x.0.x)で認定されています。ただし、10.2.x、10.1.x、9.2.xおよび9.0.1.xなどの旧リリースですでにサポート期間が終了しているデータベース・リリースへの接続はサポートしません。
上位互換性
既存のサポートされているJDBCドライバは、Oracle Database 12cリリース1 (12.1)で動作することが確認されています。

スタート・ガイド

Oracleのブログでも Oracle JDBC ドライバの互換性について説明しています。

JDBCドライバの最新機能を利用するためには、JDBCドライバのバージョンが使用中のOracleデータベースのバージョンと常に同じか、またはOracleデータベースよりも高いバージョンにすることをお勧めします。

【Oracle JDBC】Oracle Databaseの対応バージョンと最新機能 | Oracle Technology Network Japan Blog

Oracle JDBC ドライバのサポート期間

Oracle JDBC ドライバのサポート期間について、Oracle のライフタイム・サポートの説明には明確な記載がありません。
ライフタイム・サポート
恐らくは Oracle JDBC ドライバのバージョンに対応する Oracle Database のサポート期間に従うものと思われます。

Oracle Lifetime Support Policy の資料から Oracle Database のサポート期間を抜粋します。
http://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf

バージョン GA Premier Support 終了 Extended Support 終了
Enterprise Edition 12.1 2013/06 2018/07 2021/07
11.2 2009/09 2015/01 2020/12
11.1 2007/08 2012/08 2015/08
10.2 2005/07 2010/07 2013/07

Oracle Database JDBC開発者ガイド(12.1)」でサポート対象データベースの完全な最新リストとして以下の表を参照するように記載されています。

Interoperability Matrix Database 12.1.0.x Database 11.2.0.x Database 11.1.0.x
JDBC 12.1.0.x Yes Yes Yes
JDBC 11.2.0.x Yes Yes Yes
JDBC 11.1.0.x Yes Yes Yes
Oracle JDBC Frequently Asked Questions

Database / JDBC 10.2.0.x との組み合わせは記載されておらず、サポート対象外となっています。

なお、Oracleのブログではこのような表が掲載されています。

Interoperability Matrix Database 12.1.0.x Database 11.2.0.x Database 11.1.0.x Database 10.2.0.x
JDBC 12.1.0.x Yes Yes Yes Yes
JDBC 11.2.0.x Yes Yes Yes Yes
JDBC 11.1.0.x Yes Yes Yes Yes
JDBC 10.2.0.x Yes Yes Yes Yes
What's New in Oracle JDBC? | Oracle Technology Network's Blog

このエントリは2014/07/08にアップされており、Oracle Database 10.2 のサポート期間だったわけではありません。ですが、Database / JDBC 10.2.0.x との組み合わせをInteroperability(相互運用性)Yesとして記載しています。

この記載の違いと「Oracle Database JDBC開発者ガイド(12.1)」の互換性についての記載から推測するに、サポート期間内の Oracle Databse / Oracle JDBC ドライバは同じくサポート期間内の別バージョンに対しても接続を保証する方針のようです。ただし、いずれかのサポート期間終了とともにサポート対象外となることに注意が必要です。

Oracle JDBC ドライバのJDKサポート

Oracle 11.1 から JDK 1.4以前のサポートが打ち切られました。今後もどこかのタイミングでサポートするJDKのバージョン引き上げが行われるものと思われます。

Oracle JDBC ドライバはいつリリースされるのか?

Oracle JDBC ドライバ のリリース(出荷)日に関する明確な記載は見つかりませんでした。

ただ、Oracleのブログの Oracle JDBC ドライバの互換性について説明しているエントリで以下の記載がありました。

JDBCドライバの最新機能を利用するためには、JDBCドライバのバージョンが使用中のOracleデータベースのバージョンと常に同じか、またはOracleデータベースよりも高いバージョンにすることをお勧めします。

【Oracle JDBC】Oracle Databaseの対応バージョンと最新機能 | Oracle Technology Network Japan Blog

ということは、Oracle Database がリリースされるタイミングではそれに対応した最新のJDBCドライバが用意されている可能性が高く、おそらくは同時リリースされると思われます。

Oracle JDBC ドライバをアップデートする必要があるのか?

他の多くのライブラリと同様に、バージョンアップすべきかどうかはケースバイケースです。バージョンアップすることによるメリット(機能改善や不具合解消など)とデメリット(検証コストや新たな不具合発生の可能性)を考慮して決めることになります。

まとめ

Oracle JDBC ドライバのサポートやポリシーは今後も変更されるものと思われます。また、環境個別の考慮事項もあるかと思います。開発のなるべく早い段階からインフラもしくはDBAと相談し、適切なドライバ(バージョン)を選択することをお勧めします。