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属性は、true
、false
、1
および0
を有効な値として受け入れます。1
はtrue
と同等で、0
はfalse
と同等です。
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.ora
、sqlnet.ora
およびldap.ora
は、.NET構成ファイルで、または*.ora
ファイル自体の中で設定できます。*.ora
ファイルの場所は、標準のORACLE_HOME
/network/admin
ディレクトリと異なる場所にすることもできます。*.ora
設定の優先順位は、ODP.NETの設定の優先順位と似ています。主な相違は、*.ora
ファイル自体が検索順序に含まれている点です。tnsnames.ora
とsqlnet.ora
の優先順位は、次のとおりです。
-
app.config
またはweb.config
-
machine.config
-
TNS_ADMIN
設定で指定されているファイルの場所 -
現在の
.EXE
またはWebアプリケーションのルート・ディレクトリ -
ODP.NET管理対象外ドライバを使用している場合は、
%ORACLE_HOME
%\network\admin
ldap.ora
の優先順位は次のとおりです。
-
app.config
またはweb.config
-
machine.config
-
.NET構成ファイルの
TNS_ADMIN
設定で指定されているファイルの場所 -
.NET構成ファイルの
LDAP_ADMIN
設定で指定されているファイルの場所 -
現在の
.EXE
またはWebアプリケーションのルート・ディレクトリ -
ODP.NET管理対象外ドライバを使用している場合は、
%ORACLE_HOME
%\network\admin
-
ODP.NET管理対象外ドライバを使用している場合は、
%ORACLE_HOME
%\ldap\admin
Oracle Client構成パラメータの設定をすべて格納するには、app.config
またはweb.config
ファイルを使用することをお薦めします。
最初のtnsnames.ora
、sqlnet.ora
およびldap.ora
が見つかって読み込まれると、優先順位がそれより低い*.ora
ファイルは読み込まれなくなります。つまり、Oracle Client構成はすべて、app.config
、web.config
、machine.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_ADMIN
でldap.ora
ファイルが見つかる場合に、LDAP_ADMIN
設定はmachine.config
にも作成されることがあります。ODAC OUIインストールは、マシン全体の構成のmachine.config
で、NAMES.DIRECTORY_PATH
設定も作成します。
マシン全体ではない構成を選択する場合、これらの変更はいずれも実行されません。リリース12.2以降のODACインストールは、新しいOracleホームにインストールする場合、マシン全体ではない構成がデフォルトになります。既存のOracleホームの場合、ODACは以前のインストールでそのOracleホームに選択したのと同じ同じ構成設定をデフォルトとして再インストールします。標準のOracle DatabaseまたはClientインストールなど、ODAC以外のインストールでは、マシン全体ではない構成のみ使用可能です。
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構成設定が必要です。