2.7 Oracle Data Provider for .NETの構成

ODP.NETの特定のバージョンに対する設定は、いくつかの方法で構成することができ、それぞれ優先順位が異なります。

  • Windowsレジストリ・エントリは、ODP.NETの特定のバージョンに対応するマシン全体の設定です。

    Windowsレジストリベースの構成は、ODP.NET管理対象ドライバをサポートしていません。

  • machine.config設定は、.NET Framework全体の設定であり、Windowsレジストリ値より優先されます。

  • アプリケーションまたはWeb構成ファイルの設定は、アプリケーション固有の設定であり、machine.configの設定およびWindowsレジストリの設定より優先されます。

    注意:

    app/web/configによるmachine.configのオーバーライドには、例外が1つあります。oracle.manageddataaccess.clientおよびoracle.unmanageddataaccess.clientセクションの場合、machine.configで特定のODP.NETバージョンをサブセクション(<version number="4.121.2.0">)に指定すると、全バージョンを汎用的に参照するapp/web.configサブセクション(<version number="*">)がオーバーライドされます。machine.configサブセクションをオーバーライドするには、app/web/configファイルにそのバージョンのサブセクション、つまり<version number="4.121.2.0">を作成します。

  • 接続文字列と同等のすべての属性は、他のどの設定値よりも優先されます。

アプリケーションまたはWeb構成ファイルは、1つのコンピュータ上の複数のアプリケーションが同じODP.NETのバージョンを使用する場合に便利で、ときには必須となりますが、各アプリケーションには異なるODP.NET構成が必要です。ODP.NETの特定のバージョンに対してWindowsレジストリ値を設定すると、そのバージョンを使用するすべてのアプリケーションに影響します。ただし、アプリケーションまたはWeb構成ファイル内でODP.NET構成値を持つことにより該当するアプリケーションに対してのみその設定が適用されるため、より細分化して使用できます。

たとえば、アプリケーションまたはweb.configファイルのStatementCacheSize構成設定が100の場合、このアプリケーション固有の設定により、そのアプリケーションがロードするODP.NETのバージョンではStatementCacheSizeに対して100が強制的に使用され、machine.configおよびレジストリ内の設定より優先されます。前のリリース同様、構成ファイル(machine.configまたはアプリケーションおよびWeb構成ファイル)に存在しない設定の場合は、ロードしたODP.NETのバージョンに対応するレジストリ内の値が使用されることに注意してください。

ODP.NETがmachine.configファイルを読み込むのは、ODP.NETのバージョンからではなく、ODP.NETを実行する.NET Frameworkのバージョンからであることに注意してください。

ODP.NETは、メモリーにロードされるとき、WindowsレジストリおよびXML構成ファイルのみを読み込みます。そのため、その後に行われた構成の変更は、アプリケーションを再起動するまで読み込まれず、使用されません。

ODP.NET .NET構成設定のすべてのBoolean属性は、truefalse1および0を有効な値として受け入れます。1trueと同等で、0falseと同等です。

2.7.1 Oracle Client構成ファイルで自動化されるインストール中の設定

Oracle Data Access Components (ODAC)を新しいOracleホームにインストールするとき、Oracle Universal Installer (OUI)は、Oracleのローカル・ネーミング(tnsnames.ora)、プロファイル(sqlnet.ora)およびディレクトリ(ldap.ora)のパラメータ・ファイルおよび設定を、既存のOracleホームから、新しくインストールされるODACホームにコピーします。ただし、ビット数が同じ場合に限られます。つまり、どちらも32ビット環境に、またはどちらも64ビット環境にインストールされている必要があります。

あるいは、直前にアクティブだったOracleホームだけではなく、既存の他のOracleホームから、新しいODAC Oracleホームに、既存の*.oraファイルをコピーすることもできます。OUIは、存在すれば最大で3つの既存のOracleホームについて、その場所の情報を提供します。新しいOracleホームが、ファイルのコピー元となった以前のOracleホームとは異なる構成を使用する場合には、*.oraファイルをカスタマイズできます。

既存のODACまたはRDBMS Oracleホームにインストールする場合、新しい*.oraファイルはコピーも作成もされません。

以前のOracleホームが存在しないコンピュータにインストールする場合、OUIはデータベース接続の別名情報をユーザーに要求します。この時点で、OUIによってtnsnames.oraファイルが作成されます。別名情報が指定されない場合、tnsnames.oraファイルは作成されません。ユーザーがデータベース接続情報をすべて用意していない場合でも、インストール中にはプレースホルダ値を挿入しておき、後からtnsnames.oraを変更して実際の値でプレースホルダを置き換えることをお薦めします。

2.7.2 Oracle Client構成ファイルの設定

ODP.NETのパラメータ値tnsnames.orasqlnet.oraおよびldap.oraは、.NET構成ファイルで、または*.ora ファイル自体の中で設定できます。*.oraファイルの場所は、標準のORACLE_HOME/network/adminディレクトリと異なる場所にすることもできます。*.ora設定の優先順位は、ODP.NETの設定の優先順位と似ています。主な相違は、*.oraファイル自体が検索順序に含まれている点です。tnsnames.orasqlnet.oraの優先順位は、次のとおりです。

  1. app.config またはweb.config

  2. machine.config

  3. TNS_ADMIN設定で指定されているファイルの場所

  4. 現在の.EXE またはWebアプリケーションのルート・ディレクトリ

  5. ODP.NET管理対象外ドライバを使用している場合は、%ORACLE_HOME%\network\admin

ldap.oraの優先順位は次のとおりです。

  1. app.config またはweb.config

  2. machine.config

  3. .NET構成ファイルのTNS_ADMIN設定で指定されているファイルの場所

  4. .NET構成ファイルのLDAP_ADMIN設定で指定されているファイルの場所

  5. 現在の.EXE またはWebアプリケーションのルート・ディレクトリ

  6. ODP.NET管理対象外ドライバを使用している場合は、%ORACLE_HOME%\network\admin

  7. ODP.NET管理対象外ドライバを使用している場合は、%ORACLE_HOME%\ldap\admin

Oracle Client構成パラメータの設定をすべて格納するには、app.configまたはweb.configファイルを使用することをお薦めします。

最初のtnsnames.orasqlnet.oraおよびldap.oraが見つかって読み込まれると、優先順位がそれより低い*.oraファイルは読み込まれなくなります。つまり、Oracle Client構成はすべて、app.configweb.configmachine.configで、または見つかった最初の*.oraファイル・セットで設定されている必要があるということです。優先順位がこれより低い*.oraファイルで設定される追加のパラメータ値は、読み込まれません。

2.7.3 マシン全体の構成オプション

ODAC OUIとxcopyは、管理対象および管理対象外ODP.NETに関するマシン全体の構成、またはマシン全体ではない構成で、ODP.NETをインストールします。マシン全体の構成は、プロバイダ・アセンブリをグローバル・アセンブリ・キャッシュ(GAC)に配置する、構成セクション・ハンドラおよびDbProviderFactory情報を使用してmachine.configを更新するなど、マシンの.NET設定をグローバルに変更します。

マシン全体の構成では、TNS_ADMIN machine.config設定も作成します。TNS_ADMINが、Windows環境変数としてOUI ODACインストールにすでに存在する場合、TNS_ADMIN machine.config設定はそのディレクトリの場所に設定されます。TNS_ADMINがOUI ODACインストールにまだ存在しない場合、machine.config TNS_ADMIN値はORACLE_HOME\network\adminに設定されます。Xcopyのインストールは常に、machine.config TNS_ADMIN値を作成してORACLE_HOME\network\adminに設定します。

ODAC OUIマシン全体の構成インストールの場合のみ、既存のWindows環境変数LDAP_ADMINまたはTNS_ADMINldap.oraファイルが見つかる場合に、LDAP_ADMIN設定はmachine.configにも作成されることがあります。ODAC OUIインストールは、マシン全体の構成のmachine.configで、NAMES.DIRECTORY_PATH設定も作成します。

マシン全体ではない構成を選択する場合、これらの変更はいずれも実行されません。リリース12.2以降のODACインストールは、新しいOracleホームにインストールする場合、マシン全体ではない構成がデフォルトになります。既存のOracleホームの場合、ODACは以前のインストールでそのOracleホームに選択したのと同じ同じ構成設定をデフォルトとして再インストールします。

ODACとODP.NET NuGetを同じマシンにインストールする予定の場合は、ODP.NETをマシン全体ではなく構成する必要があります。特に.NET Frameworkがアセンブリのバージョン(たとえば、4.121.2.0)を識別するために使用するのと同じODP.NETバージョン番号を、両方が使用する場合は注意が必要です。

同じバージョンのODP.NETがすでにインストールされているのと同じOracleホームに再インストールすれば、ユーザーはマシン全体の構成からマシン全体ではない構成に、ODP.NETを再構成することができます。たとえば、すでにODP.NETをマシン全体で構成している場合、同じOracleホームにODP.NETをインストールしたうえで、マシン全体ではない構成オプションを選択すれば、再構成が可能です。

マシン全体で構成されていないODP.NETのバージョンに依存するアプリケーションの場合は、次の点に注することが重要です。

  • アプリケーションが依存するODP.NETのアセンブリは、アプリケーション・ディレクトリにコピーする必要があります。

  • プロバイダ・ファクトリまたはプロバイダ固有の構成、あるいはその両方を使用するには、適切な.NET構成設定が必要です。