ジャーナル取得業務のアプリケーションは、取得定義で指定したSymfoware/RDBのテーブルを更新するアプリケーションです。
ここでは、ジャーナル取得業務のアプリケーションについて説明します。
ジャーナル取得機能を起動してからデータベースに接続したアプリケーションのトランザクション処理が、ジャーナルの取得対象となります。したがって、ジャーナル取得業務のアプリケーションは、ジャーナル取得機能が起動してからデータベースに接続するようにします。
データベースを更新するトランザクションがCOMMITした時点で、ジャーナルがジャーナル取得ファイルに格納されます。以下の場合は、トランザクション内で更新されたジャーナル取得対象のテーブルに対するジャーナルは一切取得されません。
トランザクションをROLLBACKした
トランザクションの途中でアプリケーションが異常終了した
また、以下の場合についてもジャーナルは一切取得されません。
Symfowareのローダ(rdbsaloader/rdbsloader/rdbsuloader)を使用してジャーナル取得対象のテーブルを更新した
"図11.18 ジャーナル取得契機"にジャーナル取得契機を示します。
この例で示すアプリケーションにおけるテーブルの更新に対するジャーナルの取得結果は、以下のようになります。
アプリケーション1は、ジャーナル取得機能を起動する前にデータベースに接続しています。このため、アプリケーション1でジャーナルの取得対象となっているテーブルを更新しても、ジャーナルは取得されません。
アプリケーション2は、ジャーナル取得機能を起動した後にデータベースに接続し、ジャーナルの取得対象となっているテーブルを更新しています。このため、アプリケーション2がトランザクションをCOMMITした時点で、ジャーナルがジャーナル取得ファイルに格納されます。
アプリケーション3は、ジャーナル取得機能を起動した後にデータベースに接続していますが、トランザクションをROLLBACKしています。このため、アプリケーション3でジャーナルの取得対象となっているテーブルを更新していても、ジャーナルは取得されません。
アプリケーション4は、ジャーナル取得機能を起動した後にデータベースに接続していますが、トランザクションを終了させる前にアプリケーションが異常終了しています。このため、アプリケーション4でジャーナルの取得対象となっているテーブルを更新していても、ジャーナルは取得されません。
ジャーナル取得時に異常が発生した場合は、発行したSQL文が異常終了します。TJNLに起因する異常が発生した場合のSQLSTATE、SQLMSGおよび対処を"表11.24 TJNLに起因するSQL文の異常終了"に示します。"表11.24 TJNLに起因するSQL文の異常終了"にないエラーが発生した場合には、通常のデータベース更新アプリケーションと同様に対処してください。
SQLSTATE | SQLMSG | 対処 |
---|---|---|
77000 | JYP1064E PowerAIM/TJNLジャーナル取得でエラーが発生しました. | コンソールにエラーメッセージが出力されています。"第15章 メッセージ"で該当するエラー番号を参照の上、対処してください。 |
40702 | JYP5200E PowerAIM/TJNLジャーナル取得でTJNLのジャーナル取得データベース“@1@”に空き領域がなくなりました. | 以下のいずれかの対処を行ってください。
|
SQLのUPDATE文によって発生するジャーナルの取得方法を選択することができます。UPDATE文によって発生するジャーナルの取得方法には、以下の2種類があります。
DELETEとINSERTの情報として配付する
UPDATEの情報として配付する
DELETEとINSERTの情報として配付する
DELETEとINSERTの情報として配付する方法では、1件の更新で2件のジャーナルが取得されます。この形式は、更新前の情報と更新後の情報の両方が必要な場合に使用します。
UPDATEの情報として配付する
UPDATEの情報として配付する方法では、更新後の情報だけが取得されます。この形式は、キーとなる項目がジャーナル取得対象となっていて、更新後の情報だけでジャーナル利用側業務が行える場合に使用します。
UPDATE文によって発生するジャーナルの取得方法の指定は、環境作成時や動作環境変更時に行います。環境作成で指定する方法は"11.3.4 環境定義の記述"を、動作環境変更で指定する方法は"11.8.1.3 動作環境変更定義の記述"を参照してください。
1つのトランザクションで取得できるジャーナルのデータ量の上限を設定できます。これにより、ジャーナル提供側アプリケーションの異常による資源の枯渇を抑止できます。データ量の上限は、1トランザクションあたりの最大ジャーナル格納域サイズで決まります。1トランザクションあたりの最大ジャーナル格納域サイズは、環境作成時または動作環境変更時に指定します。
環境作成で指定する方法は"11.3.4 環境定義の記述"を、動作環境変更で指定する方法は"11.8.1.3 動作環境変更定義の記述"を参照してください。
なお、指定された値までジャーナル格納域を拡張しますが、30[KB]単位に拡張するので、実際には指定された値よりやや多いデータ量のジャーナルが取得できます。
1つのトランザクションで発生させることのできるジャーナルのデータ量が上限を超えた場合、発行したSQLはSQLSTATE=77000で異常終了します。