11.24.1 致命的ではないトランザクション・エラー

トランザクション・エラーが発生すると、tperrno(5)TPETRANが返されます。ただし、このようなエラーの意味は、そのエラーを返す関数によって異なります。次の表は、トランザクション・エラーを返す関数と、考えられるエラーの原因を示しています。

表11-3 トランザクション・エラー

関数 原因
tpbegin() 通常は、トランザクションの開始を試みたときに発生する一時的なシステム・エラーが原因で起こります。呼出しを繰り返し行うと、問題が解決します。
tpcancel() TPNOTRANフラグを設定しないでリクエストを行った後、トランザクション応答を取得するためにこの関数が呼び出されました。
tpresume() 呼出し側が、1つ以上のリソース・マネージャとグローバル・トランザクション外の作業に関与しているため、Oracle Tuxedoシステムがグローバル・トランザクションを再開できません。そのような作業はすべて、グローバル・トランザクションを再開する前に完了している必要があります。ローカル・トランザクションについての呼出し側の状態は、変更されません。
tpconnect()tppost()tpcall()およびtpacall() トランザクションがサポートされていないサービスに対して、トランザクション・モードで呼出しが行われました。サービスには、データベース管理システム(DBMS)にアクセスし、その結果トランザクションがサポートされるサーバー・グループに属するものがあります。そのようなグループに属さないサービスもあります。また、トランザクションがサポートされたサービスには、トランザクションがサポートされていないソフトウェアとの相互運用を必要とするものがあります。たとえば、フォームを出力するサービスの処理が、トランザクションがサポートされていないプリンタで行われる場合があります。トランザクションがサポートされていないサービスは、トランザクションの参加リソースとして動作できない場合があります。

サービスをサーバーやサーバー・グループにグループ分けする作業は、管理タスクの1つです。どのサービスでトランザクションがサポートされているかを確認するには、アプリケーション管理者に問い合せてください。

トランザクション・レベルのエラーをアプリケーション・レベルで修正するには、TPNOTRANフラグを有効にするか、またはトランザクション外でエラーが返されたサービスにアクセスします。