こんにちは、Japan Developer Support Core チームの高橋です。データアクセス テクノロジーの移行のススメ第 3 弾、今回はマイクロソフトが提供する Oracle 向けの ODBC ドライバー、OLE DB プロバイダー、.NET Framework データプロバイダーのサポート状況やバージョン互換性などの観点からの移行の必要性についてお伝えします。
マイクロソフトが提供する Oracle 向けデータアクセス製品の基本知識
マイクロソフトが提供する Oracle 向けのデータアクセス技術には、以下のような製品があります。
| アプリケーションの種類 | 使用する製品 | ファイル名 | 補足 |
|---|---|---|---|
| ODBC API 呼び出し | Microsoft ODBC for Oracle | MSORCL32.dll | アンマネージ (C++ など) だけではなくマネージ (.NET Framework) で System.Data.Odbc を使用する場合も該当します。 |
| OLE DB 呼び出し | Microsoft OLE DB Provider for Oracle(MSDAORA) | MSDAORA.dll | アンマネージ (C++ など) での API 直接呼出しのほか、ADO (ActiveX Data Objects) の API を使用する場合も該当します。また、.NET Framework で System.Data.OleDb を使用する場合も該当します。 |
| .NET Framework | .NET Framework Data Provider for Oracle (System.Data.OracleClient) |
System.Data.OracleClient.dll | ODBC や OLE DB を使用せず、この名前空間のクラスを使用するケースのみ該当します。 |
それぞれのサポート状況や移行の必要性などはこの後説明しますがその前にすべてに共通することをここで先にお伝えします。
まず、これらの製品はすべて、Oracle クライアントソフトウェアに含まれる Oracle Call Interface(OCI) と呼ばれる API 経由で Oracle データベースにアクセスする設計になっています。つまり、製品を使うアプリケーションの動作環境には必ず Oracle クライアント ソフトウェアが必要となるということですね。
そして重要な点として、「マイクロソフトがサポートする Oracle バージョン」という表現は、Oracle データベースのバージョンではなく、クライアントマシンにインストールされた Oracle クライアントソフトウェアのバージョンを指します。
では、それぞれについて見ていきましょう。
Microsoft ODBC for Oracle と Microsoft OLE DB Provider for Oracle(MSDAORA)のサポート状況
Windows Data Access Components の一部として Windows OS に同梱にて提供されており、そのためサポート ライフサイクルとしては OS に従うものの、使用される OCI バージョンの互換性の関係上から次の通りのサポート状況です。
- ✅ Oracle 7:完全サポート
- ✅ Oracle 8 および 8i:限定的なサポート
- ❌ Oracle 9i 以降:サポート対象外
また、Oracle 側のサポート状況も鑑みて、これらの製品は Deprecated(廃止予定) と位置付けられています。
このようなサポート状況の都合もあり、それまでに開発された 32 ビット版のみの提供となっており、64 ビット版の提供はありません。
また、前述の通り、これらの製品は OCI と呼ばれる API を呼び出すよう設計されており、Oracle クライアント ソフトウェアが必要となりますが、現時点 (2026 年) で Oracle クライアント ソフトウェアに Oracle 8i が使用されていることはおそらくないでしょう。そのため、実質、マイクロソフトとしてサポート可能な組み合わせでの利用はないと言えます。
念のためこのようにサポートをほぼ終了している状況となった経緯に触れておきますね。
歴史的背景
これらの製品は Oracle バージョン 7 で提供される OCI で動作するよう開発されたため、Oracle 7 利用においては完全サポート、つまり、開発において不具合などの問題が見つかれば修正対応していました。
次の Oracle 8、およびその次の Oracle 8i においては、変わらずバージョン 7 相当の OCI に基づく設計のまま拡張は行われませんでした。そのため、バージョン 7 との互換がある限りは動作するとの限定的なサポート対象となりました。
しかし、次のバージョンの Oracle 9i がリリースされた 2000 年代初期には Oracle 社自身が Oracle 用の ODBC ドライバーおよび OLE DB プロバイダーをリリースしていたため、マイクロソフトは自社製品としてのこれらの開発を終了しました。そのため、Oracle 9i 以降の新機能や仕様変更には対応しておらず、Oracle 9i 以降はサポート対象外と位置づけられました。
製品利用上の問題点
私どもへのお問い合わせにおいて Oracle 11g くらいまではそのまま引き続き利用されていたユーザーの方々もいらっしゃったのですが、さらにそれ以降のバージョンへの移行の際にエラーとなるとのお話を耳にしました。Oracle 11g との組み合わせはサポート対象外ですので詳細な調査は承れませんが、興味があって調べたところ、Oracle バージョン 12.2 では OCI 7.3 のサポートが廃止されたようですね。つまり、移行によりエラーが発生するようになったのはこの仕様変更によるものと想像できます。
このように、マイクロソフトの提供する Oracle 向けの ODBC ドライバーや OLE DB プロバイダーは古いバージョンの OCI を使用する設計のため、新しいバージョンの Oracle とは互換性がない可能性があり、その結果として接続もできないという問題が起こりえるでしょう。しかし、開発終了に伴い新しい OCI バージョンへの対応予定はありませんので、Oracle へのアクセスに利用している製品の移行以外にはアプリケーションが動作できるようにする方法はないと言えます。
System.Data.OracleClient(.NET Framework Data Provider for Oracle)のサポート状況
現在サポートされる .NET Framework に同梱にて提供されているため、基本的に .NET Framework のサポートライフサイクルに従いますが、使用される OCI バージョンの互換性の関係上から次の通りのサポート状況です。
- ✅ Oracle 8i Release 3:完全サポート
- ✅ Oracle 9i:完全サポート
- ✅ Oracle 10g:限定的なサポート
- ❌ Oracle 11g 以降:サポート対象外
また、このデータプロバイダーは 2009 年 の時点で Deprecated (廃止予定) として扱われることが公式に発表されました。
参考:System.Data.OracleClient Update
廃止に至った理由は先の ODBC ドライバーや OLE DB プロバイダーと同様です。Oracle 社が独自の Oracle Data Provider for .NET (ODP.NET) をリリースし、新バージョンの Oracle 機能に対応した更新を継続して提供しているためです。
したがって、こちらも ODBC ドライバーなどと同様に、実質、現時点でマイクロソフトとしてサポート可能な組み合わせでの利用はないであろうと考えます。
製品利用上の問題点
このデータプロバイダーは Oracle バージョン 8.1.7 の OCI で動作するよう開発されているため、より新しいバージョンの Oracle との組み合わせにおいて OCI の互換性の問題が生ずる可能性があります。
しかし、サポート対象外のバージョンの組み合わせ上、このような問題は発生しうるものであり、また、このデータプロバイダーは開発を終了していますので、データ プロバイダーにおける不具合かどうかの判定や問題の修正などによる対応は不可能です。開発支援のサポートとしても組み合わせの関係から承ることはできないとの返答を差し上げることとなります。
サポートされない組み合わせであることはこのような対処不可能な問題を引き起こす可能性があることからも、使用し続けることは望ましくないと言えます。
移行の進め方
もしもご利用のアプリケーションから Oracle にアクセスしていることまではわかるものの、どのような製品のどのバージョンで接続しているかがわからない場合にはその把握から進めましょう。以下は SQL Server 向けの ODBC ドライバーや OLE DB プロバイダーについて説明した記事ですが、Oracle へのアクセスにおいても同様の手法で確認できるはずです。
参考記事: 移行対象かどうかの確認方法
ソースコードやロードされているモジュールを探す場合のキーワードについては本記事の前半の基本事項の説明を参考にしましょう。
その上で、以下を把握できたとなれば、サポートされる組み合わせなのか移行を検討すべきなのかを判断できるはずです。
- クライアントマシンにインストールする Oracle クライアントソフトウェアのバージョン
- アプリケーションで使用しているマイクロソフト製品(ODBC、OLE DB、System.Data.OracleClient など)
もし確認した結果としてサポートされない組み合わせであった場合には移行を検討しましょう。移行を進める場合のステップも SQL Server 向けのドライバーの移行の場合と基本的に同様です。システム要件などの観点で移行可否を確認し、その上で、移行方法を把握し、動作検証を行いましょう。
なお、移行先ですが、基本的には Oracle 社より各バージョンに応じた ODBC ドライバー/ OLE DB プロバイダー / .NET Framework 用データプロバイダーが提供されているようですので、そちらが候補となると考えます。
| 現在の製品 | 想定される移行先 |
|---|---|
| Microsoft ODBC for Oracle | Oracle 社提供の ODBC ドライバー |
| Microsoft OLE DB Provider for Oracle(MSDAORA) | Oracle 社提供の OLE DB プロバイダー |
| System.Data.OracleClient | Oracle 社提供の Oracle Data Provider for .NET Oracle.DataAccess.Client / Oracle.ManagedDataAccess.Client |
まとめ
マイクロソフトが提供する Oracle 向けのデータプロバイダーはどれもかなり古く、新しいバージョンの Oracle 向けのクライアントソフトウェアとは互換性がないことで適切に動作しない可能性が見込まれます。現状動作していたとしても、マイクロソフトではどれも開発を終了しており、機能やセキュリティの観点からもそのまま継続して使用することは推奨されません。
そのため、Oracle への接続に既存のマイクロソフト製品をお使いの場合には、早めにOracle 社提供の最新ドライバーなどへの移行をお勧めします。本記事が移行計画を進める参考になるようであれば幸いです。
本ブログの内容は弊社の公式見解として保証されるものではなく、開発・運用時の参考情報としてご活用いただくことを目的としています。もし公式な見解が必要な場合は、弊社ドキュメント (https://learn.microsoft.com や https://support.microsoft.com) をご参照いただくか、もしくは私共サポートまでお問い合わせください。