プライマリ・コンテンツに移動

Oracle® Data Provider for .NET開発者ガイド ODAC 12.2c リリース1 (12.2.0.1) for Microsoft Windows E88311-03 |
| 目次 | 索引

前 | 次 |

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

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

ODP.NET管理対象ドライバの構成ファイル・セクション名は、`<oracle.manageddataaccess.client>`です。`<oracle.manageddataaccess.client>`の設定と値は、管理対象外ODP.NETの構成ファイル、`<oracle.unmanageddataaccess.client>`でもサポートされます。この項では、管理対象ODP.NET構成について説明しますが、`<oracle.unmanageddataaccess.client>`にも該当します。`<oracle.unmanageddataaccess.client>`設定は、実際には`<oracle.manageddataaccess.client>`のスーパーセットです。管理対象ODP.NETで使用できない`<oracle.unmanageddataaccess.client>`設定については、Oracle Data Provider for .NET管理対象外ドライバの構成を参照してください。通常は、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.121.2.0">
          <dataSources>
            ...
            ...
          </dataSources>
          <settings>
            ...
            ...
          </settings>
          <LDAPsettings>
            ...
            ...
          </LDAPsettings>
          <implicitRefCursor>
            ...
            ...
          </implicitRefCursor>
          <edmMappings>
            ...
            ...
          <edmMappings>
        </version>
      </oracle.manageddataaccess.client>
    </configuration>

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

## versionセクション

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

バージョン固有のセクションとは別に、汎用セクションとして`<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.121.2.0">
         <settings>
              <setting name="PerformanceCounters" value="4095" />
         </settings>
      </version>
    </oracle.manageddataaccess.client>

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

- `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`接続文字列属性は、データソース・エイリアスのかわりに、完全なディスクリプタや簡易接続構文で設定することもできます。

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

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

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

注意:

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

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

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

- `RETRY_COUNT`: 接続試行を終了するまでに、`ADDRESS`リストを走査する回数を指定します。

- `RETRY_DELAY`: 接続に対する後続の再試行間の遅延時間(秒)を指定します。

  `RETRY_COUNT`および`RETRY_DELAY`は、Oracleのネットワーク層で動作するタイムアウト・パラメータです。それらは、お互いに組み合せて使用​​することを目的としています。これらのパラメータを使用すると、ODP.NETは`ADDRESS_LIST`内のいずれかのアドレスに接続しようとします。リスト全体の接続を試した後に、接続に成功しなかった場合、ODP.NETは`RETRY_DELAY`で指定された秒数を待機してから、再度アドレス・リストを走査します。接続が成功するか`RETRY_COUNT`の制限に達するまで、この動作が繰り返されます。

  たとえば、ODP.NETがリスト上のどのアドレスにも正常に接続できない状態で、`RETRY_COUNT=2`および`RETRY_DELAY=4`であると仮定しましょう。次の手順がトリガーされます。

  1. 接続するアドレス・リストを走査します。

  2. 次の再試行のセットまで4秒間待機します。

  3. アドレス・リストを再度走査します。これは、再試行の最初のセットです。

  4. 次の再試行まで4秒間待機します。

  5. アドレス・リストを再度走査します。これは、再試行の2回目で最後のセットです。

  6. Timeout

  これらのタイムアウト・パラメータは、`Connection Timeout`接続文字列属性などODP.NETアプリケーションのタイムアウトに関係なく機能します。`Connection Timeout`が低い値に設定されている場合、`RETRY_COUNT`および`RETRY_DELAY`試行サイクルが完了する前にトリガーされることがあります。

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

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

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

注意:

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

- Kerberos5およびNTS認証の両方がサポートされています。RADIUSはサポートされていません。

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

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

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

関連項目:

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

管理対象ODP.NETはTNSディスクリプタ・ベースのロード・バランシングをサポートしませんが、`ADDRESS_LIST`および`DESCRIPTION_LIST`を通じてフェイルオーバーはサポートします。

フェイルオーバーのみがサポートされるため、`LOAD_BALANCE`ディレクティブまたは`FAILOVER`ディレクティブを指定する必要はありません。ディレクティブは無視されます。

次の例はフェイルオーバーを利用するTNSディスクリプタを示します。

    (DESCRIPTION=
       (ADDRESS_LIST=
         (ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630))
         (ADDRESS=(PROTOCOL=tcp)(HOST=host2)(PORT=1630))
         (ADDRESS=(PROTOCOL=tcp)(HOST=host3)(PORT=1521)))
       (CONNECT_DATA=(SERVICE_NAME=Sales.us.example.com)))

    (DESCRIPTION_LIST=
     (DESCRIPTION=
      (ADDRESS_LIST=
       (ADDRESS=(PROTOCOL=tcp)(HOST=sales1a-svr)(PORT=1521))
       (ADDRESS=(PROTOCOL=tcp)(HOST=sales1b-svr)(PORT=1521)))
      (CONNECT_DATA=(SERVICE_NAME=sales1.example.com)))
     (DESCRIPTION=
      (ADDRESS_LIST=
       (ADDRESS=(PROTOCOL=tcp)(HOST=sales2a-svr)(PORT=1521))
       (ADDRESS=(PROTOCOL=tcp)(HOST=sales2b-svr)(PORT=1521)))
      (CONNECT_DATA=(SERVICE_NAME=sales2.us.example.com))))

## 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管理対象ドライバの構成設定:

- `BindByName`

- `CPVersion`: ODP.NET管理対象外ドライバが従来の接続プール実装(`Default=1.0`)を使用するか、可用性の高いサポートを備えた最新の接続プール実装(`2.0`)を使用するかを決定します。また、アプリケーションがデータベース常駐の接続プール(DRCP)を使用する場合、または同じプール内の複数のプラガブル・データベースやエディションをホストする場合、最新の接続プール(`2.0`)が必要です。とりうる値は、`1.0`または`2.0`です。

  ODP.NET管理対象ドライバは、最新の接続プール実装のみを使用します。この設定は、.NET Framework 4以上のODP.NET管理対象外ドライバでのみ使用できます。古いバージョンの管理対象外ODP.NETでは使用できません。古いバージョンは、従来の接続プール実装を常に使用します。

  `CPVersion`が明示的に設定されている場合、その設定はすべての接続文字列のプロセス全体で使用されます。

  `CPVersion`が変更されていない(または無効な値が含まれている)場合、指定された接続文字列に対するアプリケーションの最初の管理対象外ODP.NETによって確立された接続は、これらの機能プロパティまたは構成設定を変更することで、DRCP、プラガブル・データベースまたはエディションを使用する場合、`CPVersion`は新しい接続プール実装(`2.0`)を使用するように暗黙的に変更されます。

  `CPVersion 1.0`プールがDRCP、プラガブル・データベースまたはエディション設定を使用しようとすると、アプリケーションが接続をオープンしようとする際にODP.NETによって例外が発生します。

  `CPVersion 2.0`が明示的または暗黙的に使用されている場合、`CPVersion 1.0`と比較して開発者が注意すべき次のようないくつかの違いがあります。

  - `CPVersion 2.0`では、一意の接続文字列ごとに異なる接続プールが作成されます。つまり、余分なスペースによって2つの接続文字列が異なる場合でも、`CPVersion 2.0`では2つの接続プールが作成されます。

  - `CPVersion 2.0`では、接続文字列に「proxy user id」が指定されていない場合、「proxy password」が指定されてもプロキシ接続は作成されません。

  `CPVersion 2.0`がODP.NET管理対象外ドライバによって使用されている場合、接続プールの動作はODP.NET管理対象ドライバが使用する最新の接続プールと同じになります。

- `DbNotificationPort`

- `DemandOraclePermission`

- `Disable_Oob`: アウト・オブ・バンド・データ(デフォルト)で呼び出された場合はTCP/IP緊急データを介して、またイン・バンド・データで呼び出された場合はTCP/IP通常データを介して、それぞれデータベース問合せの実行を中断します。(デフォルト=`off`)。

  Oracleデータベース・クライアントはすべて、ODP.NETコマンド・タイムアウトを介してなど、データベース問合せの実行中断をサポートしています。Windowsベースのデータベース・サーバーはイン・バンド中断しかサポートせず、他の(主としてUNIXベース)のデータベース・サーバーはアウト・オブ・バンド(OOB)とイン・バンドどちらの中断もサポートします。ODP.NET管理対象ドライバはデフォルトでOOB中断を使用し、データベース・サーバーがそれをサポートします。一部のネットワーク・トポロジの場合、データベースまでのルートに関係するルーターまたはファイアウォールが、緊急データまたはイン・バンド・データを削除するように構成されていた可能性があります。緊急データを適切に処理するようにルーターまたはファイアウォールを変更できない場合は、.NET構成パラメータ`Disable_Oob`を`on`に設定すれば、イン・バンド中断を使用するようにODP.NET管理対象ドライバを構成できます。

- `DRCPConnectionClass`: ODP.NET接続で使用されるDRCP接続プールを識別する論理名を指定します。`OracleConnection`オブジェクトの`DRCPConnectionClass`プロパティが設定されていない場合、デフォルトとして使用されます。DRCP以外の接続では無視されます。

  有効な値: 接続クラス名は、最大1024文字の文字列です。デフォルトは、nullです。

- `FetchSize`

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

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

  - `app.config`または`web.config`の`TNS_ADMIN`

  - `app.config`または`web.config`の`LDAP_ADMIN`

  - 現行作業ディレクトリ

  - `%ORACLE_HOME%\network\admin`

  - `%ORACLE_HOME%\ldap\admin`

- `LegacyEntireLOBFetch`

- `MaxStatementCacheSize`

- `MetaDataXml`

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

- `NAMES.LDAP_AUTHENTICATE_BIND`

- `NAMES.LDAP_CONN_TIMEOUT`

- `NODELAY`

- `ORA_DEBUG_JDWP`: Oracle PL/SQL Debuggerおよびデータベースがアプリケーション・コードを変更することなく、自動的に接続できるようにします。値は`host=<``IP_addressまたはhost_name``>;port=<``デバッギング・ポート番号``>`として設定されます。例: `host=localhost;port=1234`

- `ORACLE_SID`

- `PerformanceCounters`

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

- `SelfTuning`

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

- `ServiceRelocationConnectionTimeout`

  秒単位。(`デフォルト` = `90`)。

  サービスが再配置されているためなどデータベース・サービスが使用できなくなるたびに、この時間、アプリケーションでは数多くの接続エラーが発生します。エラーを引き起こす、使用できないサービスに対する不要な接続の試行を避けるために、ODP.NET管理対象ドライバおよび管理対象外ドライバでは、サービスが起動されるか、またはサービスの停止イベントを受け取ってからこのプロパティで指定した時間制限で切れるかのいずれか先にくるほうまで、あらゆる接続の試行をブロックします。指定した時間が経過すると、停止していることがわかっている特定のサービスに対するすべての接続試行がブロックされなくなります。それらのリクエストはサーバーに送信されます。`ServiceRelocationConnectionTimeout`はOracle Fast Connection Failover (`HA Events` = `true`)とあわせてのみ使用できます。.NETアプリケーションでOnce Fast Connection Failoverが有効になると、サービス再配置の接続タイムアウトが自動的に有効になります。`ServiceRelocationConnectionTimeout`値が明示的に設定されていない場合は、デフォルト値が使用されます。計画停止および無計画停止で動作します。

  Oracle Database 12cリリース2以上でOracle Data Guardに接続する場合、データベース管理者は独自のタイムアウト値`drain_timeout`を設定して、リソース排出が完了するまでの秒数を指定できます。`drain_timeout` と`ServiceRelocationConnectionTimeout`の背後にある目的が同じであるため、この設定は、ODP.NETの`ServiceRelocationConnectionTimeout`値によってオプションで使用できます。

  `ServiceRelocationConnectionTimeout`と`drain_timeout`が設定されていない場合、デフォルトの`ServiceRelocationConnectionTimeout`値が使用されます(90秒)。`drain_timeout`のみが設定されている場合には、その値がサービス再配置接続タイムアウトに使用されます。`drain_timeout`のみが設定され0に設定されている場合にも、デフォルトの`ServiceRelocationConnectionTimeout`値が使用されます(90秒)。両方が設定されている場合、`ServiceRelocationConnectionTimeout`の値は`drain_timeout`の値をオーバーライドします。

  `ServiceRelocationConnectionTimeout`自体、`drain_timeout`の値に基づいて設定されます。たとえば、ODP.NET管理者が、サービス再配置接続タイムアウトを`drain_timeout`に50秒加えた値にする場合、`ServiceRelocationConnectionTimeout`は次のように設定されます。

      <setting name="ServiceRelocationConnectionTimeout" value="drain_timeout + 50"/>

  サービス再配置接続タイムアウトは、複数のプラガブル・データベースに接続するプールではサポートされていません。

- `SQLNET.AUTHENTICATION_SERVICES`: サポートされる値は、`Kerberos5`、`NTS`、`TCPS`および`NONE`です。

  管理対象ODP.NETは`NTS`、`Kerberos5`および`TCPS`の外部認証方法をサポートします。この設定は、必要なデータベース認証方法に基づいて設定する必要があります。内部データベース認証が必要な場合、この設定は`NONE`に設定する必要があります。`sqlnet.ora`で設定した例は、次のとおりです。

      SQLNET.AUTHENTICATION_SERVICES = (TCPS)
      SQLNET.AUTHENTICATION_SERVICES = (NTS)
      SQLNET.AUTHENTICATION_SERVICES = (Kerberos5, NTS)
      SQLNET.AUTHENTICATION_SERVICES = (NONE)

  注意:

  `NTS`外部認証方法がサポートされるのは、Windowsベースのクライアントおよびサーバーのみです。

- `SQLNET.CRYPTO_CHECKSUM_CLIENT`: このクライアントがサーバーに接続するときに必要なデータ整合性動作を指定します。サポートされている値は`accepted`、`rejected`、`requested`または`required`です。デフォルト= `accepted`。

- `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`: このクライアントが使用するデータ整合性アルゴリズムを指定します。サポートされる値は`SHA512`、`SHA384`、`SHA256`、`SHA1`および`MD5`です。

- `StatementCacheSize`

- `SSL_SERVER_DN_MATCH`: データベース・サーバーがそのサービス名を照合する際に、識別名(DN)を強制します。(デフォルト=`no`)。

  認証一致を規定している場合は、SSL/TLSによって証明書がサーバーからのものであることが保証されます。認証一致を規定していない場合、SSL/TLSによるチェックは行われますが、一致しているかどうかに関係なく接続は許可されます。一致を規定しないと、サーバーの存在が不明になる場合があります。

  照合を強制する場合にサポートされる値は、`yes` | `on` | `true`です。

  照合を強制しない場合にサポートされる値は、`no` | `off` | `false`です。

  `SSL_SERVER_DN_MATCH`は、多くの場合`SSL_SERVER_CERT_DN`とともに使用されます。`SSL_SERVER_CERT_DN`には、データベース・サーバーの識別名(DN)を指定します。これは、接続記述子で設定できます。

      net_service_name=
        (DESCRIPTION=
          (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
          (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521))
          (CONNECT_DATA=
            (SERVICE_NAME=sales.us.acme.com))
            (SECURITY=
             (SSL_SERVER_CERT_DN="cn=sales,cn=OracleContext,dc=us,dc=acme,dc=com")))

  クライアントは、この情報を使用して、各サーバーに予定しているDNリストを取得し、データベース・サーバーのDNがそのサービス名と一致していることを確認します。このパラメータを`SSL_SERVER_DN_MATCH`とともに使用して、サーバーDNの一致を可能にします。

- `SSL_VERSION`: SSL/TLS接続のバージョンを設定します。デフォルトでは、サポートされているすべてのバージョンが、3.0、1.0、1.1、1.2の順で有効です。

  クライアントとサーバーは、その構成で指定される一般的な変換の中で最も高いバージョンにネゴシエートします。低いバージョンから高いバージョンの順で、3.0 (最低)、1.0、1.1、1.2 (最高)です。

- `TNS_ADMIN`: `tnsnames.ora`、`ldap.ora`、`sqlnet.ora`のうち、1つ(または複数)が置かれている場所。場所は絶対ディレクトリ・パスまたは相対ディレクトリ・パスでもかまいません。

- `TraceFileLocation`: トレース・ファイルの保存先ディレクトリ(たとえば、`D:\traces`)。デフォルトの`TraceFileLocation`は`<Windowsユーザーの一時フォルダ>``\ODP.NET\managed\trace`です。

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

- `TraceOption`

- `TCP.CONNECT_TIMEOUT`

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

- `SQLNET.ENCRYPTION_CLIENT` = 暗号化をオンにするかどうかをネゴシエートします。サポートされている値は、受入済、拒否済、要求済または必須です。

- `SQLNET.ENCRYPTION_TYPES_CLIENT` = 使用する暗号化アルゴリズム。

次の表では、ODP.NET管理対象ドライバの有効な暗号化アルゴリズムを示します。

表2-3 ODP.NET管理対象ドライバの暗号化アルゴリズム

アルゴリズム名 | 有効な値
--- | ---
AES 128ビット鍵 | AES128
AES 192ビット鍵 | AES192
AES 256ビット鍵 | AES256
RC4 128ビット鍵 | RC4_128
RC4 256ビット鍵 | RC4_256
2つの鍵を使用する3DES | 3DES112
3つの鍵を使用する3DES | 3DES168

データ暗号化設定の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

関連項目:

『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を使用する場合に、同じレベルのセキュリティをサポートしています。

表2-4 Microsoft Active Directory: 接続とバインドの暗号化タイプと認証資格証明

暗号化なし | SSL暗号化
--- | ---
匿名認証 | 匿名認証
ドメイン・ユーザー認証 | ドメイン・ユーザー認証

表2-5 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秒です。

- `UseManagedDTC`: `false`に設定されていて.NET Framework 4.5.2以上を使用している場合、ODP.NETは分散トランザクション・サポートに.NET Frameworkを使用します。その他すべてのインスタンスでは、ODP.NETはOracle Services for Microsoft Transaction Serverを使用して分散トランザクションをサポートします。ODP.NET管理対象ドライバのBoolean (`Default = false`)のみです。

- `UseOraMTSManaged`: `true`に設定されていて.NET Framework 4.5.2以上を使用している場合、ODP.NETは分散トランザクションに管理対象コードを使用します。`true`に設定しているが.NET 4.5.1以下が使用されている場合、例外がスローされます。`false`に設定されている場合、ODP.NETはOracle Services for Microsoft Transaction Serverを使用して分散トランザクションをサポートします。ODP.NET管理対象外ドライバのBoolean (`Default = false`)のみです。

## edmMappingsセクション

このセクションは`<version>`セクション内にのみ出現します。このセクションには、EDMマッピングに関連するすべての情報を記述します。`edmMappings`の項のその他の例については、「Oracle Numberデータ型のデフォルト・マッピングおよびカスタマイズ」を参照してください。

## onsConfigセクション

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

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

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

注意:

.NET構成ファイルで指定する`configFile`は、ローカルのONSデーモンが使用する`ons.config`に指定したのと同じ値を`localport`と`remoteport`に指定する必要があります。これにより、ローカルの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デーモン構成

ONS構成は、ONSの構成ファイル`ORACLE_HOME``/opmn/conf/ons.config`を使用して制御します。このファイルは、ONSデーモンにその動作方法を示します。`SRVCTL`ユーティリティを使用して、ONSデーモンを起動および停止できます。これは、サーバー・インストール中にデフォルトで各ノードにインストールされます。

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-6は必須のONS構成パラメータを示し、表2-7はオプションのONS構成パラメータを示します。

表2-6 必須の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-7 オプションの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`ファイルでは、ナンバー記号(#)で始まる行に空白行およびコメントを使用できます。

関連項目:

`SRVCTL`ユーティリティの詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

## Windowsの相対パスとWindows環境変数の構成設定

次の管理対象ODP.NETの構成設定は、Windowsの相対パスと環境変数に対応しています。

- `TraceFileLocation`

- `WALLET_LOCATION`

上の構成パラメータで、ファイルの場所はWindowsの相対パスを使用して設定できます。"`.`"を指定すると、現行の作業ディレクトリを使用するようODP.NETに通知します。サブディレクトリは、そこに追加して指定できます。たとえば`.\mydir`は、現行の作業ディレクトリの下にあるサブディレクトリ`mydir`を意味します。親ディレクトリに移動するには、"`..`"を指定します。

Webアプリケーションの場合、現行の作業ディレクトリはアプリケーション・ディレクトリです。Windowsアプリケーションの場合、`.EXE`の場所が現行の作業ディレクトリです。

Windowsのパスは、"`%`"文字の間でWindows環境変数名を使用して設定することもできます。

たとえば、`%tns_admin%`、`c:\%dir%\my_app_location`、`c:\%top_level_dir%\%bottom_level_dir%`のように指定します。

注意:

- 構成パラメータによって使用される環境変数が何も指定されていない場合は、例外がスローされます。

- 環境変数で、ディレクトリ名を部分的に使用することはできません。たとえば、`c:\my_app_%id%`のような指定です。

- 特定のディレクトリで、複数の変数できます。たとえば、`c:\%top_level_dir%\%bottom_level_dir%`のように指定できます。

関連項目:

Oracleクライアント設定の詳細は、Oracle Database Net Servicesリファレンスで、`sqlnet.ora`のパラメータ、`tnsnames.ora`のローカル・ネーミング・パラメータ、および`listener.ora` Oracle Net Listenerパラメータを扱っている各章を参照