0

Oracle のドキュメントによると、COMMIT_POINT_STRENGTH は、分散トランザクションのコミットの影響を決定するパラメーターですか? アプリケーションに 2 つのデータベース ノードがあり、両方のノードで COMMIT_POINT_STRENGTH が 1 に設定されています。両方のノードに存在するテーブルの 1 つのノードからトランザクションを開始した場合 (シノニムによって)。他のノードがデータのコミットに失敗した場合、トランザクションはどうなりますか?

4

1 に答える 1

0

まず、COMMIT_POINT_STRENGTHは、分散トランザクションのコミットの影響を決定するパラメーターではありません。ドキュメントによると:

分散トランザクションのコミットポイントサイトを決定する値を指定します。の値が最も高いトランザクションのノードはCOMMIT_POINT_STRENGTH、コミットポイントサイトになります。 [...] コミットポイントサイトには、トランザクションのステータスに関する情報が格納されます。分散トランザクション内の他のコンピューターは、Oracleの2フェーズ・コミット中にこの情報を必要とするため、コミット・ポイント・サイトとして常に使用可能なマシンを用意することが望ましいです。

したがって、ノード間の通信が損なわれていない場合、「他のノードがデータのコミットに失敗した場合、トランザクションはどうなりますか? 」という質問に対する答えは、COMMIT_POINT_STRENGTHOracleの2フェーズコミットとは独立しており、その後に続きます。トランザクションは両方でロールバックされます。ノード

于 2012-07-20T16:23:30.257 に答える