2.12 分散トランザクション

分散トランザクションは1つ以上の文からなり、それらが個別に、またはグループとして、分散データベースの複数ノードのデータを更新します。

ODP.NET管理対象ドライバと管理対象外ドライバは、Microsoft Distributed Transaction Coordinator (MSDTC)およびOracleデータベースと統合されます。MSDTCは、同じSystem.Transactionsオブジェクトに入っているあらゆるリソース・マネージャと連係し、2フェーズ・コミットまたはロールバックをアトミックに実行します。これにより、Oracle分散トランザクションは、ネットワーク全体で正常にコミットまたはロールバックすることができます。

ODP.NETでは、分散トランザクションにコミット読取り分離レベルのみがサポートされています。

注意:

ODP.NET Coreは分散トランザクションをサポートしていません。

2.12.1 Microsoft Distributed Transaction Coordinatorの統合

管理対象ODP.NETには、分散トランザクション登録、コミットおよびロールバックのためにMSDTCとの統合をサポートする、ネイティブで完全な管理対象実装が含まれます。

管理対象外ODP.NETの場合、Oracle Services for Microsoft Transaction (OraMTS)がMSDTCとの統合を提供し、クライアント・コンポーネントがOracleデータベース分散トランザクションに参加できるようになります。OraMTSは、MSDTCに対するOracleデータベースのプロキシとして動作し、Oracle分散データベース・トランザクションを残りの分散トランザクションとともにコミットまたはロールバックできるようにします。

管理対象外ODP.NETは、管理対象または管理対象外のOraMTS実装を使用できます。Oracle RACまたはData Guardからの高可用性を必要とするアプリケーションでは、管理対象OraMTSの使用をお薦めします。

分散トランザクションでネットワーク障害やサーバー・ハードウェア障害などの障害が発生した場合、インプロセス・トランザクションをインダウトにしておくことができます。管理対象および管理対象外のODP.NETはどちらも、OraMTSリカバリ・サービスを使用して、これらのインダウト・トランザクションを解決します。このリカバリ・サービスはWindowsサービスとして実行します。管理者は、OraMTS Windowsリカバリ・サービスをインストールおよび構成して、管理対象と管理対象外のどちらのODP.NETを使用するかについてのリカバリ・シナリオを管理する必要があります。各マシンに必要なリカバリ・サービスは1つのみです。

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

表2-9 分散トランザクションでサポートされるODP.NETのタイプと.NET Frameworkのバージョン

ODP.NETタイプ .NET Frameworkバージョン 分散トランザクション・サポート

管理対象

4.5.2以降

分散トランザクションに対する.NET Frameworkのネイティブ管理対象実装。

管理対象外

4.5.2以降

OraMTS (デフォルト)または管理対象OraMTS実装。Oracle RACまたはData Guardからの高可用性を必要とする管理対象外ODP.NETアプリケーションでは、管理対象OraMTSの使用をお薦めします。

管理対象外

3.5

OraMTS

注意:

.NET Framework 4ファミリ内の.NET Framework 4.5.1以下は、MicrosoftおよびOracleでサポートされていません。

関連項目:

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

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

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

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

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

2.12.3 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をインストールして構成します。

管理対象OraMTSを設定するには、次の手順を実行します。

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

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

関連項目:

.NET構成の設定の詳細は、「distributedTransactionセクション」を参照してください