Oracle® Data Provider for .NET開発者ガイド ODAC 12c リリース4 (12.1.0.2) for Microsoft Windows E72575-01 |
|
前 |
次 |
次の各項では、ODP.NET管理対象外ドライバの構成方法について説明します。
ODP.NET管理対象ドライバの構成方法の詳細は、「Oracle Data Provider for .NET管理対象ドライバの構成」を参照してください。
ODP.NET管理対象外ドライバは、次のような属性の構成をサポートします。
Windowsレジストリ内。
XMLファイル内。
接続文字列などの別のメカニズムを使用したとき。または、適用可能な場合、プログラムでODP.NETクラスを使用したとき。
表2-1では、ODP.NETでサポートされる構成可能な各属性について説明します。この表では、「構成サポート」という用語の後に、その属性で使用可能な構成サポートのタイプ(Windowsレジストリ、XMLファイルなど)が続きます。
この表では、各属性のデフォルト値および有効値を示します。
注意: 記載されているデフォルト値は、レジストリ・キーが存在しないか、どこにも構成されていない場合に、属性に対して使用される値です。 |
表2-1 構成属性
インストール後、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="PromotableTransaction" value="promotable"/> <add name="StatementCacheSize" value="10"/> <add name="TraceFileName" value="C:\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="PromotableTransaction" value="promotable"/> <add name="StatementCacheSize" value="50"/> <add name="ThreadPoolMaxSize" value="30"/> <add name="TraceFileName" value="c:\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翻訳プロファイルは、.NET構成ファイルでアプリケーション全体のすべての接続に設定するか、プロファイルの範囲をオプションのdataSource
およびuserId
XML属性に基づいて制限することもできます。これらのdataSource
およびuserId
XML属性は、データベース接続を開くために使用される接続文字列のData Source
およびUser Id
属性に直接対応しています。
注意: SQL翻訳プロファイル設定は<oracle.unmanageddataaccess.client> セクションでのみサポートされます。<oracle.dataaccess.client> セクションや<oracle.manageddataaccess.client> セクションではサポートされません。 |
例2-1 すべての接続で使用できるプロファイルの設定
<configuration> <oracle.unmanageddataaccess.client> <version number="*"> <sqlTranslation> <defaultProfiles> <defaultProfile profile="Profile1"/> </defaultProfiles> </sqlTranslation> </version> </oracle.unmanageddataaccess.client> </configuration>
これは、Data Source
およびUser Id
に対するすべての接続で使用されます。
例2-2 特定のデータ・ソースのプロファイルの設定
<defaultProfiles> <defaultProfile dataSource="stf_ds" profile="Profile2"/> </defaultProfiles>
これは、指定されたData Source
に対するすべての接続で使用されます。
例2-3 特定のユーザーIDのプロファイルの設定
<defaultProfiles> <defaultProfile userId="stf_user" profile="Profile3"/> </defaultProfiles>
これは、指定されたUser Id
に対するすべての接続で使用されます。
例2-4 特定のデータ・ソースおよびユーザーIDのプロファイルの設定
<defaultProfiles> <defaultProfile dataSource="stf_ds" userId="stf_user" profile="Profile4"/> </defaultProfiles>
これは、指定されたData Source
およびUser Id
に対するすべての接続で使用されます。
例2-5 複数のデフォルト・プロファイル・エントリの構成
<defaultProfiles> <defaultProfile dataSource="stf_ds" profile="profile_ds"/> <defaultProfile userId="stf_user" profile="profile_user"/> </defaultProfiles>
複数のデフォルト・プロファイル・エントリを構成でき、これにより様々な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>
ODP.NET管理対象ドライバではUDTマッピングが現在サポートされていないため、<version>
セクション内の新しいセクションが使用され、統一構成形式で管理対象外ODP.NETのカスタムUDTマッピングがサポートされます。この新しいセクションは<udtmappings>
として識別され、各マッピングは<udtmapping>
要素を使用して識別されます。各udtMapping
要素には次の属性を指定できます。
typeName
(必須)
factoryName
(必須)
dataSource
(オプション)
schemaName
(オプション)
これらの要素は、従来の構成形式で使用されているときと同じ名前および意味を保持します。詳細は、「Oracleユーザー定義タイプ(UDT)および.NETカスタム・タイプ」を参照してください。
従来の形式を統一形式に変換する例:
<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>