ヘッダーをスキップ
Oracle TimesTen In-Memory Database Java開発者およびリファレンス・ガイド
リリース6.0
B25766-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

グローバル・トランザクションのリカバリ

クラッシュまたは予期しない終了の後にTimesTenデータ・ストアがディスクからロードされ、リカバリが行われると、準備され、コミットされていないすべてのグローバル・トランザクションが保留中(インダウト)の状態のままになります。通常の処理は、すべてのインダウト・トランザクションの処理が解決されるまで有効になりません。次に、この解決手順を示します。

接続およびリカバリが完了すると、TimesTenは、インダウト・トランザクションを確認します。インダウト・トランザクションがない場合は、処理を通常どおり続行します。インダウト・トランザクションがある場合は、他の接続が作成されることもありますが、インダウト・トランザクションが解決されるまで、これらの接続でのすべての処理が事実上禁止されます。他のすべてのODBCまたはJDBCのコールはエラーになります。

Error 11035 - "In-doubt transactions awaiting resolution in recovery
must be resolved first" 
 

インダウト・トランザクションのリストは、xa_recover()のXAまたはJTAの実装によって取得した後、必要に応じて、XAまたはJTAのxa_commit()xa_rollback()またはxa_forget()によって処理できます。

この方法は、トランザクション・マネージャで厳密に制御された状態で動作するシステムに適しています。トランザクション・マネージャは、接続後にまずxa_recover()をコールするためです。

注意: TimesTenでは、サブスクライバへのフェイルオーバーによってグローバル・トランザクションに一貫性がなくなるため、TimesTenリソース・マネージャをレプリケートすることはできません。

経験則リカバリ

トランザクション・マネージャを使用できない場合またはインダウト・トランザクションを解決できない場合は、ttXactAdminユーティリティを使用して、個々のトランザクション・ブランチを個別にコミットまたは強制終了できます。詳細は、TimesTenのリファレンス・ガイドのttXactAdminに関する項を参照してください。

注意: XA標準で定義されたXIDには、long型として定義されたメンバー(formatID、gtrid_length、bqual_lengthなど)があります。これによって、32ビットのクライアント・アプリケーションで64ビットのサーバーに接続する場合またはその逆の場合に問題が発生します。これは、longが、32ビットのプラットフォームでは32ビットの整数になり、64ビットのプラットフォーム(64ビットのWindowsを除く)では64ビットの整数となるためです。したがって、TimesTenは、クライアントまたはサーバーのプラットフォームのタイプに関係なく、これらのXIDメンバーの最小有効32ビットのみを内部的に使用します。TimesTenでは、32ビットの整数に適合しないXIDメンバーの値はサポートされません。