プライマリ・コンテンツに移動
Oracle® Data Provider for .NET開発者ガイド
ODAC 12c リリース4 (12.1.0.2) for Microsoft Windows
E72575-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

分散トランザクション

ODP.NET管理対象ドライバおよび管理対象外ドライバはリソース・マネージャを提供します。これは、Oracleデータベース・トランザクションを管理し、Microsoft分散トランザクション・コーディネータ(MSDTC)とともに動作してネットワーク全体のアプリケーションに対して原子性と分離を保証します。MSDTCは、同じSystem.Transactionsに入っているあらゆるリソース・マネージャと連係し、2フェーズ・コミットまたはロールバックをアトミックに実行します。これにより、Oracle分散トランザクションは、ネットワーク全体で正常にコミットまたはロールバックすることができます。

Microsoftトランザクション・サーバー用のOracleサービス

Oracle Services for Microsoft Transaction (OraMTS)によって、クライアント・コンポーネントはMSDTCトランザクションでのOracleデータベースへの参加が可能になります。OracleデータベースのMSDTCへのプロキシとして動作し、Oracle分散データベース・トランザクションが他の分散トランザクションと一緒にコミットまたはロールバックできるようにします。

ネットワーク障害やサーバー・ハードウェア障害などの障害が発生した場合、インプロセス分散トランザクションをインダウトにしておくことができます。OraMTSには、このトランザクションを開始したマシンでこれらのトランザクションを解決するリカバリ・サービスがあります。このリカバリ・サービスはWindowsサービスとして実行します。

OraMTS Recoveryサービスを、ODP.NETが稼働していてMSDTCに参加しているすべてのクライアント・マシンにインストールする必要があります。マシンには複数のIPアドレスがある可能性があるため、管理対象ODP.NETアプリケーションの管理者は、アプリケーションの.NET構成ファイルでリカバリ・サービスが稼働しているホスト・マシン名またはIPアドレスを指定できます。ODP.NET管理対象外ドライバは、リカバリ・サービスのIP/マシン名を自動的に解決します。

.NET Framework 4.5.2において、Microsoftは新しいAPIサポートを導入し、これによりOracleはODP.NETトランザクションとMSDTCが連係して動作するように管理対象コールを使用できるようになりました。ODP.NETはこの管理対象コードを管理対象ドライバ(ODAC 12cリリース3以降)および管理対象外ドライバ(ODAC 12cリリース4以降)とともに利用します。

ODP.NET管理対象外ドライバの開発者は最新の.NETフレームワークおよびODP.NETバージョンを使用する際にOraMTSを使用しないこともできますが、リカバリ・シナリオを実現するためにOraMTS Windowsリカバリ・サービスをインストールして構成する必要はあります。


関連項目:

『Oracle Services for Microsoft Transaction Server開発者ガイド for Microsoft Windows』のOracle MTS Recovery Serviceの手動作成に関する項。

ODP.NETタイプ .NET Frameworkバージョン 分散トランザクション・サポート
管理対象 4.5.2以降 分散トランザクションに.NETフレームワークのネイティブ管理対象実装(デフォルト)を使用します。これはオラクル社の推奨アプローチです。
管理対象 4.5.1以下 Oracle.ManagedDataAccessDTC.dllを使用します
管理対象外 4.5.2以降 OraMTS (デフォルト)または管理対象OraMTS実装を使用します。Oracle RACまたはData Guardからの高可用性を必要とする管理対象外ODP.NETアプリケーションでは、管理対象OraMTSの使用をお薦めします。
管理対象外 4.5.1以下 OraMTSを使用します

ODP.NET管理対象ドライバ設定

この項では、ODP.NET管理対象ドライバで分散トランザクションを使用するために必要な設定および構成手順を説明します。

アプリケーションが.NETのネイティブ管理対象分散トランザクション実装(デフォルト)を使用することをお薦めします。これは.NETフレームワーク4.5.2以上で使用できます。アプリケーションでは、.NET構成ファイルのUseManagedDTCパラメータを設定することで、.NETのネイティブ管理対象分散トランザクションまたはOracle.ManagedDataAccessDTC.dllが使用されているかを設定できます。これらの.NETフレームワーク・バージョンで分散トランザクションを構成するには、次の手順を実行します。

  1. OraMTSリカバリ・サービスを作成して設定するか、既存のリカバリ・サービスが実行されていることを確認します。

  2. OraMTSリカバリ・サービスが稼働しているポート番号を指定するには、.NET構成でOMTSRECO_PORTの値を設定します。

かわりに、Oracle.ManagedDataAccessDTC.dllを.NET Framework 4.5.2および管理対象ODP.NETとともに使用することもできます。そのためには、UseManagedDTCtrueに設定し、.NET Framework 4.5.1に関する次の手順を実行します。

.NET Framework 4.5.1以下のアプリケーションでは、次の手順を実行して分散指示の管理対象ODP.NETを設定して構成します。

  1. OraMTSリカバリ・サービスを作成して設定するか、既存のリカバリ・サービスが実行されていることを確認します。

  2. アプリケーションとともにOracle.ManagedDataAccessDTC.dllをデプロイします。

  3. OraMTSリカバリ・サービスが稼働しているポート番号を指定するには、.NET構成でOMTSRECO_PORTの値を設定します。

Oracle.ManagedDataAccessDTC.dllはODP.NET管理対象ドライバに含まれています。このDLLは、MSDTCに対して管理対象外MSDTC COMコールを作成します。これは、このDLLには32ビット・バージョンと64ビット・バージョンがあることを意味します。これらの2つのDLLは同じ名前を共有します。32ビットの.NET Frameworkを使用している場合、32ビットのOracle.ManagedDataAccessDTC.dllをデプロイします。64ビットの.NET Frameworkを使用している場合、64ビットのOracle.ManagedDataAccessDTC.dllをデプロイします。これらのDLLは次のディレクトリにあります。

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

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

ODP.NETインストールにおいて、Oracle.ManagedDataAccessDTC.dllはグローバル・アセンブリ・キャッシュ(GAC)には含まれなくなりました。このDLLを使用するアプリケーションでは、Oracle.ManagedDataAccessDTC.dllはアプリケーション・ディレクトリまたはGACに置く必要があります。

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

特にプラットフォーム・ターゲットがx64またはx86のアプリケーションでは、GACに置かれている場合またはアプリケーション・ディレクトリにある場合、Oracle.ManagedDataAccess.dllOracle.ManagedDataAccessDTC.dllを適切にロードします。

AnyCPUを対象とするアプリケーションでは、アプリケーションによってロードされるOracle.ManagedDataAccess.dllのあるx64およびx86サブディテクトリに対応するOracle.ManagedDataAccessDTC.dllを置く必要があります。ODP.NET管理対象ドライバは、アプリケーションが32ビットまたは64ビットであるかに基づいて、該当するOracle.ManagedDataAccessDTC.dllアセンブリ(32ビットまたは64ビット)をロードします。Oracle.ManagedDataAccessDTC.dllの32ビット・バージョンおよび64ビット・バージョンの両方がGACにある場合、該当するアセンブリが自動的にロードされます。

ODP.NET管理対象外ドライバ設定

この項では、ODP.NET管理対象外ドライバとともに分散トランザクションを使用するために必要な設定および構成手順を説明します。

.NET Framework 4.5.2以上では、ODP.NET管理対象外ドライバはアセンブリ内に管理対象OraMTS実装を組み込みました。OraMTSはODP.NET管理対象外ドライバのデフォルト実装のままですが、Oracle Real Application ClustersまたはOracle Data Guardとともに高可用性FAN操作(HA Events = true)を使用する場合、管理対象OraMTS実装をお薦めします。管理対象OraMTS実装はこの高可用性機能をサポートしますが、従来のOraMTSはサポートしません。

アプリケーションでは、.NET構成ファイルでUseOraMTSManagedパラメータを設定することでOraMTS (デフォルト)または管理対象OraMTSのどちらが使用されているかを設定できます。

ODP.NET管理対象外ドライバのOraMTS実装を使用するリカバリ・サービスを含みOraMTSをインストールして構成します。

.NET Framework 4.5.2以上のアプリケーションでは、従来のOraMTSにかわり管理対象OraMTS実装を使用できます。これを設定するには、次の手順を実行します。

  1. .NET構成ファイルでUseOraMTSManagedtrueに設定します。

  2. OraMTSリカバリ・サービスを作成して設定するか、既存のリカバリ・サービスが実行されていることを確認します。

.NET構成設定の詳細は、"distributedTransaction section"を参照してください。