原典情報: $ORACLE_HOME\ODP.NET\doc\readme.txt
このドキュメントには、Oracle Data Provider for .NET(ODP.NET)のドキュメントの補足情報が記載されています。
ODP.NETでは、.NET Framework 2.0以上がサポートされます。 ただし、ODP.NET 11.2.0.1.0は、LINQ対応のデータ・プロバイダではありません。
製品の依存性
ODP.NETには、Oracle Client 11.2.0.1.0またはOracle Instant Client 11.2.0.1.0が必要です。
Oracle Instant Client 11.2.0.1.0は、ODP.NET 11.2.0.1.0の新規インスタンスのインストール時にOracle Universal Installer(OUI)によって自動的にインストールされます。
ポリシーDLL
ODP.NETのインストールでは、ODP.NETのポリシーDLLがGACに配置されるため、新たにインストールしたODP.NETバージョンを使用して既存のアプリケーションを即座に起動できます。 ただし、この操作が不要な場合は、ポリシーDLLをGACから削除してください。
エディションベースの再定義により、アプリケーションの使用中にそのアプリケーションのデータベース・コンポーネントをアップグレードできるため、停止時間を最小化または排除できます。
注意: エディションの詳細は、『Oracle Database管理者ガイド』および『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』(http://www.oracle.com/pls/db112/homepage)を参照してください。
Oracle Database 11.2以上でODP.NET 11.2.0.1.0を使用する場合は、レジストリまたは構成ファイルを介してデプロイメント時にエディションを指定できます。
アプリケーションでは、特定のバージョンのODP.NETに対してデプロイメント時にエディションを指定できます。これを実行するには、HKLM\Software\Oracle\ODP.NET\<version>\Editionレジストリ・エントリ(REG_SZ型)を作成し、有効なエディションの文字列値に設定します。
アプリケーションでは、.NETアプリケーションのapp.configファイルまたはweb.configファイルに次のエントリを追加することで、デプロイメント時にエディションを指定することもできます。 また、machine.configを変更することで、特定のバージョンの.NETフレームワークを使用するすべてのアプリケーションのエディションを指定できます。
次に、.NET 2.0、3.0および3.5の構成ファイルにエディション名「E1」のエディションを指定するコードの一部分を示します。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <oracle.dataaccess.client> <settings> <add name="Edition" value="E1"/> </settings> </oracle.dataaccess.client> </configuration>
注意: ODP.NETでサポートされるのは、デプロイメント時構成のエディションのみです。
ODP.NETでは、プロセスの存続期間中にエディションを変更するALTER SESSIONの使用はサポートされません。
高信頼または中信頼環境のWebアプリケーション用のOraclePermissionの構成
高信頼または中信頼で機能するWebアプリケーションの場合は、アプリケーションでセキュリティ・エラーが発生しないように、適切なweb_<trust level>.configファイルにOraclePermissionを構成する必要があります。 OraclePermissionは、OracProvCfgツールで構成できます。 OraProvCfg.exeによって、指定した.NETフレームワーク・バージョンに関連するweb_hightrust.configとweb_mediumtrust.configの両方に適切なエントリが作成されます。
次に、.NET 2.0 WebアプリケーションのOraclePermissionを構成するためのOraProvCfgツールの使用例を示します。
OraProvCfg.exe /action:config /product:odp /component:oraclepermission /frameworkversion:v2.0.50727 /providerpath:<Oracle.DataAccess.dll full path>
このコマンドの実行により、ASP.NET権限セットの下にあるweb_hightrust.configとweb_mediumtrust.configに次のエントリが作成されます。
<IPermission class="Oracle.DataAccess.Client.OraclePermission, Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" version="1" Unrestricted="true" />
また、エントリを削除する必要がある場合は、OraProvCfgを使用してこれらの構成ファイルからエントリを削除できます。
OraProvCfg.exe /action:unconfig /product:odp /component:oraclepermission /frameworkversion:v2.0.50727 /providerpath:<Oracle.DataAccess.dll full path>
部分信頼環境のWindowsアプリケーション用のOraclePermissionの構成
部分信頼環境で機能するWindowsアプリケーションの場合は、security.configファイルにある適切な権限セットの下にOraclePermissionエントリを指定する必要があります (Security.configは%windir%\Microsoft.NET\Framework\{version}\CONFIGにあります)。 次に、.NET 2.0 Windowsアプリケーションに必要なOraclePermissionのエントリの例を示します。
<IPermission class="Oracle.DataAccess.Client.OraclePermission, Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" version="1" Unrestricted="true" //>
UTF8データベースからLONGデータをフェッチする際に、データ切捨てエラーが発生する可能性があります。
分散トランザクションをプロキシ接続とともに使用する場合は、OraMTSの制限により、クライアントのユーザー・パスワードを指定する必要があります。
分散トランザクションと分離レベル
ODP.NETでは、分散トランザクションに対してコミット読取り分離レベルのみがサポートされます。
32512バイトを超えるPL/SQL LONG、LONG RAW、RAW、VARCHARの各データ型はバインドできません。
OracleCommandのCancelメソッドを起動するか、またはOracleCommandのCommandTimeoutプロパティ値の期限切れによってコマンドの実行を終了すると、本来戻されるORA-01013ではなくORA-00936またはORA-00604が戻される場合があります。
変更通知が不正なポート番号に登録されたときに例外がスローされません。
HKEY_LOCAL_MACHINE\Software\Oracle\NLS_LANGレジストリ・エントリが「NA」に設定されていると、ODP.NETの使用時にORA-12705エラーが発生します。
この問題を排除するには、HKEY_LOCAL_MACHINE\Software\Oracle\NLS_LANGレジストリ・エントリを削除します。
UDTのTimeStamp with Local Time Zone属性
TimeStamp with Local Time Zone型の属性をパラメータとして指定したカスタム・オブジェクトのバインドは、この製品リリースではサポートされていません。 同じ制限が、CollectionのTimeStamp with Local Time Zone要素にも適用されます。
UDTのXMLType属性/要素
ODP.NETでは、XMLTypeを属性または要素として指定したUDTはサポートされません。
OracleAQMessageオブジェクトでSenderIdを指定してエンキューすると、デキューするメッセージの送信者IDには、最終的に@ODP.NEが追加されます。 [Oracle Bug#7315542]
OracleAQMessageオブジェクトで、Delayプロパティ値をデフォルト以外の値に設定したメッセージをエンキューすると、通知を介して渡されるOracleAQMessageAvailableEventArgsのEnqueueTimeプロパティ値が不適切な値になる場合があります。 [Oracle Bug#7361345]
OracleAQDequeueOptions.DeliveryModeをOracleAQMessageDeliveryMode.Bufferedとして指定し、かつOracleAQDequeueOptions.Correlationを指定して、使用可能なメッセージがキューに存在しない場合は、「ORA-00942: 表またはビューが存在しません。」エラーがDequeueメソッド起動またはDequeueArrayメソッド起動からスローされる場合があります。 [Oracle Bug#7343633]
OracleNotificationRequestオブジェクトのGroupingIntervalプロパティが0(ゼロ)に設定されている場合は、アプリケーションでグループ通知を受信しない場合があります。[Oracle Bug#7373765]
リリース9.2データベースで、OracleAQMessageのDelayプロパティを0(ゼロ)以外の値に設定してメッセージをエンキューすると、そのメッセージはWAITING状態のままになります。 [Oracle Bug#8828674、8873837]
パフォーマンス上の理由から、ODP.NETの検出メカニズムを利用するかわりに、構成ファイルにカスタム・タイプ・マッピングを指定することをお薦めします。 詳細は、『Oracle Data Provider for .NET開発者ガイド』の構成ファイルのXMLを使用したカスタム・タイプ・マッピングの指定に関する項を参照してください。