日曜日, 6月 09, 2019
[ORACLE]管理対象ドライバODP.NET(ManagedDataAccess)の移行方法
・管理対象ドライバODP.NET(ManagedDataAccess)の移行方法
1.移行に関する概要
これまでODP.NETのドライバには、Oracle.DataAccess.dll(管理対象外ドライバ)を使用して
きましたが、Oracle 12cから導入されたクライアントソフトの設定が不要のODP.NET管理対象
ドライバがあります。
このドライバは、クライアント等にInstant ClientやODACを登録する必要がないことが特徴です。
Oracle.ManagedDataAccess.dllを同梱してConfigファイルを構成するだけでOracle Database
に接続可能となります。
2.システム要件
・32ビットOS:Windows 7、Windows Server 2008、Windows 8
・64ビットOS:Windows 7、Windows Server 2008、Windows 8、Windows Server 2012
・Oracle Database 10gリリース2以降のデータベースにアクセスするアプリケーション
・Microsoft .NET Framework 4.0以降を対象フレームワークにするアプリケーション
・詳細は下記サイトを参照ください。
https://docs.oracle.com/cd/E57425_01/121/ODPNT/InstallSystemRequirements.htm
3.クラス・デリゲートサポート比較
・Oracle.DataAccess.*とOracle.ManagedDataAccess.*のサポート状況は下記サイト
を参考にしてください。
https://docs.oracle.com/cd/E57425_01/121/ODPNT/intro003.htm#BHCFHCAF
3.参考サイト
・Oracle Data Provider for .NET開発者ガイド 12c リリース1 (12.1)
https://docs.oracle.com/cd/E57425_01/121/ODPNT/toc.htm
3.移行方法
①.NETプロジェクトの参照設定を「Oracle.DataAccess.dll」から
「Oracle.ManagedDataAccess.dll」に変更します。
②ネームスペース参照を変更します。
C#:using ディレクティブ、VB:Imports ステートメント
// C#
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;
' VB
Imports Oracle.ManagedDataAccess.Client
Imports Oracle.ManagedDataAccess.Types
③アプリケーション構成ファイル「app.config」にドライバ情報を記述します。
tnsnames.oraをexeファイルと同じフォルダに置くことでも実現できます。
下記の例は、対象フレームワーク「Microsoft .NET Framework 4.0」
Oracle.ManagedDataAccessドライバのバージョンが「4.121」です。
<configSections>
<section name="oracle.manageddataaccess.client"
type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<publisherPolicy apply="no"/>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral"/>
<bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="ネットサービス名(TNS名)" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ホスト名 or IPアドレス)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=サービス名))) " />
</dataSources>
</version>
</oracle.manageddataaccess.client>
1.移行に関する概要
これまでODP.NETのドライバには、Oracle.DataAccess.dll(管理対象外ドライバ)を使用して
きましたが、Oracle 12cから導入されたクライアントソフトの設定が不要のODP.NET管理対象
ドライバがあります。
このドライバは、クライアント等にInstant ClientやODACを登録する必要がないことが特徴です。
Oracle.ManagedDataAccess.dllを同梱してConfigファイルを構成するだけでOracle Database
に接続可能となります。
2.システム要件
・32ビットOS:Windows 7、Windows Server 2008、Windows 8
・64ビットOS:Windows 7、Windows Server 2008、Windows 8、Windows Server 2012
・Oracle Database 10gリリース2以降のデータベースにアクセスするアプリケーション
・Microsoft .NET Framework 4.0以降を対象フレームワークにするアプリケーション
・詳細は下記サイトを参照ください。
https://docs.oracle.com/cd/E57425_01/121/ODPNT/InstallSystemRequirements.htm
3.クラス・デリゲートサポート比較
・Oracle.DataAccess.*とOracle.ManagedDataAccess.*のサポート状況は下記サイト
を参考にしてください。
https://docs.oracle.com/cd/E57425_01/121/ODPNT/intro003.htm#BHCFHCAF
3.参考サイト
・Oracle Data Provider for .NET開発者ガイド 12c リリース1 (12.1)
https://docs.oracle.com/cd/E57425_01/121/ODPNT/toc.htm
3.移行方法
①.NETプロジェクトの参照設定を「Oracle.DataAccess.dll」から
「Oracle.ManagedDataAccess.dll」に変更します。
②ネームスペース参照を変更します。
C#:using ディレクティブ、VB:Imports ステートメント
// C#
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;
' VB
Imports Oracle.ManagedDataAccess.Client
Imports Oracle.ManagedDataAccess.Types
③アプリケーション構成ファイル「app.config」にドライバ情報を記述します。
tnsnames.oraをexeファイルと同じフォルダに置くことでも実現できます。
下記の例は、対象フレームワーク「Microsoft .NET Framework 4.0」
Oracle.ManagedDataAccessドライバのバージョンが「4.121」です。
<configSections>
<section name="oracle.manageddataaccess.client"
type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<publisherPolicy apply="no"/>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral"/>
<bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="ネットサービス名(TNS名)" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ホスト名 or IPアドレス)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=サービス名))) " />
</dataSources>
</version>
</oracle.manageddataaccess.client>