ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

2.9 コンテキスト構造体

分散トランザクションでは、データベースが異なるノードにある場合でも、複数のデータベースまたはデータベース・アタッチメントが1つのトランザクションにまとめてグループ化されます。分散トランザクションでのOracle Rdbの使用方法は、『Oracle Rdb7 Guide to Distributed Transactions』を参照してください。

2フェーズ・コミットのプロトコルでは、分散トランザクションの場合でも、トランザクションを永続化する前に必要な処理をすべて確実に完了するために、トランザクションに関与しているユーザーのアクティビティが調整されます。

2フェーズ・コミットのプロトコルは、DECdtmトランザクション・マネージャ・ソフトウェアがインストールされており、それがトランザクション内のすべてのノードで開始されている場合に使用できます。アプリケーションで分散トランザクションを開始する場合は、2フェーズ・コミットのプロトコルを使用します。

アプリケーションでコンテキスト構造体を宣言する場合、ほとんどの実行SQL文に関連付ける必要があります。これは、SQLモジュール言語またはプリコンパイルされたSQLのどちらを使用する場合にも該当しますが、コンテキスト構造体をSQL文に関連付ける方法は、使用するコンパイラによって異なります。

ただし、次のような実行可能文にはコンテキスト構造体を関連付けられません。

埋込みSQL文が分散トランザクションの一部であると指定するには、USING CONTEXT句を使用する必要があります。分散トランザクションでの埋込みSQLの使用の詳細は、第4.1節を参照してください。分散トランザクションのコンテキスト内でSQLによってプロシージャを実行するには、モジュール言語プロシージャでCONTEXT句を使用する必要があります。分散トランザクションでのSQLモジュール言語の使用の詳細は、第3.6節を参照してください。

コンテキスト構造体を渡す際には、次の制限が適用されます。

非実行SQL文にはコンテキスト構造体は関連付けられません。また、複数文プロシージャにSET TRANSACTION文、COMMIT文またはROLLBACK文が含まれている場合は、コンテキスト構造体はこのプロシージャに渡されません。