Oracle Data Provider for .NET管理対象外ドライバの構成
次の各項では、ODP.NET管理対象外ドライバの構成方法について説明します。
ODP.NETは、web.config、app.configまたはmachine.configという名前のXMLファイルを使用して構成できます。これらの構成ファイルには、ODP.NETの構成に固有のセクションがあります。
管理対象ODP.NETの場合、開発者は従来の<oracle.dataaccess.client>セクションも、新しい<oracle.unmanageddataaccess.client>セクションのどちらも使用できます。アプリケーションでは、可能なかぎり<oracle.unmanageddataaccess.client>を使用することをお薦めします。管理対象ODP.NETの場合、管理対象は<oracle.manageddataaccess.client>を使用します。
管理対象外ODP.NETは、管理対象ドライバで使用できない一部の機能もサポートしているので、<oracle.unmanageddataaccess.client>は<oracle.manageddataaccess.client>のスーパーセットです。両方のプロバイダに共通している機能は、同じ構造とプロパティを共有しており、値もほぼ同じです。プログラマにとっては、フォーマットが共有されているのであれば、いずれかのプロバイダを互換的に使用し、管理対象外と管理対象のODP.NETの間で移行するほうが簡単でしょう。
この項では、Windowsレジストリ<oracle.dataaccess.client>、または独自の<oracle.unmanageddataaccess.client>設定での管理対象外のODP.NET構成設定について扱います。<oracle.manageddataaccess.client>との共有設定については、次を参照してください。
サポートされる構成設定
ODP.NET管理対象外ドライバは、次のような属性の構成をサポートします。
-
Windowsレジストリ内。
-
XMLファイル内。
-
接続文字列などの別のメカニズムを使用したとき。または、適用可能な場合、プログラムでODP.NETクラスを使用したとき。
表2-3では、ODP.NETでサポートされる構成可能な各属性について説明します。この表では、「構成サポート」という用語の後に、その属性で使用可能な構成サポートのタイプ(Windowsレジストリ、XMLファイルなど)が続きます。
この表では、各属性のデフォルト値および有効値を示します。
ノート:
記載されているデフォルト値は、レジストリ・キーが存在しないか、どこにも構成されていない場合に、属性に対して使用される値です。
表2-3 構成属性
| 属性/設定名 | 説明 |
|---|---|
|
|
接続を接続プールに戻す前に接続ステータスがチェックされるかどうかを指定します。このレジストリ・エントリは、ODP.NETをインストールしても作成されず、デフォルト値の 構成サポート: WindowsレジストリおよびXMLファイル 有効な値:
デフォルト: |
|
|
変更通知、HA、またはRLB機能についてデータベースから送信されるすべての通知をODP.NETがリスニングするポート番号を指定します。無効なポート番号または使用されているポート番号が指定されている場合でもODP.NETはエラーをスローしません。 構成サポート: XMLファイルおよびODP.NETクラス 有効な値:
デフォルト: |
|
|
ODP.NETを使用して、データベースにアクセスしようとする.NETアプリケーションの 構成サポート: WindowsレジストリおよびXMLファイル 有効な値: 0: 1: デフォルト: 0 |
|
|
依存する非管理Oracle Clientバイナリのロード元を指定します。 構成サポート: WindowsレジストリおよびXMLファイル 有効な値: 依存する非管理Oracle Clientバイナリが格納される場所のパス。 デフォルト: |
|
|
ODP.NET接続文字列属性 |
|
|
データベース・ラウンドトリップからフェッチしたデータをODP.NETがキャッシュするために割り当てる合計メモリー・サイズをバイト単位で指定します。この値は、 構成サポート: Windowsレジストリ、XMLファイルおよびODP.NETクラス 有効な値:
デフォルト: |
|
|
Oracle Databaseの 有効な値:
デフォルト: |
|
|
ODP.NET 11.2.0.3.20以前のリリースでは、後者がデフォルトの動作でした。現行のデフォルト動作を使用することをお薦めします。 以前のデフォルト動作では、トランザクションが完了する前にタイムアウト時間を超過すると、その接続のトランザクションが自動的にバインド解除され、その接続の以降の操作は 現在のデフォルト設定では、トランザクションがタイムアウトすると例外が発生し、それ以降の操作は接続時に実行されます。 構成サポート: WindowsレジストリおよびXMLファイル 有効な値:
デフォルト: |
|
|
自動チューニングが有効化されている場合にキャッシュできる文の最大数を指定します。 構成サポート: WindowsレジストリおよびXMLファイル 有効な値: 0から デフォルト: データベースの |
|
|
ADO.NET 2.0の 構成サポート: XMLファイルのみ 有効な値: XMLファイルの完全ファイル名。 デフォルト: なし |
|
|
接続プーリングのパフォーマンス・カウンタの公開を有効または無効にします。複数のパフォーマンス・カウンタは、有効な値を追加することで取得できます。 構成サポート: WindowsレジストリおよびXMLファイル 有効な値:
デフォルト: |
|
|
ODP.NETアプリケーションに対して自動チューニングが有効かどうかを指定します。 構成サポート: Windowsレジストリ、XMLファイルおよび 有効な値: 0: 自動チューニングは無効です。レジストリまたはXMLファイルで使用されます。
1: 自動チューニングは有効です。レジストリまたはXMLファイルで使用されます。
デフォルト: 1 |
|
|
各接続についてデータベースでキャッシュされるカーソルおよび文の数を指定します。この設定は、接続文字列のStatement Cache Size属性に対応します。値が0を超える場合も文のキャッシングが有効になります。 構成サポート: Windowsレジストリ、XMLファイルおよびStatement Cache Size接続文字列属性 有効な値:
デフォルト: |
|
|
構成サポート: WindowsレジストリおよびXMLファイル 有効な値:
デフォルト: |
|
|
プロセス内で使用可能な各プロセッサに対するワーカー・スレッドのデフォルトの最大サイズを指定します。この値は、ODP.NETにおける、このスレッド・プールを使用した接続の作成、コマンドの実行のタイムアウト、外部プロシージャ( 構成サポート: WindowsレジストリおよびXMLファイル 有効な値:
デフォルト: ODAC 2007より前またはリリース11.1.0.6.20より前のリリースでは、ODP.NETは、 |
|
|
トレース・ファイルの保存先ディレクトリ( 構成サポート: WindowsレジストリおよびXMLファイル デフォルト: |
|
|
各トレース・ファイルの最大ファイル・サイズ。 構成サポート: WindowsレジストリおよびXMLファイル デフォルト: 100。単位はMBです(つまり100 MBです)。 |
|
|
トレース情報のロギングに使用されるファイル名を指定します。 構成サポート: WindowsレジストリおよびXMLファイル 有効な値: 有効なディレクトリの場所およびファイル名。 デフォルト: |
|
|
ODP.NETのトレース・レベルを指定します。すべてのオブジェクトに対するすべての開始および終了コールをトレースするのは過剰になる場合があるため、 構成サポート: WindowsレジストリおよびXMLファイル 有効な値:
デフォルト: 0 ノート: ODP.NETは、値に対するビットのチェックは行いません。トレースを有効にすると、トレース・ファイルへのロギングがODP.NETのパフォーマンスに影響する可能性があります。 ノート: ユーザーモード・ダンプの作成には、 |
|
|
トレース情報を1つのファイルに記録するか、スレッドごとの複数のファイルに記録するかを指定します。単一トレース・ファイルを指定した場合は、 構成サポート: WindowsレジストリおよびXMLファイル 有効な値:
デフォルト: |
|
|
ODP.NETがOracle UDTを取得して操作するために使用する各接続のオブジェクト・キャッシュのサイズをKB単位で指定します。 構成サポート: WindowsレジストリおよびXMLファイル 有効な値:
デフォルト: |
|
|
カスタム・タイプとデータベースのOracle UDTのマッピングを指定します。マッピングは、構成ファイルおよびカスタム・タイプ・ファクトリで指定できますが、マッピングが両方で指定されている場合は、構成ファイルで指定されたマッピングが、カスタム・タイプ・ファクトリを使用して指定されたマッピングより優先されます。 構成サポート: XMLファイルおよびカスタム・タイプ・ファクトリ・クラス 有効な値: 有効なマッピング デフォルト: なし |
Windowsレジストリ
インストール後、ODP.NETは、Windowsレジストリ内の構成およびトレースのエントリを作成します。構成およびトレース・レジストリの値は、Oracleクライアントのインストールを実行しているすべてのODP.NETアプリケーションに適用されます。各ODP.NETアプリケーションは、値(たとえば、FetchSize)をODP.NETアプリケーション自身内で構成することで、これらの値をオーバーライドできます。また、.NET構成ファイルを使用してODP.NETのWindowsレジストリ値をオーバーライドすることもできます。
ODP.NETレジストリ値は、HKEY_LOCAL_MACHINE\Software\Oracle\ODP.NET\version\にあります。.NET Framework 3.5に1つのキー、.NET Framework 4以降に1つのキーがあります。
ノート:
x64ベース・バージョンのWindowsで動作する32ビット・アプリケーションは、レジストリ・サブキーにHKEY_LOCAL_MACHINE\SoftwareではなくHKEY_LOCAL_MACHINE\Software\WOW6432nodeを使用します。このようなアプリケーションがOracle Data Provider for .NET (32ビット)を使用する場合は、ODP.NETのレジストリ値がHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Oracle\ODP.NET\version\に格納されます。
構成ファイル・サポート
1つのバージョンのODP.NETに依存したコンピュータに多数のアプリケーションを保有する顧客の場合、特定のバージョンのODP.NETに対するWindowsレジストリの設定は、そのバージョンのODP.NETを使用するすべてのアプリケーションに対して必ずしも適用可能ではありません。より粒度の高い制御を提供するため、ODP.NET構成ファイル・サポートでは、開発者がODP.NETの構成設定をアプリケーションの構成ファイル、web.configファイルまたはmachine.configファイルに指定することができます。
ODP.NETバージョン・レベルの構成設定を超える粒度の制御が不要な場合、構成ファイルを使用してODP.NETの構成設定を指定する必要はありません。
次に、.NET Framework 2.0以降に対応したweb.configファイルの例を示します。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<oracle.dataaccess.client>
<settings>
<add name="DllPath" value="C:\oracle\bin"/>
<add name="FetchSize" value="131072"/>
<add name="StatementCacheSize" value="10"/>
<add name="TraceFileName" value="D:\odpnet2.trc"/>
<add name="TraceLevel" value="63"/>
<add name="TraceOption" value="1"/>
</settings>
</oracle.dataaccess.client>
</configuration>
次に、.NET Framework 2.0を使用するODP.NET管理対象外ドライバに対応したapp.configの例を示します(いくつかの追加属性と、UDTタイプの2つのマッピングが設定されています)。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<oracle.dataaccess.client>
<settings>
<add name="DbNotificationPort" value="-1"/>
<add name="DllPath" value="C:\app\user\product\11.1.0\client_1\bin"/>
<add name="DynamicEnlistment" value="0"/>
<add name="FetchSize" value="131072"/>
<add name="MetaDataXml" value="CustomMetaData.xml"/>
<add name="PerformanceCounters" value="4095"/>
<add name="StatementCacheSize" value="50"/>
<add name="ThreadPoolMaxSize" value="30"/>
<add name="TraceFileName" value="D:\odpnet2.trc"/>
<add name="TraceLevel" value="0"/>
<add name="TraceOption" value="0"/>
<add name="Person" value="udtMapping factoryName='PersonFactory, Sample,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' typeName='PERSON'
schemaName='SCOTT' dataSource='oracle'"/>
<add name="Student" value="udtMapping factoryName='StudentFactory, Sample,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' typeName='STUDENT'
schemaName='SCOTT'"/>
</settings>
</oracle.dataaccess.client>
</configuration>
ODP.NET管理対象外ドライバは、ODP.NET管理対象ドライバと同じ構成ファイル形式を使用するオプションがあります。この形式は単一の統合スキームを使用することで構成を簡素化します。この形式を使用するには、既存の管理対象外ODP.NET構成セクションの名前を<oracle.dataaccess.client>から<oracle.unmanageddataaccess.client>に変更する必要があります。既存の管理対象外ODP.NET要素および値が、ODP.NET管理対象ドライバと同じ形式を使用して新しいセクションでサポートされます。要素と値を設定する方法の詳細は、Oracle Data Provider for .NET管理対象ドライバの構成を参照してください。
たとえば、FetchSize要素と値を従来の形式から新しい形式に変換する方法は次のとおりです。
<oracle.dataaccess.client>
<settings>
<add name="FetchSize" value="131072" />
</settings>
</oracle.dataaccess.client>
<oracle.unmanageddataaccess.client>
<version number="*">
<settings>
<setting name="FetchSize" value="131072" />
</settings>
</version>
</oracle.unmanageddataaccess.client>
従来のODP.NET管理対象外ドライバ構成ファイル形式は引き続きサポートされます。
SQL翻訳フレームワークの構成
SQL翻訳プロファイルの構成
デフォルトのSQL翻訳プロファイルは、.NET構成ファイルでアプリケーション全体のすべての接続に設定するか、プロファイルの範囲をオプションのdataSourceおよびuserId XML属性に基づいて制限することもできます。これらのdataSourceおよびuserId XML属性は、データベース接続を開くために使用される接続文字列のData SourceおよびUser Id属性に直接対応しています。
ノート:
SQL翻訳プロファイル設定は<oracle.unmanageddataaccess.client>セクションでのみサポートされます。<oracle.dataaccess.client>セクションや<oracle.manageddataaccess.client>セクションではサポートされません。
これは、Data SourceおよびUser Idに対するすべての接続で使用されます。
これは、指定されたData Sourceに対するすべての接続で使用されます。
これは、指定されたUser Idに対するすべての接続で使用されます。
これは、指定されたData SourceおよびUser Idに対するすべての接続で使用されます。
複数のデフォルト・プロファイル・エントリを構成でき、これにより様々なdataSource属性およびuserId属性のデフォルト・プロファイルの構成を可能にしますが、プロファイルを設定する際には、最大一致属性のプロファイルが選択されます。
一致エントリが2つあり、1つはdataSourceのみでもう1つはuserIdのみの場合、userIdが一致するエントリがdataSourceが一致するエントリより優先されます。
前述の構成では、Data Source属性にstf_dsおよびUser Id属性にstf_userを持つ接続文字列で接続しようとする場合、前述の両方のエントリが一致します。このような場合、User Id属性が一致するエントリが優先されます。これは、profile_userがデフォルト・プロファイルとして選択されることを意味します。
エラー・マッピングの構成
アプリケーションはアプリケーション構成ファイルで接続関連エラー・マッピングを構成できます。エラー・マッピングは、Data Source名、User Idおよびプロファイル名自体に基づいてスコープ設定することもできます。
次に3つすべての属性のエラー・マッピングを示す例を示します。
<configuration>
<oracle.unmanageddataaccess.client>
<version number="*">
<sqlTranslation>
<defaultProfiles>
<defaultProfile dataSource="stf_ds" userId="stf_user" profile=" Profile4"/>
</defaultProfiles>
<ErrorMappings>
<ErrorMapping dataSource="stf_ds" userId="stf_user" profile="Profile4">
<add oracleErrorNumber="1017" translatedErrorCode="222" />
<add oracleErrorNumber="1005" translatedErrorCode="888" />
</ErrorMapping>
</ErrorMappings>
</sqlTranslation>
</version>
</oracle.unmanageddataaccess.client>
</configuration>
dataSource属性およびuserId属性はオプションですが、マッピングをスコープ設定するのに使用できることに注意してください。
すべてのプロファイルに使用できるエラー・マッピングを示すこともできます。次はその例です。
<ErrorMappings>
<ErrorMapping profile="*">
<add oracleErrorNumber="1017" translatedErrorCode="222" />
<add oracleErrorNumber="1018" translatedErrorCode="888" />
</ErrorMapping>
</ErrorMappings>
デフォルト・エラー・マッピング・プロファイルの構成
デフォルト・エラー・マッピング・プロファイルはdefaultErrorMappingProfile設定を通じて構成できます。これは、デフォルト・エラー・マッピング・プロファイルを指定するために使用できます。特に、デフォルト・プロファイルが.NET構成ファイルを通じて指定されず、サーバー側で指定されているシナリオにおいて使用できます。この場合、接続関連エラーが発生すると、ODP.NETではdefaultErrorMappingProfile設定で指定されているプロファイルの.NET構成ファイルで指定されているエラー・マッピングを適切に使用できるようになります。
次にデフォルト・エラー・マッピング・プロファイルを構成する例を示します。
<sqlTranslation>
<settings>
<add name="defaultErrorMappingProfile" value="error_mapping_profile" />
<settings>
</sqlTranslation>
SQL翻訳フレームワーク文キャッシュ・サイズの構成
クライアントは、翻訳を避けるためにODP.NETが内部的にキャッシュできる翻訳された文の数を構成できます。これは、手間のかかる操作になる場合があります。
次にデフォルト・エラー・マッピング・プロファイルを構成する例を示します。
<sqlTranslation>
<settings>
<add name="translatedStatementCacheSize" value="50" />
<settings>
</sqlTranslation>
SQL翻訳フレームワークの構成ファイルのサンプル
次に、使用できるあらゆる可能性のあるエレメント付きのサンプル構成ファイルを示します。
<sqlTranslation>
<settings>
<add name="translatedStatementCacheSize" value="50" />
<add name="defaultErrorMappingProfile" value="def_Profile" />
<settings>
<defaultProfiles>
<defaultProfile profile="STF.NO_DS_NO_USERID"/>
<defaultProfile userId="stf" profile="STF_NO_DS"/>
<defaultProfile dataSource="stf_inst" profile="STF_NO_USERID"/>
<defaultProfile dataSource="stf_inst" userId="stf" profile="STF.STF_X"/>
</defaultProfiles>
<ErrorMappings>
<ErrorMapping profile="def_profile">
<add oracleErrorNumber="1017" translatedErrorCode="444" />
</ErrorMapping>
<ErrorMapping dataSource="stf_inst" userId="stf" profile=" STF.STF_X ">
<add oracleErrorNumber="1018" translatedErrorCode="88888" />
</ErrorMapping>
</ErrorMappings>
</sqlTranslation>
例2-1 すべての接続で使用できるプロファイルの設定
<configuration>
<oracle.unmanageddataaccess.client>
<version number="*">
<sqlTranslation>
<defaultProfiles>
<defaultProfile profile="Profile1"/>
</defaultProfiles>
</sqlTranslation>
</version>
</oracle.unmanageddataaccess.client>
</configuration>
例2-2 特定のデータ・ソースのプロファイルの設定
<defaultProfiles> <defaultProfile dataSource="stf_ds" profile="Profile2"/> </defaultProfiles>
例2-3 特定のユーザーIDのプロファイルの設定
<defaultProfiles> <defaultProfile userId="stf_user" profile="Profile3"/> </defaultProfiles>
例2-4 特定のデータ・ソースおよびユーザーIDのプロファイルの設定
<defaultProfiles> <defaultProfile dataSource="stf_ds" userId="stf_user" profile="Profile4"/> </defaultProfiles>
例2-5 複数のデフォルト・プロファイル・エントリの構成
<defaultProfiles> <defaultProfile dataSource="stf_ds" profile="profile_ds"/> <defaultProfile userId="stf_user" profile="profile_user"/> </defaultProfiles>
管理対象外ODP.NETの統一構成付きのUDTマッピングの指定
ODP.NET管理対象ドライバではUDTマッピングが現在サポートされていないため、<version>セクション内の新しいセクションが使用され、統一構成形式で管理対象外ODP.NETのカスタムUDTマッピングがサポートされます。この新しいセクションは<udtmappings>として識別され、各マッピングは<udtmapping>要素を使用して識別されます。各udtMapping要素には次の属性を指定できます。
-
typeName(必須) -
factoryName(必須) -
dataSource(オプション) -
schemaName(オプション)
これらの要素は、従来の構成形式で使用されているときと同じ名前および意味を保持します。
従来の形式を統一形式に変換する例:
<configuration>
<oracle.dataaccess.client>
<settings>
<add name="Person" value="udtMapping factoryName='PersonFactory, Sample, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' typeName='PERSON' schemaName='SCOTT' dataSource='oracle'" />
</settings>
</oracle.dataaccess.client>
</configuration>
<configuration>
<oracle.unmanageddataaccess.client>
<udtmappings>
<udtmapping typename="PERSON" factoryname="PersonFactory, Sample, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" schemaname="SCOTT" datasource="oracle" />
</udtmappings>
</oracle.unmanageddataaccess.client>
</configuration>