Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー プログラミング » 3 層コンピューティングと分散トランザクション » 分散トランザクション

 

分散トランザクションからのリカバリ

コミットされていない操作の保留中にデータベースサーバーにフォールトが発生した場合、トランザクションのアトミックな状態を保つために、起動時にこれらの操作をロールバックまたはコミットする必要があります。

分散トランザクションからコミットされていない操作がリカバリ中に検出されると、データベースサーバーは DTC に接続を試み、検出された操作を保留または不明のトランザクションに再エンリストするように要求します。再エンリストが完了すると、DTC は未処理操作のロールバックまたはコミットをデータベースサーバーに指示します。

再エンリスト処理が失敗すると、SQL Anywhere は不明の操作をコミットするかロールバックするかを判断できなくて、リカバリは失敗します。データの状態が保証されないことを前提にして、リカバリに失敗したデータベースをリカバリする場合は、次のデータベースサーバーオプションを使って強制リカバリします。

  • -tmf   DTC が特定できないときは、未処理の操作をロールバックしてリカバリを続行します。

  • -tmt   指定した時間内に再エンリストが完了しないときは、未処理の操作をロールバックしてリカバリを続行します。

 参照