トランザクションでアプリケーションがホストまたは AS/400 データベース・サーバーにアクセスした場合には、 未確定トランザクションが回復される方法は多少異なります。
ホストまたは AS/400 データベース・サーバーにアクセスするのに、DB2 コネクトが使用されます。 DB2 コネクトに DB2 同期点マネージャーが構成されている場合、 回復ステップは異なります。
ホストまたは AS/400 サーバーにおける未確定トランザクションの回復は、通常、 トランザクション・マネージャー (TM) および DB2 同期点マネージャー (SPM) によって自動的に行われます。 ホストまたは AS/400 サーバーの未確定トランザクションはローカル DB2 のロケーションには資源を保持しませんが、 トランザクションがホストまたは AS/400 サーバーで未確定である間はその位置に資源を保持します。 発見的手法の決定を行う必要があるとホストまたは AS/400 の管理者が判断すると、 ホストまたは AS/400 でトランザクションをコミットするかロールバックするかを決定するために、 管理者はローカル DB2 データベース管理者と連絡をとります (たとえば、電話で)。 これが行われると、LIST DRDA INDOUBT TRANSACTIONS コマンドを使用して、 ローカル DB2 コネクト・インスタンスでのトランザクションの状態を判別することができます。 SNA 通信環境を使用している場合は通常、以下のステップを指針として使用することができます。
db2 => connect to db2spm Database Connection Information Database product = SPM0500 SQL authorization ID = CRUS Local database alias = DB2SPM
db2 => list drda indoubt transactions DRDA Indoubt Transactions: 1.db_name: DBAS3 db_alias: DBAS3 role: AR uow_status: C partner_status: I partner_lu: USIBMSY.SY12DQA corr_tok: USIBMST.STB3327L luwid: USIBMST.STB3327.305DFDA5DC00.0001 xid: 53514C2000000017 00000000544D4442 0000000000305DFD A63055E962000000 00035F
db2 => list drda indoubt transactions SQL1251W No data returned for heuristic query.トランザクションはロールバックされました。
生じたとは考えにくいが可能性はある、別の状況が生じている場合もあります。 正しい luwid と partner_lu を指定した未確定トランザクションが表示されても、 uow_status が "I" の場合は、SPM はトランザクションがコミットされるのか、 ロールバックされるのかを認識しません。 この場合、DB2 コネクト・ワークステーションでトランザクションをコミット、 またはロールバックするために、WITH PROMPTING パラメーターを使用する必要があります。 その後、DB2 コネクトが発見的手法の決定に基づいて、 ホストまたは AS/400 サーバーとの再同期を行えるようにします。
DB2 コネクト パーソナル・エディションまたは DB2 コネクト エンタープライズ・エディションのいずれかからの複数サイト更新で、 DB2 (OS/390 版) を更新するために TCP/IP 接続性が使用されていて、 DB2 同期点マネージャーが使用されない場合は、このセクションの情報を活用してください。 この状態での未確定トランザクションの回復は、 DB2 同期点マネージャーが関係する未確定トランザクションの回復とは異なります。 この環境で未確定トランザクションが発生すると、 その問題の検出元に従い、クライアント、データベース・サーバー、 またはトランザクション・マネージャー (TM) データベース (あるいはそれらの複数の組み合わせ) でアラート項目が生成されます。 アラート項目は、db2alert.log ファイルに保管されます。 アラートについての詳細は、問題判別の手引き を参照してください。
TM および関係するデータベースとその接続すべてが再び使用可能になると、 未確定トランザクションは自動的に再同期化されます。 データベース・サーバーで発見的手法による決定を強制するのではなく、 自動的に再同期が行われるようにする必要があります。 しかし、このようにする場合は、以下のステップをガイドラインとしてください。
注: | DB2 同期点マネージャーは関係していないので、 LIST DRDA INDOUBT TRANSACTIONS コマンドは使用できません。 |
このリストから、発見的手法によって完了させたいトランザクションを識別します。 DISPLAY コマンドの詳細については、 DB2 (OS/390 版) コマンド解説書 を参照してください。 表示される LUWID を、 トランザクション・マネージャー・データベースでの同じ luwid に一致させることができます。
RECOVER コマンドの詳細については、 DB2 (OS/390 版) コマンド解説書 を参照してください。