9.3 トランザクションの中断と再開

場合によっては、実行中のトランザクションから一時的にプロセスを削除し、tpbegin()またはtpresume()を呼び出して、そのプロセスで別のトランザクションを開始した方がよい場合もあります。たとえば、サーバーがデータベースの中央イベント・ログにリクエストを記録する場合、トランザクションが中断してもログ処理をロールバックしたくない場合などです。

Oracle Tuxedoシステムでは、このような場合にクライアントまたはサーバーでトランザクションを中断して再開するtpsuspend(3c)tpresume(3c)という2つの関数が提供されています。この2つの関数を使用すると、次の処理を行うことができます。

  1. tpsuspend()を呼び出して、現在のトランザクションを一時的に中断します。
  2. 別のトランザクションを開始します。(前述の例では、サーバーのイベント・ログへのエントリの書込みが開始されます。)
  3. ステップ2で開始されたトランザクションをコミットします。
  4. tpresume()を呼び出して、元のトランザクションを再開します。