ページの先頭行へ戻る
Linkexpress Transactional Replication option V5.0L60 説明書
FUJITSU Software

11.5.3 ジャーナル取得業務のアプリケーション

ジャーナル取得業務のアプリケーションは、取得定義で指定したSymfoware/RDBのテーブルを更新するアプリケーションです。

ここでは、ジャーナル取得業務のアプリケーションについて説明します。

11.5.3.1 ジャーナルの取得契機

ジャーナル取得機能を起動してからデータベースに接続したアプリケーションのトランザクション処理が、ジャーナルの取得対象となります。したがって、ジャーナル取得業務のアプリケーションは、ジャーナル取得機能が起動してからデータベースに接続するようにします。

データベースを更新するトランザクションがCOMMITした時点で、ジャーナルがジャーナル取得ファイルに格納されます。以下の場合は、トランザクション内で更新されたジャーナル取得対象のテーブルに対するジャーナルは一切取得されません。

また、以下の場合についてもジャーナルは一切取得されません。

"図11.18 ジャーナル取得契機"にジャーナル取得契機を示します。

図11.18 ジャーナル取得契機

この例で示すアプリケーションにおけるテーブルの更新に対するジャーナルの取得結果は、以下のようになります。

11.5.3.2 SQL文の処理結果

ジャーナル取得時に異常が発生した場合は、発行したSQL文が異常終了します。TJNLに起因する異常が発生した場合のSQLSTATE、SQLMSGおよび対処を"表11.24 TJNLに起因するSQL文の異常終了"に示します。"表11.24 TJNLに起因するSQL文の異常終了"にないエラーが発生した場合には、通常のデータベース更新アプリケーションと同様に対処してください。

表11.24 TJNLに起因するSQL文の異常終了

SQLSTATE

SQLMSG

対処

77000

JYP1064E PowerAIM/TJNLジャーナル取得でエラーが発生しました.

コンソールにエラーメッセージが出力されています。"第15章 メッセージ"で該当するエラー番号を参照の上、対処してください。

40702

JYP5200E PowerAIM/TJNLジャーナル取得でTJNLのジャーナル取得データベース“@1@”に空き領域がなくなりました.

以下のいずれかの対処を行ってください。

  • ジャーナル配付機能が停止している場合は、ジャーナル配付機能を起動して、ジャーナル取得ファイルに滞留している未配付のジャーナルを配付する

  • ジャーナル配付機能は運用状態だが、TRMのメッセージ格納域の容量不足などでメッセージが配付できない状態である場合は、その原因を取り除いてジャーナルを配付できるようにする

  • ジャーナル配付機能が運用状態でありジャーナル利用側業務に問題がなければ、ジャーナル取得ファイルの容量を拡張する

11.5.3.3 UPDATE文のジャーナル形式

SQLのUPDATE文によって発生するジャーナルの取得方法を選択することができます。UPDATE文によって発生するジャーナルの取得方法には、以下の2種類があります。

DELETEとINSERTの情報として配付する

DELETEとINSERTの情報として配付する方法では、1件の更新で2件のジャーナルが取得されます。この形式は、更新前の情報と更新後の情報の両方が必要な場合に使用します。

UPDATEの情報として配付する

UPDATEの情報として配付する方法では、更新後の情報だけが取得されます。この形式は、キーとなる項目がジャーナル取得対象となっていて、更新後の情報だけでジャーナル利用側業務が行える場合に使用します。

UPDATE文によって発生するジャーナルの取得方法の指定は、環境作成時や動作環境変更時に行います。環境作成で指定する方法は"11.3.4 環境定義の記述"を、動作環境変更で指定する方法は"11.8.1.3 動作環境変更定義の記述"を参照してください。

11.5.3.4 トランザクション内で取得できるジャーナルの量

1つのトランザクションで取得できるジャーナルのデータ量の上限を設定できます。これにより、ジャーナル提供側アプリケーションの異常による資源の枯渇を抑止できます。データ量の上限は、1トランザクションあたりの最大ジャーナル格納域サイズで決まります。1トランザクションあたりの最大ジャーナル格納域サイズは、環境作成時または動作環境変更時に指定します。

環境作成で指定する方法は"11.3.4 環境定義の記述"を、動作環境変更で指定する方法は"11.8.1.3 動作環境変更定義の記述"を参照してください。

なお、指定された値までジャーナル格納域を拡張しますが、30[KB]単位に拡張するので、実際には指定された値よりやや多いデータ量のジャーナルが取得できます。

1つのトランザクションで発生させることのできるジャーナルのデータ量が上限を超えた場合、発行したSQLはSQLSTATE=77000で異常終了します。