ヘッダーをスキップ
Oracle® Data Provider for .NET開発者ガイド
12c リリース1(12.1)
B72971-07
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

Oracle Data Provider for .NETの構成

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

アプリケーションまたは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構成ファイルのみを読み込みます。そのため、その後に行われた構成の変更は、アプリケーションを再起動するまで読み込まれず、使用されません。


注意:

Entity Framework 6のネイティブ・アプリケーションに対するODP.NET管理対象ドライバおよび管理対象外ドライバの.NET構成ファイル設定は、従来の.NET構成ファイル設定とはフォーマットが異なっています。このフォーマットの詳細は、ODP.NET READMEを参照してください。

Oracle Data Provider for .NET管理対象外ドライバの構成

次の各項では、ODP.NET管理対象外ドライバの構成方法について説明します。

ODP.NET管理対象ドライバの構成方法の詳細は、「Oracle Data Provider for .NET管理対象ドライバの構成」を参照してください。

サポートされる構成設定

ODP.NET管理対象外ドライバは、次のような属性の構成をサポートします。

  • Windowsレジストリ内。

  • XMLファイル内。

  • 接続文字列などの別のメカニズムを使用したとき。または、適用可能な場合、プログラムでODP.NETクラスを使用したとき。

表2-1では、ODP.NETでサポートされる構成可能な各属性について説明します。この表では、「構成サポート」という用語の後に、その属性で使用可能な構成サポートのタイプ(Windowsレジストリ、XMLファイルなど)が続きます。

この表では、各属性のデフォルト値および有効値を示します。


注意:

記載されているデフォルト値は、レジストリ・キーが存在しないか、どこにも構成されていない場合に、属性に対して使用される値です。

表2-1 構成属性

属性/設定名 説明

CheckConStatus

接続を接続プールに戻す前に接続ステータスがチェックされるかどうかを指定します。このレジストリ・エントリは、ODP.NETをインストールしても作成されず、デフォルト値の1が使用されます。

構成サポート:

WindowsレジストリおよびXMLファイル

有効な値:

1: 接続のステータスをチェックします。

0: 接続のステータスをチェックしません。

デフォルト: 1

DbNotificationPort

変更通知、HA、またはRLB機能についてデータベースから送信されるすべての通知をODP.NETがリスニングするポート番号を指定します。無効なポート番号または使用されているポート番号が指定されている場合でもODP.NETはエラーをスローしません。OracleDependency.Port staticフィールドを指定すれば、WindowsレジストリおよびXML構成ファイルより優先するようにポートを設定できます。

構成サポート:

XMLファイルおよびODP.NETクラス

有効な値:

-1: 使用されていないポートがランダムに開き、リスニングします。

n > = 0: ポートnをリスニングします。

デフォルト: -1

DemandOraclePermission

ODP.NETを使用して、データベースにアクセスしようとする.NETアプリケーションのOraclePermissionをODP.NETで要求するかどうかを指定します。

構成サポート:

WindowsレジストリおよびXMLファイル

有効な値:

0: OraclePermissionの要求を無効化します。

1: OraclePermissionの要求を有効化します。

デフォルト: 0

DllPath

依存する非管理Oracle Clientバイナリのロード元を指定します。

構成サポート: WindowsレジストリおよびXMLファイル

有効な値:

依存する非管理Oracle Clientバイナリが格納される場所のパス。

デフォルト: ORACLE_BASE\\ORACLE_HOME\bin

DynamicEnlistment

OracleConnection.Openメソッドが起動したEnlistTransaction()またはEnlistDistributedTransaction()を通じてアプリケーションが分散トランザクションに明示的に登録されるかどうかを指定します。プログラムによって動的に登録できるようにODP.NETを構成するには、接続文字列に"enlist=dynamic"を含める必要があります。

構成サポート:

Windowsレジストリ、XMLファイルおよび"enlist"接続文字属性

有効な値:

0: 分散トランザクションに明示的に登録する機能を無効にします。

1: 分散トランザクションに明示的に登録する機能を有効にします。

デフォルト: 0

FetchSize

データベース・ラウンドトリップからフェッチしたデータをODP.NETがキャッシュするために割り当てる合計メモリー・サイズをバイト単位で指定します。この値は、OracleCommandおよびOracleDataReader FetchSizeプロパティでも設定できます。

構成サポート:

Windowsレジストリ、XMLファイルおよびODP.NETクラス

有効な値:

0 <= n <= int.MaxValue: nは、バイト単位のキャッシュ・サイズです。

デフォルト: 131072

LegacyEntireLobFetch

Oracle DatabaseのBLOBおよびCLOB列から、OracleBlobおよびOracleClob型、またはOracleBinaryおよびOracleString型を返します。 InitialLobFetchSize-1に設定されている場合にのみ、この設定が適用されます。

有効な値:

0: OracleBlobおよびOracleClobを返します。

1: OracleBinaryおよびOracleStringを返します。

デフォルト: 0

LegacyTransactionBindingBehavior

System.Transactionsトランザクションからデータベース接続をデタッチするタイミングを指定します。デフォルトでは、接続の終了による明示的なバインド解除時か、トランザクションの破棄による暗黙的なバインド解除時にのみ、接続をデタッチします。この属性の設定は、トランザクションの終了時(コミット、強制終了、タイムアウト)、接続の終了時、またはトランザクションの破棄時に必ず接続をデタッチするように変更することもできます。

ODP.NET 11.2.0.3.20以前のリリースでは、後者がデフォルトの動作でした。現行のデフォルト動作を使用することをお薦めします。

以前のデフォルト動作では、トランザクションが完了する前にタイムアウト時間を超過すると、その接続のトランザクションが自動的にバインド解除され、その接続の以降の操作はAutoCommitモードで実行されていました。この場合、タイムアウトする前の操作はロールバックされますが、タイムアウト後に実行した操作はコミットされます。

現在のデフォルト設定では、トランザクションがタイムアウトすると例外が発生し、それ以降の操作は接続時に実行されます。

構成サポート:

WindowsレジストリおよびXMLファイル

有効な値:

0: 接続の終了時またはトランザクションの破棄時にトランザクションの接続をデタッチします。

1: 接続の終了時、トランザクションの破棄時、またはトランザクションの完了時(コミット、ロールバック、タイムアウト)に、トランザクションの接続をデタッチします。

デフォルト: 0

MaxStatementCacheSize

自動チューニングが有効化されている場合にキャッシュできる文の最大数を指定します。

構成サポート:

WindowsレジストリおよびXMLファイル

有効な値:

0からSystem.Int32.MaxValue

デフォルト: 100

MetaDataXml

ADO.NET 2.0のGetSchemaメソッドが返すメタデータを取得するための問合せをカスタマイズするXMLファイルの名前を指定します。MetaDataXmlは、構成ファイルでのみ設定できます。

構成サポート:

XMLファイルのみ

有効な値:

XMLファイルの完全ファイル名。

デフォルト: なし

PerformanceCounters

接続プーリングのパフォーマンス・カウンタの公開を有効または無効にします。複数のパフォーマンス・カウンタは、有効な値を追加することで取得できます。

構成サポート:

WindowsレジストリおよびXMLファイル

有効な値:

0: 有効ではありません。

1: Oracle Databaseで毎秒確立されるセッション数。

2: Oracle Databaseから毎秒切断されるセッション数。

4: 接続プールから毎秒確立されるアクティブな接続数。

8: 接続プールから毎秒戻されるアクティブな接続数。

16:アクティブな接続の合計数。

32: 非アクティブな接続プール数。

64: 使用中の接続の合計数。

128: すべての接続プールで使用可能な接続の合計数。

256: プールされているアクティブな接続の数。

1024: プールされていないアクティブな接続の数。

2048: まもなくプールで利用可能になる接続数。ユーザーはこれらの接続をクローズしましたが、使用可能な接続としてプールに戻される前の、トランザクション完了などのアクション待ちになっています。

4095: 前述のすべて

デフォルト: 0

PromotableTransaction

最初の接続がTransactionScopeオブジェクトに関与するときに使用されるトランザクションのタイプを指定します。

構成サポート:

Windowsレジストリ、XMLファイルおよびpromotable transaction接続文字列属性

有効な値:

local: TransactionScopeオブジェクトで開いた最初の接続は、ローカル・トランザクションを使用します。

promotable: 同じTransactionScopeオブジェクトで開いた最初の接続およびすべての後続の接続は、同じ分散トランザクションに登録されます。

デフォルト: promotable

SelfTuning

ODP.NETアプリケーションに対して自動チューニングが有効かどうかを指定します。

構成サポート:

Windowsレジストリ、XMLファイルおよびSelf Tuning接続文字属性

有効な値:

0: 自動チューニングは無効です。レジストリまたはXMLファイルで使用されます。

false: 自動チューニングは無効です。Self Tuning接続文字列属性で使用されます。

1: 自動チューニングは有効です。レジストリまたはXMLファイルで使用されます。

true: 自動チューニングは有効です。Self Tuning接続文字列属性で使用されます。

デフォルト: 1

StatementCacheSize

各接続についてデータベースでキャッシュされるカーソルおよび文の数を指定します。この設定は、接続文字列のStatement Cache Size属性に対応します。値が0を超える場合も文のキャッシングが有効になります。

構成サポート:

Windowsレジストリ、XMLファイルおよびStatement Cache Size接続文字列属性

有効な値:

0 <= n <= init.oraデータベース構成ファイルで設定されるOPEN_CURSORSパラメータの値。

nは設定する数値です。

デフォルト: 0

StatementCacheWithUdts

SELECT文を実行したときに取得されるOracle UDTが、文のキャッシュ内の文とともにキャッシュされるどうかを指定します。この設定は、アプリケーションのメモリーの使用量およびパフォーマンスに影響します。

構成サポート:

WindowsレジストリおよびXMLファイル

有効な値:

0: Oracle UDTは文とともにキャッシュされません。

1: Oracle UDTは文とともにキャッシュされます。

デフォルト: 1

ThreadPoolMaxSize

プロセス内で使用可能な各プロセッサに対するワーカー・スレッドのデフォルトの最大サイズを指定します。この値は、ODP.NETにおける、このスレッド・プールを使用した接続の作成、コマンドの実行のタイムアウト、外部プロシージャ(extproc)のパフォーマンスに影響を与える場合がありますが、スレッド・プールの最大サイズを必要以上に増加させると、パフォーマンス上の問題が発生する可能性があります。

構成サポート:

WindowsレジストリおよびXMLファイル

有効な値:

0 <= n <= int.MaxValue: ODP.NETは、値nを使用してスレッド・プールの最大サイズをリセットできます。この値が無効の場合、ODP.NETのリセット操作は無視されます。たとえば、nがシステムで使用可能なプロセッサ数より少ない場合などです。この場合の結果は、値が-1の場合と同じになります。

-1: スレッド・プールの最大サイズをそのままにします。

デフォルト: -1(このレジストリ・エントリはデフォルトでは作成されません)

ODAC 2007より前またはリリース11.1.0.6.20より前のリリースでは、ODP.NETは、OracleCommand.CommandTimeoutプロパティが0より大きい値に設定されている場合、スレッド・プールの最大サイズをint.MaxValueにリセットすることに注意してください。この誤った動作は修正され、スレッド・プールの最大サイズはOracleCommand.CommandTimeoutによって変更されなくなりました。

TraceFileName

トレース情報のロギングに使用されるファイル名を指定します。

構成サポート:

WindowsレジストリおよびXMLファイル

有効な値:

有効なディレクトリの場所およびファイル名。

デフォルト: c:\odpnet2.trc(.NET Framework 2.0の場合)

TraceLevel

ODP.NETのトレース・レベルを指定します。すべてのオブジェクトに対するすべての開始および終了コールをトレースするのは過剰になる場合があるため、TraceLevelは、トレース対象をプロバイダの特定の領域に制限するように指定します。各有効値は、指定可能なトレース・レベルを示します。有効値を追加すれば、複合されたトレース・レベルを取得できます。

構成サポート:

WindowsレジストリおよびXMLファイル

有効な値:

0: なし

1: 開始、終了およびSQL文の情報

2: 接続プーリング統計情報

4: 分散トランザクション(登録および登録解除)

8: 非管理例外におけるユーザーモード・ダンプの作成

16: HAイベント情報

32: ロード・バランシング情報

64: 自動チューニング情報

127: 前述のすべて

デフォルト: 0

注意: ODP.NETは、値に対するビットのチェックは行いません。トレースを有効にすると、トレース・ファイルへのロギングがODP.NETのパフォーマンスに影響する可能性があります。

注意: ユーザーモード・ダンプの作成には、dbghelp.dllバージョン 5.1.2600.0以上が必要です。

TraceOption

トレース情報を1つのファイルに記録するか、スレッドごとの複数のファイルに記録するかを指定します。単一トレース・ファイルを指定した場合は、TraceFileNameに指定されたファイル名が使用されます。複数トレース・ファイル・オプションが要求された場合は、指定されたファイル名にスレッドIDが付加され、スレッドごとにトレース・ファイルが作成されます。

構成サポート:

WindowsレジストリおよびXMLファイル

有効な値:

0: 単一のトレース・ファイル

1: 複数のトレース・ファイル

デフォルト: 0

UdtCacheSize

ODP.NETがOracle UDTを取得して操作するために使用する各接続のオブジェクト・キャッシュのサイズをKB単位で指定します。

構成サポート:

WindowsレジストリおよびXMLファイル

有効な値:

0 <= n <= 4194303で、nは設定する数値です。

デフォルト: 4096

UDT Mapping

カスタム・タイプとデータベースの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="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>

Oracle Data Provider for .NET管理対象ドライバの構成

ODP.NET管理対象ドライバは、.NET構成ファイルベースのmachine.configapplication.configweb.configの設定をサポートしています。ただし、Windowsレジストリベースの構成はサポートしていません。.NET構成ファイルでのODP.NET管理対象ドライバの設定は、ODP.NET管理対象外ドライバの設定と似ているため簡単に移行できます。

ODP.NET管理対象外ドライバの構成ファイル内のセクション名<oracle.dataaccess.client>は、ODP.NET管理対象ドライバでは<oracle.manageddataaccess.client>となります。通常は、ODP.NET管理対象ドライバを使用する.NET構成ファイルでは、次に示すサブセクションの一部またはすべてを、<oracle.manageddataaccess.client>セクションの<version>サブセクション内にネストします。タグ名の大文字と小文字は区別されますが、属性名は区別されません。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        ...
        ...
      </dataSources>
      <settings>
        ...
        ...
      </settings>
      <LDAPsettings>
        ...
        ...
      </LDAPsettings>
      <implicitRefCursor>
        ...
        ...
      </implicitRefCursor>
      <edmMappings>
        ...
        ...
      <edmMappings>
    </version>
    <version number="4.112.3.60">
      <dataSources>
        ...
        ...
      </dataSources>
      <settings>
        ...
        ...
      </settings>
      <LDAPsettings>
        ...
        ...
      </LDAPsettings>
      <implicitRefCursor>
        ...
        ...
      </implicitRefCursor>
      <edmMappings>
        ...
        ...
      <edmMappings>
    </version>
  </oracle.manageddataaccess.client>
</configuration>

次の各項では、ODP.NET管理対象ドライバの構成設定について説明します。この属性の多くはODP.NET管理対象外ドライバと同じものです。属性の詳しい説明は、表2-1を参照してください。

versionセクション

versionサブセクションには、アプリケーションに必要なすべての情報をグループ化します。<version number="X">の各セクションのパラメータは、ODP.NET管理対象ドライバのバージョンXに適用されます。たとえば、<version number="4.112.3.60">セクションのパラメータは、ODP.NET管理対象ドライバのアセンブリ4.112.3.60を使用するアプリケーションのみに適用されます。

バージョン固有のセクションとは別に、汎用セクションとして<version number="*">が含まれる場合もあります。このセクションのパラメータは、ODP.NET管理対象ドライバのすべてのバージョンに適用されます。バージョン固有のセクションで指定したパラメータは、汎用セクションのパラメータよりも優先されます。次に、versionセクションの例を示します。

<oracle.manageddataaccess.client>
  <version number="*">
     <settings>
          <setting name="TraceOption" value="1"/>
          <setting name="PerformanceCounters" value="0" />
     </settings>
  </version>
  <version number="4.112.3.60">
     <settings>
          <setting name="PerformanceCounters" value="4095" />
     </settings>
  </version>
</oracle.manageddataaccess.client>

ODP.NET管理対象ドライバ4.112.3.60を参照するアプリケーションの場合は、次のような値セットになります。

  • TraceOption = 1

  • PerformanceCounters= 4095

dataSourcesセクション

このセクションは<version>セクション内にのみ出現します。このセクションには様々なデータソース・エイリアスとそれに対応するデータ・ディスクリプタ間のマッピング情報を記述します。次に例を示します。

<dataSources>
  <dataSource alias="inst1" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)......)))"/>
  <dataSource alias="inst2" descriptor="(DESCRIPTION= ......)))"/>
</dataSources>

接続文字列のData Source属性で指定したデータソース・エイリアスは、次の優先順序で解決されます。

  1. .NET構成ファイルの<oracle.manageddataaccess.client>セクションにあるdataSourcesセクション内のデータソース・エイリアス。

  2. .NET構成ファイルのTNS_ADMINで指定した場所にあるtnsnames.oraファイル内のデータソース・エイリアス。

  3. .exeと同じディレクトリにあるtnsnames.oraファイル内のデータソース・エイリアス。


注意:

「データソース」の接続文字列属性は、データソース・エイリアスのかわりに、完全なディスクリプタや簡易接続構文で設定することもできます。前述の優先順位のルールが適用されるのは、データソース・エイリアスを解決するときのみです。

ODP.NET管理対象ドライバは、すべての別名エントリを、アプリケーションの起動時に検出されたapp.configweb.configmachine.config、およびtnsnames.oraファイルから読み込み、キャッシュします。ただし、LDAPサーバーで定義された別名は、オンデマンドで解決およびキャッシュされます。アプリケーションが使用するそれぞれの一意の別名は、LDAPサーバーに対して別名解決問合せが実行され、その別名に関連付けられている完全なディスクリプタが取得されるとキャッシュされます。

アプリケーションの開発中に、別名設定を変更または追加する必要がある場合、アプリケーションを再起動するのではなく、OracleDataSourceEnumerator.GetDataSources()の使用を検討してください。このメソッドを呼び出すと、tnsnames.oraファイルから読み込んだ既存のキャッシュ・エントリと、LDAPサーバーから取得したすべての別名が消去されます。次に、tnsnames.oraファイルが再解析され、そのエントリがすべて再キャッシュされます。app.configweb.config、およびmachine.configのエントリはアプリケーションの起動時に一度のみ読み込まれて内容が保持され、OracleDataSourceEnumerator.GetDataSources()を呼び出しても再解析されません。

OracleDataSourceEnumerator.GetDataSources()メソッドの呼出しは、接続プールに影響します。これは、指定された接続プールに対して最初の接続が作成された後で、一意の接続文字列ごとに作成された接続プールによって、解決された完全なディスクリプタ情報がキャッシュされるためです。その後、接続プールは、後続のあらゆる接続作成に関して、キャッシュされた完全ディスクリプタ情報を使用します。このため、別名が以前と異なるデータベースを指しているアプリケーションの実行中に、tnsnames.oraまたはLDAPエントリが修正されたアプリケーションに関しては、OracleDataSourceEnumerator.GetDataSources()メソッドを呼び出して古いキャッシュ・エントリを解決する必要があります。次に、ClearPool(OracleConnection)インスタンス・メソッドまたはClearAllPools()静的メソッドを呼び出して、既存の接続を削除して、OracleDataSourceEnumerator.GetDataSources()の呼出しによって読み込まれた新しい完全ディスクリプタ値を取得する必要があります。この体系に従うと、接続プールのすべての接続で、別名に関連付けられている新しい完全ディスクリプタが使用され、接続プールのすべての接続が、同一のデータベースに対して確立されることが保証されます。

ディスクリプタの設定内では、次のキーワードをサポートしています。

  • ADDRESS

  • ADDRESS_LIST (注意: フェイルオーバーのみをサポートしています)

    Oracle RACデータベースに接続する際のロードのバランスについては、SCANリスナーとRuntime Load Balancingを使用することをお薦めします。

  • DESCRIPTION

  • DESCRIPTION_LIST (注意: フェイルオーバーをサポートしていますが、Address_listのロード・バランスはサポートしていません)

  • HOST (注意: <hostname>、<IPv6 literal>、<IPv4 literal>をサポートしています)

  • IP (注意: 「ループバック」をサポートしています)

  • PROTOCOL (注意: tcpとtcpsをサポートしています)

  • SDU (注意: 256から65536までをサポートしています)

  • SECURITY: SSL_VERSION (注意: sqlnet.ora:ssl_versionをオーバーライドします)

  • TRANSPORT_CONNECT_TIMEOUT (注意: tcp.connect_timeoutをオーバーライドします)


注意:

  • SSLは、メソッドMCSおよびFILE経由でサポートしています。

  • NTS認証のみをサポートしています。RADIUSまたはKerberos5認証はありません。

  • SQL*Net、簡易接続ネーミングおよびLDAP (つまりActive DirectoryおよびOracle Internet Directory)のみをサポートしています。

  • bequeath (beq)はサポートしていません。かわりにデフォルト・アドレスは、ポート1521と環境変数(ORACLE_SID)のOracleサービス名を使用したTCPループバックになります。



関連項目:

各属性の詳細は、『Oracle Database Net Servicesリファレンス』を参照

「データソース」の接続文字列属性を指定せずに、ローカル・データベースに接続するための要件は次のとおりです。

  • リスナーが稼働している必要があります。

  • ORACLE_SID環境変数が適切に設定されている必要があります。


注意:

「データソース」の接続文字列属性を指定しない場合、プロトコルは「tcp」に、ポートは「1521」にそれぞれデフォルト設定されます。

settingsセクション

このセクションは<version>セクション内にのみ出現します。このセクションには、ODP.NET管理対象ドライバに固有のすべての設定を記述します。次に、settingsセクションの例を示します。

<settings>
  <setting name="TraceLevel" value="7" />
  <setting name="TraceOption" value="1"/>
  <setting name="TNS_ADMIN" value="C:\oracle\work"/>
</settings>

ODP.NETリリース12.1.0.2以上では、InitialLobFetchSize-1に設定したときの新しいデフォルト動作が導入されました。新しいデフォルト値はLegacyEntireLOBFetch = 0です。以前の動作を使用する場合は、ODP.NET構成でLegacyEntireLobFetch = 1に設定します。詳細は、「InitialLONGFetchSizeを-1に設定」を参照してください。

サポートされるODP.NET管理対象ドライバの構成設定:

  • DbNotificationPort

  • DemandOraclePermission

  • FetchSize

  • LDAP_ADMIN: ldap.oraの場所を指定します。LDAP_ADMIN設定とTNS_ADMIN設定の組合せによって、ldap.oraの検索順序が設定されます。

    ldap.oraは次の順序で検索されます。

    1. app/web.config内のTNS_ADMIN

    2. app/web.config内のLDAP_ADMIN

    3. 現行作業ディレクトリ

    4. %ORACLE_HOME%\network\admin

    5. %ORACLE_HOME%\ldap\admin

  • LegacyEntireLOBFetch

  • MaxStatementCacheSize

  • MetaDataXml

  • NAMES.DIRECTORY_PATH: デフォルトの検索順序は、TNSNAMESそしてEZCONNECTです。TNSNAMES、LDAPおよびEZCONNECTのみがサポートされている名前解決メソッドですが、これらの優先順位は修正できます。

  • NAMES.LDAP_AUTHENTICATE_BIND

  • NAMES.LDAP_CONN_TIMEOUT

  • NODELAY

  • ORACLE_SID

  • PerformanceCounters

  • RECEIVE_BUF_SIZE - TCPのSO_RECVBUF、すなわちTCPソケットのローカル側に伴うバッファ・スペースの合計を設定します。

  • SelfTuning

  • SEND_BUF_SIZE - TCPのSO_SENDBUF、すなわちTCPソケットのローカル側に伴うバッファ・スペースの合計を設定します。

  • SQLNET.AUTHENTICATION_SERVICES: サポートされている値は、NTS、NULLまたは未指定です。

  • StatementCacheSize

  • SSL_VERSION

  • TNS_ADMIN : tnsnames.oraldap.orasqlnet.oraのうち、1つ(または複数)が置かれている場所。


    注意:

    ODP.NET管理対象ドライバとOracleホームを一緒にインストールすると、TNS_ADMIN設定が自動的に.NET Frameworkのmachine.configファイル内に作成されます。TNS_ADMIN設定はディレクトリ<ORACLE_HOME>\Network\Admin\となるように設定され、ここがデフォルトのマシンの場所となってtnsnames.ora、sqlnet.oraおよびldap.oraの各ファイルがホスティングされます。

  • TraceFileLocation: トレース・ファイルの保存先ディレクトリ(たとえば、D:\traces\)。TraceFileNameをサポートするODP.NET管理対象外ドライバの場所とは異なります。

  • TraceLevel: 1 = パブリックAPI、2 = プライベートAPI、4 = ネットワークAPI/データ。これらの値のいずれか1つを指定できます。すべてを有効にするには、TraceLevel7に設定します。エラーが常にトレースされます。

  • TraceOption

  • TCP.CONNECT_TIMEOUT

  • WALLET_LOCATION : Microsoft Certificate Store (MCS)およびファイル・システム・ウォレットをサポートしています。

Oracle Advanced Security Option (ASO)暗号化はサポートされません。SQLNET.ENCRYPTION_SERVERrequiredに設定することは、クライアント接続確立失敗の原因となるため、サポートされていません。SQLNET.ENCRYPTION_SERVERを設定しないこと、および他の有効な値に設定することはサポートされています。

ODP.NET管理対象プロバイダでサポートされるのは、ASO NTS認証アダプタのみです。データベース・サーバーがWindows上にあり、NTS外部認証をサポートしており、SQLNET.AUTHENTICATION_REQUIREDtrue1またはonに設定されていることが必要です。ODP.NET管理対象ドライバ・クライアントも、NTS外部認証を利用する必要があります。その他のASO NTS接続シナリオは、クライアントとサーバーがASO認証メカニズムについて合意することができないため、すべて失敗します。

Kerberos NTS外部認証はサポートされません。NTS外部認証は、Microsoft NT LAN Manager (NTLM)経由でのみサポートされます。


関連項目:

『Oracle Database Net Servicesリファレンス』

LDAPsettingsセクション

このセクションは<version>セクション内にのみ出現します。このセクションには、ODP.NET管理対象ドライバに固有のすべてのLDAP設定を記述します。次に、<LDAPsettings>セクションの下位にある<LDAPsetting>サブセクションの例を示します。

<LDAPsettings>
  <LDAPsetting name="DIRECTORY_TYPE" value="AD" />
  <LDAPsetting name="DEFAULT_ADMIN_CONTEXT" value="dc=Oracle,dc=com"/>
</LDAPsettings>

Lightweight Directory Access Protocol

ODP.NET管理対象ドライバでは、LDAPサーバー/サービス、特にMicrosoft Active DirectoryおよびOracle Internet Directory (OID)によるTNS別名解決をサポートしています。TNS別名解決は、LDAPsettingsセクションまたはldap.oraファイルの設定を使用する場合に発生します。LDAPsettingsセクションの設定は、ldap.oraの設定よりも優先されます。

Active Directoryについて、ldap.oraに必要なのは、DIRECTORY_TYPEおよびDEFAULT_ADMIN_CONTEXTパラメータのみです。DIRECTORY_SERVERSパラメータが欠落しているか、または値がない場合、カレント・ドメインのデフォルトLDAPサーバーが使用されます。

OIDに対する構成を完了するには、すべてのldap.oraパラメータを有効な値で設定する必要があります。

ODP.NET管理対象ドライバとODP.NET管理対象外ドライバでは、名前解決にLDAPを使用する場合に、同じレベルのセキュリティをサポートしています。


MicrosoftActive Directory
暗号化 なし SSL
認証 匿名 サポート対象外
ドメイン・ユーザー


Oracle Internet Directory
暗号化 なし SSL
認証 匿名 匿名
ウォレット

注意: Oracle Internet Directory向けのウォレット・ベースの認証は、このリリースではサポートしていません。



関連項目:

  • ディレクトリ使用パラメータの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。

  • ネットワーク・アドレスの管理の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。


implicitRefCursorセクション

このセクションは<version>セクション内にのみ出現します。このセクションには、暗黙的にバインドする必要のあるREF CURSORパラメータ関連のすべての情報を記述します。次に、<implicitRefCursor>セクションの例を示します。

<implicitRefCursor>
  <storedProcedure schema="USERREFCUR" name="TestProc1">
    <refCursor name="Param3">
     <bindInfo mode="Output"/> 
     <metadata columnOrdinal="0" columnName="DEPTNO" baseColumnName="DEPTNO" baseSchemaName="USERREFCUR" baseTableName="DEPT" nativeDataType="number" providerType="Int32" dataType="System.Int16" columnSize="2" allowDBNull="true" />
     <metadata columnOrdinal="1" columnName="DNAME" baseColumnName="DNAME" baseSchemaName="USERREFCUR" baseTableName="DEPT" nativeDataType="varchar2" providerDBType="String" columnSize="30" />
    </refCursor>
    <refCursor name="param2">
      <bindInfo mode="Output"/>
      <metadata columnOrdinal="0" columnName="EMPNO" baseColumnName="EMPNO" baseSchemaName="USERREFCUR" baseTableName="EMP" nativeDataType="number" providerType="Int32" dataType="System.Int16" columnSize="4" allowDBNull="false" />
    </refCursor>
   </storedProcedure>
 
   <!--Next stored procedure information-->
   <storedProcedure name="TestProc2">
      ...
      ...
   </storedProcedure>
</implicitRefCursor>

distributedTransactionセクション

このセクションは<version>セクション内にのみ出現します。このセクションには、分散トランザクションに関するすべての情報を記述します。次に、distributedTransactionセクションの例を示します。

<distributedTransaction>
  <setting name="OMTSRECO_IP_ADDRESS" value="my-pc" />
  <setting name="OMTSRECO_PORT" value="2040" />
  <setting name="ORAMTS_SESS_TXNTIMETOLIVE" value="240" />
</distributedTransaction>

OMTSRECO_IP_ADDRESS: データベースのインダウト・トランザクションを解決するために、OraMTS Recoveryサービスを実行するマシン名(またはIPアドレス)を指定します。デフォルト値はローカル・マシンの名前です。

OMTSRECO_PORT: データベースのインダウト・トランザクションを解決するために、OraMTS Recoveryサービスをリスニングするポートを指定します。デフォルト値は2030です。

ORAMTS_SESS_TXNTIMETOLIVE: トランザクションをデータベースからデタッチまたは登録解除してから、非アクティブのままにする時間を秒単位で指定します。この時間を超過すると、トランザクションはプロバイダによって自動的に終了されます。デフォルトは120秒です。

edmMappingsセクション

このセクションは<version>セクション内にのみ出現します。このセクションには、EDMマッピングに関連するすべての情報を記述します。次に、edmMappingsセクションの例を示します。

<edmMappings>
  <edmMapping dataType="number">
    <add name="bool" precision="1"/>
    <add name="byte" precision="2" />
    <add name="int16" precision="5" />
  </edmMapping>
</edmMappings>

onsConfigセクション

Oracle Notification Service (ONS)を構成する場合、ローカルまたはリモートのいずれかの構成を選択できます。リモート構成は、スタンドアロンのクライアント・アプリケーションに適した構成です。12cリリース1 (12.1)より前のリリースでは、このセクションはONSの通知を受信するために必須でした。12.1では、このセクションがオプションになり、ONSのデーモンに関する情報はサーバー自体で受信します。ただし、ODP.NETは、サーバーから受信する<host:port>ペアに加えて、このセクションにユーザーが指定する<host:port>ペアからのすべてのイベントをリスニングします。

ローカル構成の場合は、ODP.NETがローカルのONSデーモンから直接イベントを受信できるように、ODP.NETの稼働ノードにONSが構成されており、利用可能であることを確認してください。クライアント側のONSデーモン構成については、「クライアント側のONSデーモン構成」を参照してください。ローカル構成のサンプル書式を次に示します。

<onsConfig configFile="C:\temp\test.config" mode="local">
</onsConfig> 

注意:

.NET構成ファイルで指定するconfigFileは、ローカルのONSデーモンが使用するons.configに指定したのと同じ値をlocalportremoteportに指定する必要があります。これにより、ローカルのONSデーモンからイベントを受信する機能がアプリケーションで有効になります。

リモート構成は、リモート・マシンで実行されているONSデーモンからアプリケーションが直接ONSイベントを受信する場合に使用します。クライアント側にONSデーモンを置く必要がないため、そのプロセスを管理しなくて済むことが、この構成の利点の1つです。

リモート構成のサンプル書式を次に示します。

  <onsConfig mode="remote">
        <ons database="db1">
          <add name="nodeList" value="racnode1:4100, racnode2:4200" />
        </ons>
        <ons database="db2">
          <add name="nodeList" value=" racnode3:4100, racnode4:4200" />
        </ons>
      </onsConfig>

リモート構成の場合、そのアプリケーションでは、接続する可能性のあるすべてのデータベースに対して<host>:<port>値を指定する必要があります。<host>:<port>値のペアは、ONSデーモンがリモート・クライアントと通信する様々なOracle RACノードのポートを表します。

クライアント側のONSデーモン構成

ONS構成は、ONSの構成ファイルORACLE_HOME/opmn/conf/ons.configを使用して制御します。このファイルは、ONSデーモンに動作方法を指示します。SRVCTLユーティリティを使用して、ONSデーモンを起動および停止できます。これは、サーバー・インストール中にデフォルトで各ノードにインストールされます。SRVCTLユーティリティの詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

ons.config内の構成情報は、単純な名前と値のペアで定義されています。ONS.configの例を次に示します。

# This is an example ons.config file
#
# The first three values are required
localport=4100
remoteport=4200
nodes=racnode1.example.com:4200,racnode2.example.com:4200

ons.configファイルのパラメータには、必須のものとオプションのものがあります。表2-2は必須のONS構成パラメータを示し、表2-3はオプションのONS構成パラメータを示します。

表2-2 必須のONS構成パラメータ

パラメータ 説明

localport

ローカル・クライアントと通信するために、ONSがローカル・ホスト・インタフェースでバインドするポート。

たとえば、localport=4100です。

remoteport

他のONSデーモンと通信するために、ONSがすべてのインタフェースでバインドするポート。

たとえば、remoteport=4200です。

nodes

通信相手である他のONSデーモンのリスト。ノード値は、ホスト名またはIPアドレスにポートを追加したもののカンマ区切りのリストとして指定します。提供するポート値は、各ONSインスタンスがリスニングしているリモート・ポートです。全ノードで同一のファイルを維持するために、現行のONSノードのhost:portをノード・リストに含めることも可能です。リストの読取り時には、これは無視されます。

たとえば、nodes=myhost.example.com:4200,123.123.123.123:4200です。

ノード行にリスト表示されているノードは、Oracle RACインスタンス内の個別のノードに対応します。ノードをリストに含めることにより、中間層ノードはOracle RACノードと確実に通信できます。最低1つの中間層ノードと、1つのOracle RACインスタンス内のノードを構成しないと、互いが認識されません。それぞれの側で最低1つのノードが互いを認識していると、すべてのノードが認識されます。各Oracle RACノードのONS構成ファイルでは、すべての単一クラスタおよび中間層ノードをリスト表示する必要はありません。特に、1つのONS構成ファイル・クラスタ・ノードが中間層を認識している場合、クラスタ内のすべてのノードが中間層を認識しています。


表2-3 オプションのONS構成パラメータ

パラメータ 説明

loglevel

ONSがログに記録するメッセージ・レベル。この値は、1(ログに記録されるメッセージ量は最小)から9(ログに記録されるメッセージ量は最大)までの整数値です。デフォルト値は3です。

たとえば、loglevel=3です。

logfile

ONSがメッセージのロギングに使用するログ・ファイル。ログ・ファイルのデフォルト値は$ORACLE_HOME/opmn/logs/ons.logです。

たとえば、logfile=C:\app\user\product\12.1.0\opmn\logs\myons.logです。

walletfile

Oracle Secure Sockets Layer(SSL)がSSL証明書の格納に使用するウォレット・ファイル。ONSでウォレット・ファイルが指定されると、他のONSインスタンスとの通信時にSSLを使用し、接続しようとするすべてのONSインスタンスからSSL証明書の認証を要求します。つまり、1つのONSインスタンスでSSLを有効にする場合、このインスタンスと接続されているすべてのインスタンスでも有効にする必要があります。この値は、ewallet.p12ファイルが存在するディレクトリを指すように設定します。

たとえば、walletfile=C:\app\user\product\12.1.0\opmn\conf\ssl.wlt\defaultです。

useocr

ONSがすべてのOracle RACノードおよびポート番号を、ONS構成ファイルでなくOracle Cluster Registry (OCR)に格納するかどうかを示す、サーバー側での使用のために予約されている値。useocr=onの場合、すべてのOracle RACノードおよびポート番号がOracle Cluster Registry (OCR)に格納されます。

このオプションは、クライアント側では使用しないでください。


ons.configファイルでは、ナンバー記号(#)で始まる行に空白行およびコメントを使用できます。

Oracle Data Provider for .NET管理対象ドライバでのOracle Services for MTSの使用

ODP.NET管理対象ドライバにはOracle Services for MTSがすべて登録されており、コミット機能も含まれているため、管理コードを使用してそれらの機能を実行できます。これまでと同様にOracle Services for MTSリカバリ・サービスは非管理です。

Oracle.ManagedDataAccessDTC.dllは、ODP.NET管理対象ドライバのパッケージに含まれています。このDLLにはOracle Services for MTSの登録とコミット機能があり、ODP.NET管理対象ドライバのアプリケーションで分散トランザクションを使用する場合には、このDLLをOracle.ManagedDataAccess.dllとともにデプロイする必要があります。同じマシンで非管理のデータ・アクセス・ドライバ(ODBCなど)が分散トランザクションを使用する場合にも、非管理のOracle Services for MTSバージョンを平行して実行できます。

Oracle.ManagedDataAccessDTC.dllは、32ビット.NET Frameworkと64ビット.NET Frameworkの2つのバージョンがあり、ODP.NET管理対象ドライバとともにインストールされます。どちらのOracle.ManagedDataAccessDTC.dllも完全管理のDLLですが、Microsoft Distributed Transaction Coordinator (MS DTC)のApplication Program Interface (API)は非管理コードであるため、プラットフォームによって異なります。したがって、ODP.NET管理対象ドライバの登録とコミットのコールでは、32ビットと64ビットのどちらのMS DTCをコールするのかを識別する必要があります。

これらのDLLは次のディレクトリにあります。

  • 32ビット.NET Frameworkの場合: ORACLE_HOME\odp.net\managed\x86

  • 64ビット.NET Frameworkの場合: ORACLE_HOME\odp.net\managed\x64

.NETアプリケーションのターゲット・プラットフォーム(32ビットまたは64ビット)に応じて、適切なディレクトリからOracle.ManagedDataAccessDTC.dllをデプロイしてください。

.NETアプリケーションからはOracle.ManagedDataAccessDTC.dllを直接参照しないでください。これは分散トランザクションの使用時にODP.NET管理対象ドライバによって暗黙的にロードされます。

Oracle Services for MTSリカバリ・サービスを実行するマシンは、ODP.NET管理対象ドライバと同じマシンでなくてもかまいません。管理者は、アプリケーションの.NET構成ファイル内で、リカバリ・サービスを実行するホスト・マシンの名前を指定できます。


関連項目:

ODP.NET管理対象ドライバ用リカバリ・サービスのOracle Services for MTSセットアップに関するOracle Services for MTS

ODP.NET管理対象ドライバとODP.NET管理対象外ドライバの構成の相違点

表2-4に、ODP.NET管理対象ドライバとODP.NET管理対象外ドライバの構成の相違点を示します。

表2-4 ODP.NET管理対象ドライバとODP.NET管理対象外ドライバの構成の相違点

機能カテゴリ ODP.NET管理対象外ドライバと比較した場合の相違点

構成

構成ファイルの書式が異なります。「Oracle Data Provider for .NET管理対象ドライバの構成」を参照してください。

構成

ODP.NET管理対象ドライバに付属するConfigSchema.xsdファイルによってapp.configインテリセンスが有効になります(Visual Studioのスキーマ(XML->Schemas)に追加している場合)。

構成

Windowsレジストリベースの構成はサポートされていません。

構成

Oracle High Availability (HA)とOracle RAC Load Balancing (RLB)の通知にはOracle Notification Service (ONS)を使用します。そのため、HAまたはRLBを使用する場合は、Oracle Database Advanced Queuing (AQ)ではなくONSを使用するデータベースとクライアントを構成します。連続問合せ通知には従来どおりAQを使用することに注意してください。

構成パラメータ

Editionはサポートされていません。

構成パラメータ

CheckConStatusはサポートされていません。

構成パラメータ

DllPathはサポートされていません。

構成パラメータ

SatementCacheWithUdtsはサポートされていません。

構成パラメータ

ThreadPoolMaxSizeはサポートされていません。

構成パラメータ

TraceFileNameTraceFileLocationと置き換えられました。

構成パラメータ

UdtCacheSizeはサポートされていません。

構成パラメータ

UDT Mappingはサポートされていません。

接続文字列

コンテキスト接続はサポートされていません。

接続文字列

Enlist=dynamicの動作はEnlist=falseと同じです。

接続文字列

LegacyTransactionBindingBehavior設定は無視されます。これは常にデフォルト値の1に設定されます。

接続文字列

Promotable Transactionの設定は無視されます。いつでもpromotableに設定することができ、これにより常に昇格がサポートされます。

接続文字列

Statement Cache Purgeはサポートされていません。

接続性

Oracle Times Tenデータベースへの接続はサポートされていません。

パフォーマンス監視

NumberOfStatisConnectionsパフォーマンス・カウンタはサポートされていません。

パフォーマンス監視

パフォーマンス監視のカテゴリ名は「ODP.NET管理対象ドライバ」のみです。

プロバイダ・タイプ

プロバイダ・タイプは、文化に依存しない文字列のみを(コンストラクタ経由で)受け入れて、(ToString()メソッドを使用して)生成します。

トレース

トレース・ファイル名の書式: <process_name>_PID_<process_id>_DATE_<date>_TIME_<time>.trc

トレース

app/web/machine.configTraceLevel設定を変更することで、動的なトレースが有効になります。注意: ASP.NETアプリケーションの場合、この設定によってアプリケーション・ドメインが再利用されます。

トレース

トレース・ファイルの作成場所や、ODP.NET管理対象ドライバでトレース・ファイルを作成するような問題が発生したことを示す、イベントログのエントリが生成されます。