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

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

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

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


なおLinuxサーバの場合、ジャーナル取得業務のアプリケーションを実行するユーザはTRM利用者グループに所属している必要があります。詳細は"12.3.2.4 アプリケーション実行ユーザの所属グループの設定"を参照してください。

12.6.3.1 ジャーナルの取得契機

ジャーナル取得機能を起動してから開始したトランザクションが、ジャーナルの取得対象となります。トランザクションがCOMMITした時点で、ジャーナルがジャーナル取得ファイルに格納されます。

以下の場合は、トランザクション内で更新されたジャーナル取得対象のテーブルに対するジャーナルは一切取得されません。

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

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

図12.19 ジャーナル取得契機

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

12.6.3.2 ジャーナルの取得順序

TJNLではジャーナルデータに取得順序情報を付加し、トランザクション単位にまとめてジャーナル取得ファイルに格納します。取得順序情報は各トランザクションの最終更新SQLの実行順序を示す情報です。ジャーナルを取得する契機は"12.6.3.1 ジャーナルの取得契機"で説明したようにトランザクションがCOMMITされた時点です。ジャーナル配付機能は、ジャーナル取得ファイルに格納されたジャーナルの中から取得順序情報の小さい順にトランザクションのジャーナルを取り出し、利用ジャーナルとしてメッセージキューに配付します。ジャーナルの取得順序について、"図12.20 Oracle連携時における利用ジャーナルの取得順序"に示します。

図12.20 Oracle連携時における利用ジャーナルの取得順序

この図では、トランザクションを先にCOMMITしたのはAPL1、最終更新SQLを先に実行したのはAPL2です。従って、取得順序情報はAPL2のトランザクション→APL1のトランザクションの順に昇順で設定されます。一方、ジャーナル取得ファイルにジャーナルを取得するタイミングはAPL1のトランザクションが先になります。これら2つのジャーナルを取得した後でジャーナル配付機能を起動した場合には、利用ジャーナルは取得順序情報の昇順、すなわちAPL2のトランザクション→APL1のトランザクションの順にメッセージキューに格納されます。(つまり、トランザクションのCOMMIT順に配付されるわけではありません。)ただし、あらかじめジャーナル配付機能を起動した状態でこれら2つのジャーナルを取得した場合には、トランザクションがCOMMITされた順、すなわちAPL1のトランザクション→APL2のトランザクションの順にメッセージキューに格納される可能性があります。(各機能の動作タイミングによっては取得順序情報の昇順にメッセージキューに格納されることもあります。)

12.6.3.3 SQL文の処理結果

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

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

SQLSTATE

Oracleのエラーメッセージ

対処

72000

(注)ORAXXXXXX:An error occurred in TJNL

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

63000

ORA-03113: 通信チャネルでファイルの終わりが検出されました。

コンソールにTJNLのエラーメッセージが出力されている場合は、"第15章 メッセージ"で該当するエラー番号を参照のうえ対処してください。
また、コンソールにTJNLのメッセージが出力されていない場合は、Oracleデータベースが起動していない可能性があります。Oracleデータベースを起動してください。起動方法については"12.6.1.1 Oracleデータベースの起動"を参照してください。

99999

ORA-28575: 外部プロシージャ・エージェントへのRPC接続をオープンできません。

Oracle Netリスナーを起動してください。起動方法については"12.6.1.1 Oracleデータベースの起動"を参照してください。
また、ローカル・ネーミング・パラメータとリスナー・パラメータを修正後、Oracle Netリスナーの構成を変更していない場合は、構成を変更してください。構成の変更方法についてはOracleのマニュアルを参照してください。

注)XXXXXXはTJNL環境定義の[TJNLDefinition]セクションのExCodeで指定した値です。

12.6.3.4 UPDATE文のジャーナル形式

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

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

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

UPDATEの情報として配付する

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

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

12.6.3.5 NCHAR型およびNVARCHAR2型の列をジャーナル取得対象とする場合

NCHAR型(各国語固定長文字列)およびNVARCHAR2型(各国語可変長文字列)の列をジャーナル取得対象とする場合、その列は日本語文字(全角文字)で更新するようにしてください。半角英数字で更新すると、不正な値が利用ジャーナルとして配付されます。