レプリケーションの手引きおよび解説書


問題判別

複製が失敗したり、予期しない方法で実行されたりする場合、 問題の原因を判別して、その問題を修正する解決方法を見つける必要があります。 DB2 DataPropagator には、問題判別作業の助けとして、 エラー・メッセージ、トレース・レコード、ログ・レコード、 および制御表に保管された情報が準備されています。 製品が提供する情報を使用して自分で問題を修正できることもありますが、 IBM ソフトウェア・サポートに連絡して解決を図るのが最善の場合もあります。 この章の内容は、以下のとおりです。

本書には、問題を判別する上で助けになる他の情報源も含まれています。

推奨事項: 問題判別機能を使用して複製のシナリオをテストまたはデバッグする場合は、 次の点に注意してください。


問題判別のシナリオ

以下に示すシナリオは、 この章に説明のある機能を使って複製エラーをトレースする方法について示したものです。

複製ソースとサブスクリプション・セットを定義した後、 複製要求の SQL ステートメントが正常に終了したものの、 変更適用プログラムがそのデータを正常に複製しないとします。 この場合、エラーを判別するには、次のようにします。

  1. 直接端末に戻されたエラー・メッセージのうち、変更適用プログラムのジョブまたはプロセスに関するものすべてを調べます。
  2. 複製アナライザーを起動して、複製の設定が正しいかどうかを調べます。
  3. 適用追跡表 (ASN.IBMSNAP_APPLYTRAIL) の中に、問題を示す標識があるかどうかを調べます。
  4. 収集プログラムのトレース表 (ASN.IBMSNAP_TRACE) の中に、収集プログラムの活動からの標識があるかどうかを調べます。
  5. 収集プログラムと変更適用プログラムのログ・ファイルの中に、収集プログラムと変更適用プログラムの活動からの標識があるかどうかを調べます。
  6. CD および UOW 表を検査して、 収集プログラムが変更を収集しているかどうかを調べます。
  7. トレース・オプションを指定してもう一度収集プログラムと変更適用プログラムを実行し、トレース・ファイルの中に問題を示す標識があるかどうかを調べます。

複製管理の問題判別

DB2 コントロール・センターまたは DJRA は、ソース・サーバー、ターゲット・サーバー、 または制御サーバーから情報を収集して管理用の SQL ステートメントを作成するときや、 実際にその SQL ステートメントを実行して複製ソースとサブスクリプション・セットをセットアップするときに、 エラーを検出することがあります。 主要な標識は、エラーに付随する SQL メッセージ、SQLSTATE コード、 および収集および変更適用プログラムのエラー・メッセージ (ASN という文字で始まる) です。 DB2 エラー・メッセージおよび SQL 状態については、DB2 ユニバーサル・データベース・メッセージ解説書 (またはご使用のプラットフォームに応じた DB2 メッセージ解説書) を参照してください。 ASN メッセージについては、 収集プログラムと変更適用プログラムのメッセージおよび AS/400 の場合の複製のメッセージでも説明されています。

収集および変更適用プログラムのメッセージは、 次のようなところで発行され記録されます。

複製ソースおよびサブスクリプションの定義のために DB2 コントロール・センターまたは DJRA が生成した SQL がエラーなしに実行されても、 変更データの収集と複製の際に収集プログラムと変更適用プログラムが問題を検出することがあります。 そのようなエラーの原因は、変更適用プログラムの問題判別収集プログラムの問題判別、 および トラブルシューティング (Troubleshooting)の各節で調べることができます。


変更適用プログラムの問題判別

DB2 には、変更適用プログラム用の以下の問題判別ツールが備わっています。

変更適用プログラム・メッセージ
これらのメッセージは、変更適用プログラムのエラーを説明するものです。 収集プログラムと変更適用プログラムのメッセージおよび AS/400 の場合の複製のメッセージを参照してください。

適用追跡表
この表には、 失敗した複製に関する SQLSTATE コードと SQL エラー・コード、 および変更適用プログラムの監査追跡情報が入っています。

変更適用プログラム・トレース・ファイル
このファイルには、変更適用プログラムのすべての活動のレコードが入っています。 変更適用プログラムを実行しているサーバーには、 変更適用プログラムの各インスタンスごとにそれぞれ 1 つのトレース・ファイルが存在します。 トレース・ファイルを取得するには、 変更適用プログラムの開始時にトレース・パラメーターを 1 つ指定する必要があります。

変更適用プログラム・ログ・ファイル
このファイルは、変更適用プログラムの活動を要約するものであり、 診断ツールとして活用できます。

適用追跡表

変更適用プログラムはサブスクリプション・セットの複製を試行するたびに、 適用追跡表 (ASN.IBMSNAP_APPLYTRAIL) に新しい行を挿入します。 この表は、他の制御表と同様、各制御サーバーに置かれ、 正常なサブスクリプション・サイクル、 または異常なサブスクリプション・サイクルごとに 1 行が割り当てられます。 変更適用プログラムはこの表にデータを追加するので、 この表を定期的に枝取りしてください。 適用追跡表については、適用追跡表を参照してください。

サブスクリプション・セットが正常に複製されない場合、 適用追跡表はその SQL コードと SQLSTATE を記録します。 問題に関連するその他の SQL コードと SQL 状態は、 変更適用プログラムのトレース・ファイルに入っています。

適用追跡表から問題判別情報を照会するには、 以下のようにします。

複製アナライザーを使用して、 この表の情報を表示します。複製アナライザーの使用を参照してください。 適用追跡表にある情報を直接照会して、 失敗したサブスクリプション・セットの問題判別情報を収集することもできます。

  1. 適用追跡表にあるデータが最新のものであることを確認します。
  2. 問題判別情報を収集するために、以下に示すような照会を実行します。
    SELECT TARGET_TABLE, STATUS, SQLSTATE, SQLCODE, SQLERRM, APPERRM, LASTRUN, LASTSUCCESS
    FROM ASN.IBMSNAP_APPLYTRAIL
    WHERE STATUS <> 0
    ORDER BY TARGET_TABLE, LASTRUN DESC, SQLCODE DESC, SQLSTATE ASC 
    

    この照会は、適用追跡表から以下の列を戻します。

    TARGET_TABLE
    現行のサブスクリプション・セットのターゲット表。

    STATUS
    失敗したサブスクリプション・セットであることを示す -1 が入れられます。

    SQLSTATE
    失敗したサブスクリプション・セットのエラー SQLSTATE が入れられます。

    SQLCODE
    失敗したサブスクリプション・セットのエラー SQLCODE が入れられます。

    SQLERRM
    SQL コードに対応するエラー・メッセージのテキストが入れられます。

    APPERRM
    変更適用プログラムのエラー・メッセージのテキストが入れられます。
  3. エラー・メッセージ・テキストを調べて、 エラー発生時に変更適用プログラムがどのデータベースに接続されていたかを判断します。 たとえば、変更適用プログラムがソース・サーバーまたはターゲット・サーバーのどちらに接続されていたときにエラーが発生したのかということです。 SQL コードとその状態については、 DB2 SQL 解説書を参照してください。
  4. 正常なサブスクリプション・セットを再度使用可能にします。

変更適用プログラム・トレース・ファイル

ある種の複製エラーを引き起こす原因を特定するための助けとして、 変更適用プログラムのオペレーションを追跡することができます。 変更適用プログラムは、 変更適用プログラムの開始コマンドにトレース・パラメーターが含まれている場合にトレース・ファイルを作成します。 コマンドの構文については、 操作の中の、 各プラットフォームに対応する「収集プログラムおよび変更適用プログラム」の章を参照してください。

変更適用プログラムは、その活動を追跡しながら、 トレース・ファイルにある以下の種類の情報を記録します。

変更適用プログラムは、エラーを検出した時点でエラー・メッセージと標識をトレース・ファイルに挿入します。

トレース・ファイルを作成するには、以下のようにします。

  1. 正常なサブスクリプション・セットを一時的に使用不能にして、 トレース・ファイル内の情報量を削減し、トレース・ファイルのデータが、 問題のあるサブスクリプション・セットにのみ適用されるようにします。
  2. 適切なトレース・パラメーターを指定して変更適用プログラムを開始します。

    trcflow
    非常に詳細な情報を提供します。これは、 IBM ソフトウェア・サポートの診断エラーで利用するためのオプションです。

    trcerr
    やや詳細な情報を提供します。複製ツールに慣れていない場合は、 こちらを選択することができます。

    トレース・パラメーターを指定する場合には、 トレース・ファイル名も指定する必要があります (ワークステーションのシステムの場合は、 トレース・ファイル名の前により大きい記号 (>) を付けて、 ファイルに出力をリダイレクトします)。 たとえば、トレース機能をオンにして変更適用プログラム (Windows 版) を開始するには、 コマンド行から次のコマンドを発行します。

    asnapply ApplyQual CtlSrvr trcflow > apply.trc
    

    ここで、ApplyQual は変更適用修飾子、 CtlSrvr は制御サーバー、 apply.trc はトレース・ファイルです。 トレース・ファイルは、変更適用プログラムを開始するディレクトリーに作成されます。

  3. 問題が再発して、変更適用プログラムが適用追跡表に行を挿入するまで、 複製を実行し続けます。
  4. 変更適用プログラムを停止し、 トレース・パラメーターを指定しないでプログラムを再始動します。 正常なサブスクリプション・セットを再度使用可能にします。
  5. 任意のエディターを使用してトレース・ファイルを表示します。 他のシステムにファイルを送信したり、 ファイルを印刷したりすることもできます。

変更適用プログラム・ログ・ファイル

変更適用プログラムの活動の概略を知るため、変更適用プログラムのログ・ファイルを調べることができます。 ログ・ファイルは、変更適用プログラムを開始するディレクトリーにあります。 このファイルには、変更適用プログラムが出すメッセージが入っています。 変更適用プログラムのログ・ファイルにある情報は高水準のものであるため、 多くの場合、適用追跡表を使ってもっと詳細な情報を調べることになります。

ログ・ファイルの名前は ApplyQual.APP です。ここで、 ApplyQual は変更適用プログラムのインスタンスに関連付けられている変更適用修飾子です。


収集プログラムの問題判別

DB2 には、収集プログラム用の以下の問題判別ツールが備わっています。

収集プログラム・メッセージ
これらのメッセージは、収集プログラムのエラーを説明するものです。 収集プログラムと変更適用プログラムのメッセージおよび AS/400 の場合の複製のメッセージを参照してください。

トレース表
この表には、収集プログラムの監査追跡情報が入っています。

収集プログラム・トレース・ファイル
このファイルには、収集プログラムのすべての活動のレコードが入っています。

収集プログラム・ログ・ファイル
このファイルは、収集プログラムの活動を要約するものであり、 診断ツールとして活用できます。

この節では、AS/400、OS/390、VM、 および VSE などのオペレーティング・システムで動作する収集プログラムの問題判別についても説明します。

収集プログラムのトレース表

収集プログラムは、メッセージを発行する対象となるイベントが生じると、 トレース表 (ASN.IBMSNAP_TRACE) に新しい行を挿入します。 この表は、ソース・サーバーに置かれ、 収集プログラムの活動に関する基本情報が入れられます。 トレース表については、トレース表を参照してください。

問題判別情報のトレース表を照会するには、 以下のようにします。

複製アナライザーを使用して、 この表の情報を表示します。複製アナライザーの使用を参照してください。 トレース表にある情報を直接照会して、 収集プログラムの問題判別情報を収集することもできます。

  1. トレース表にあるデータが最新のものであることを確認します。 収集プログラムの過去のオペレーションによる情報を削除するため、 表から行を削除することもできます。 コールド・スタートを行うと、収集プログラムはこの表からすべての行を削除します。 それで、トレース情報を保持するには、 収集プログラムのコールド・スタートを行う前にその表をコピーする必要があります。
  2. 収集プログラムの問題判別情報を収集するために、 以下に示すような照会を実行します。
    SELECT *
    FROM ASN.IBMSNAP_TRACE
    ORDER BY TRACE_TIME
    

    この照会は、トレース表から以下の列を戻します。

    OPERATION
    収集プログラムのオペレーションの種類 (初期設定、収集、 またはエラー状態など)。

    TRACE_TIME
    現在行がこの表に挿入された時刻。

    DESCRIPTION
    メッセージ ID およびメッセージ・テキスト。

    AS/400 システムの場合、この表には以下の列も入っています。

    JOB_NAME
    現行の項目を書いたジョブの完全修飾名。

    JOB_STR_TIME
    JOB_NAME 列でリストされたジョブの開始時刻。

収集プログラム・トレース・ファイル

ある種の複製エラーを引き起こす原因を特定するための助けとして、 収集プログラムのオペレーションを追跡することができます。 収集プログラムは、 収集プログラムの開始コマンドにトレース・パラメーターが含まれている場合にトレース・ファイルを作成します。 コマンドの構文については、 操作の中の、 各プラットフォームに対応する「収集プログラムおよび変更適用プログラム」の章を参照してください。

収集プログラムは、エラーを検出した時点でエラー・メッセージと標識をトレース・ファイルに挿入します。

AS/400 システムで問題をトレースするには、 制御およびジャーナル・ジョブのジョブ・ログを見てください。 詳しい情報については、 AS/400 の問題判別を参照してください。

トレース・ファイルを作成するには、以下のようにします。

  1. trace パラメーターを指定して収集プログラムを開始し、 その出力をファイルにリダイレクトします。 たとえば、トレース機能をオンにして収集プログラム (Windows 版) を開始するには、 コマンド行から次のコマンドを発行します。
    asnccp SrcSrvr trace > capture.trc
    

    ここで、SrcSrvr はソース・サーバーであり、 capture.trc はトレース・ファイルです。 上記のコマンドには、開始の種類 (WARM、WARMNS、 または COLD) または枝取りの種類 (PRUNE または NOPRUNE) のパラメーターが指定されていないため、 収集プログラムは省略時値 (WARM および PRUNE) を使用します。 トレース・ファイルは、 収集プログラムを開始するディレクトリーに作成されます。

  2. 問題が再発するまで、複製を実行し続けます。
  3. 収集プログラムを停止し、 トレース・パラメーターを指定しないでプログラムを再始動します。
  4. 任意のエディターを使用してトレース・ファイルを表示します。 他のシステムにファイルを送信したり、 ファイルを印刷したりすることもできます。

収集プログラム・ログ・ファイル

収集プログラムの活動の概略を知るため、収集プログラムのログ・ファイルを調べることができます。 ログ・ファイルは、収集プログラムを開始するディレクトリーにあります。 このファイルには、収集プログラムが出すメッセージが入っています。

ログ・ファイルの名前は SrcSrvr.CPP です。 ここで、SrcSrvr はソース・サーバーの名前です。

収集プログラムの他の問題判別機能

OS/390、VM、および VSE 版の収集プログラムには以下のツールが準備されています。

トレース・バッファー
収集プログラムは、処理中に少量の重大診断データを循環トレース・バッファーに入れます。 各トレース・バッファー項目は、 その時点でのデータの収集状況を説明しています。 重大エラーが発生すると、 収集プログラムは終了前にトレース・バッファーを出力します。 トレース・バッファーは、収集プログラムのエラー・メッセージを補足するものです。

トレース出力
エラーが発生した場合、TRACE オプションを使って収集プログラムを実行することができます (収集プログラム・トレース・ファイルを参照)。 このオプションを使用すると、 収集プログラムはトレース情報の論理の流れを以下に書き込みます。

SYSPRINT (OS/390 の場合)

コンソール (VM の場合)

STDOUT (VSE の場合)

この情報は、IBM ソフトウェア・サポートで操作問題の診断に使用されることがあります。

記憶域ダンプ
収集プログラムが重大エラーで終了すると、 SYS1.DUMP データ・セットにシステム・ダンプが生成されます。 このダンプは IPCS 読み取り可能です。 また、収集プログラムのトレースよりもさらに詳しい診断情報が含まれており、 IBM ソフトウェア・サポートによってシステム障害を診断するために使用される場合があります。

OS/390 の場合、収集プログラムには以下のものも備わっています。

アラート生成
重大エラーが発生した場合、収集プログラム (OS/390 版) は、 NetView がアクティブなら NetView にアラートを発行します。 そのアラートでは、SNA 総称アラート・アーキテクチャーによって定義されている総称アラートの NMVT 形式を使用します。 NetView が使用できない場合、 収集プログラムは引き続き MVS コンソールにエラー・メッセージを書き出します。

AS/400 の問題判別

収集プログラム (AS/400 版) は主要入力ソースとしてジャーナルとジャーナル・レシーバーに依存しているため、その問題判別機能は独自のものです。 この節では、収集プログラム (AS/400 版) の問題判別機能、 および関連する問題回復方法 (アクティブなジョブに関する情報の収集、 ジャーナル・ジョブが開始しているかどうかの判別、 および問題判別に使用するデータの収集など) について説明します。

アクティブなジョブに関する情報の収集

問題判別を行う上での最初のステップの 1 つは、 現在アクティブなジョブに関する情報を集めることです。 投入されたジョブの処理コマンド (WRKSBSJOB QZSNDPR) を発行して、 サブシステム内のアクティブなジョブのリストを入手します。 特定のジョブがみつからない場合は、 WRKSBMJOB コマンドを使ってそのジョブのジョブ・ログを検索し、 それを表示してください。 収集プログラム制御ジョブの名前は QZSNCTL5 です。 ジャーナル・ジョブの名前は、ジャーナル名と同じです (SQL コレクションのデフォルトのジャーナル名である QSQJRN か、ジャーナルのために指定した名前)。

後の問題判別プロセスで必要になることがあるので、 6 桁のジョブ番号を記録しておきます。

ジャーナル・ジョブが開始したかどうかの判別

収集プログラムの開始後 5 分以上たってから、 1 つのジョブ (QDPRCTL5) しか実行していないことに気付いた場合には、 以下の条件を検査してください。

問題判別用データの収集

収集プログラムの問題判別には、以下の項目が必要です。 重要性の高い順に項目を示します。

  1. 収集プログラム制御ジョブ QDPRCTL5 のジョブ・ログ。
  2. 収集プログラムのジャーナル・ジョブのジョブ・ログ。
  3. 古いジャーナル・レシーバー。 この中には重要な時系列の情報が入っており、重要です。 ジャーナル・レシーバーを 1 つのファイルに保管するか、 または IBM ソフトウェア・サポートによるリモート・サインオンがなされるようなら、 それらのレシーバーを保持するようにしてください。 問題判別においては、下記の表のジャーナル・レシーバーが役立ちます。

    制御表
    これには、登録表、登録拡張表、枝取り制御表、作業単位表、 クリティカル・セクション表、およびウォーム・スタート表が含まれます。 これらの表のジャーナルは ASN/QSQJRN です。

    ソース表
    これらのジャーナル・レシーバーは、収集プログラムがそれらを必要とする限り保持されます。 問題判別に役立つので、 これらのジャーナル・レシーバーがシステムによって自動的に削除されてしまわないようにしてください。

    複製ソースの変更データ表
    多くの場合、ジャーナルの名前は QSQJRN であり、ソース表と同じライブラリーに入れられます。 そうでない場合、 DSPFDlib/sys (lib はライブラリー、 sys は変更データ表のシステム名) を発行することによってライブラリーとジャーナル名を調べてください。 変更データ表のシステム名を検索するには、 次の SQL ステートメントを発行します。
    SELECT DBXFIL 
    FROM QSYS/QADBXREF
    WHERE DBXLFI = 'sqlname' AND DBXLIB = 'lib'
    

    ここで、sqlname は、CD 表の SQL 名です。 sqlnamelib には、 両方とも大文字小文字の区別があります。

  4. ユーザー索引 QDPR/QZSNINDEX5 の定様式ダンプ。収集プログラムの終了前に、次のコマンドを発行してください。
    DMPOBJ QDPR/QZSNINDEX5 *USRIDX
    
  5. さらに詳細に知りたい複製ソースに対応する登録表および登録拡張機能表の行の内容。 次の SQL ステートメントを実行して、この情報を収集することができます。
    SELECT A.*, HEX(CD_OLD_SYNCHPOINT), HEX(CD_NEW_SYNCHPOINT)
    FROM ASN/IBMSNAP_REGISTER A
    WHERE SOURCE_OWNER='SrcOwn' AND SOURCE_TABLE='SrcTbl'
     
    SELECT * 
    FROM ASN.IBMSNAP_REG_EXT
    WHERE SOURCE_OWNER='SrcOwn' AND SOURCE_TABLE='SrcTbl'
    

    SrcOwn はライブラリー名、SrcTbl は問題となっている複製ソースの表名です。 SrcOwnSrcTbl には、 両方とも大文字小文字の区別があります。

  6. 登録表のグローバル行の内容。 次の SQL ステートメントを実行して、 収集プログラムの進行状況を検査することができます。
    SELECT A.*, HEX(SYNCHPOINT)
    FROM ASN/IBMSNAP_REGISTER A
    WHERE GLOBAL_RECORD = 'Y'
    
  7. 有効なジョブ・イベントのトレース表の中にある項目。 収集プログラム制御ジョブまたは収集プログラム・ジャーナル・ジョブの項目を検出するには、 次の SQL ステートメントを入力します。
    SELECT * 
    FROM ASN/IBMSNAP_TRACE
    WHERE SUBSTR(JOB_NAME, 21, 6) = 'jobnum'
    ORDER BY TRACE_TIME
    

    ここで、jobnum は調べるジョブのジョブ番号です。 DESCRIPTION 列には、ジョブに関する重要な情報が示されます。

    :

    2000 年 3 月 31 日午前 7 時以降のトレース表の項目を収集するには、 以下の照会を実行します。

    SELECT * 
    FROM ASN/IBMSNAP_TRACE
    WHERE TRACE_TIME > '2000-03-31-07.00.00.000000'
    ORDER BY TRACE_TIME
    

    2000 年 3 月 31 日午前 7 時以降のすべての ASN0303 (データ収集中断) トレース表の項目を収集するには、 以下の照会を実行します。

    SELECT * 
    FROM ASN/IBMSNAP_TRACE
    WHERE TRACE_TIME > '2000-03-31-07.00.00.000000' AND
          SUBSTR(DESCRIPTION, 1, 7) = 'ASN0303'
    ORDER BY TRACE_TIME
    
  8. ウォーム・スタート表からの行。 1 つまたは複数の複製ソースで使用されるジャーナルのすべてについて、 それぞれ 1 つずつ項目が含まれています。 ジャーナル・ジョブの行を取り出すには、次の SQL ステートメントを実行します。
    SELECT * 
    FROM ASN/IBMSNAP_WARM_START
    WHERE JRN_LIB='JLib' AND JRN_NAME='JName'
    

    JLib はライブラリー名、JName はジャーナルの表名です。 JLibJName には、 両方とも大文字小文字の区別があります。

  9. 変更適用プログラムがターゲット表に複製できない状況と理由を判別するのに役立つターゲット・サーバーからのデータ。
  10. ジャーナル・ジョブのためのユーザー・スペースの定様式ダンプ。 これらのジョブはライブラリー QDPR の中にあり、 QDPRxxxxxx という名前です (ここで、xxxxxx はジャーナル・ジョブのジョブ番号)。 収集プログラムの終了前に、次のコマンドを発行してください。
    DMPOBJ QDPR/QDPRxxxxxx *USRSPC
    

複製アナライザーの使用

複製アナライザーは、複製制御表、変更データ表、ターゲット表、 およびターゲット表の索引の正確性、整合性、および効率を分析します。 また、 データベース・パラメーターが最大の複製パフォーマンスを得られるものとなっているかどうかも検査します。 複製アナライザーは、 収集プログラムや変更適用プログラムの動作を分析するために使用することができます。 これにより、「収集プログラムが収集を実行しないのはなぜか」、 「変更適用プログラムが変更適用を実行しないのはなぜか」といった質問の回答が得られます。 複製アナライザーは、診断プログラムを支援したり、複製セットアップを検証したり、 パフォーマンスのチューニングに役立つ提案を示したりできます。

複製の設定が終了してから複製アナライザーを実行して、 収集プログラムや変更適用プログラムの障害を分析することもできますし、 単に設定を検査することもできます。 複製アナライザーは \sqllib\bin ディレクトリーにあります。 アナライザーのバインド・ファイル (analyze.bnd) は \sqllib\bnd ディレクトリーにありますが、 DB2 V6 および V7 の場合、アナライザーは自動的にバインドされるため、 プログラムをバインドする必要はありません。 DB2 V5 でアナライザーを実行する場合は、 以下のコマンドを使用してアナライザーをバインドします。

bind analyze.bnd isolation UR

重要: 複製アナライザーは、 DataPropagator バージョン 5 またはそれ以降のバージョンでのみ動作します。 DataPropagator バージョン 1 では動作しません。 DataPropagator バージョン 1 で動作するバージョンの複製アナライザーが必要な場合は、 IBM ソフトウェア・サポートにご連絡ください。

Windows のコマンド行から複製アナライザーを実行します。 複製アナライザーのコマンドファイル名 (analyze.exe) の後ろに、ソース、ターゲット、 および制御サーバーの DB2 別名のリストをブランクで区切って入力します (これらの名前は、 それぞれ 8 文字以下の長さでなければなりません)。

複製アナライザーはコマンド行から実行するため、 複製アナライザーの実行時に DJRA または DB2 コントロール・センターのいずれかを実行する必要はありません。

サーバーに接続するのにエンド・ユーザーの認証が必要な場合は、 現行ディレクトリーにパスワード・ファイルを作成する必要があります。 このファイルは、analyze.pwd という名前にし、 1 つまたは複数の項目を次のような形式で入れる必要があります。

SERVER=server_alias USER=userid PWD=password

出力が正確かどうかを調べるため、複製アナライザーを実行して、 生成されたファイルを IBM の担当者にお送りいただくよう、 IBM ソフトウェア・サポートからお願いすることがあります。

構文:

              .-----------------.
              V                 |
>>-analyze-+----DB_alias_name---+---+------------+---| A |--+--->
           |                        +-deepcheck--+          |
           |                        '-lightcheck-'          |
           '-?----------------------------------------------'
 
       .------------------------.
       V                        |
>---A-----+------------------+--+---+------------------+-
          '-q--=--ApplyQual--'      '-f--=--directory--'
 

deepcheck
より詳細な分析を行うよう指定します。 これには、CD および UOW 表の枝取り情報、 DB2 (OS/390 版) の表スペースの区分化と圧縮に関する詳細、 サブスクリプション・キーに関するターゲットの索引の分析が含まれます。 この分析には、すべてのサーバーが含まれます。 このキーワードは、オプションです。

f
出力 HTML ファイルを保管するディレクトリーを指定します。 このキーワードを指定しないと、 現行サーバーに HTML ファイルが作成されます。 キーワード (f)、等号、および値の間にスペースを入れることはできません。 このキーワードは、オプションです。

lightcheck
報告書から列の詳細をすべて除外するよう指定します。 これにより、報告書の作成時間が短縮され、リソースを節約でき、 より小さな HTML ファイルを作成することができます。 このキーワードはオプションです。 deepcheck キーワードと同時に指定することはできません。

q
サブスクリプション・セットの分析を制限するためのフィルターとして使用する変更適用修飾子を指定します。 複数の変更適用修飾子を分析する場合には、 q キーワードを複数回指定することができます。 キーワード (q)、等号、および値の間にスペースを入れることはできません。 このキーワードは、オプションです。

?
analyze コマンドの構文を表示します。

このキーワードには、大文字小文字の区別はありません。

出力: 複製アナライザーは、 出力 HTML ファイル (analyze.htm)を作成します。 このファイルは、任意の Web ブラウザーで開いて表示することができます。 このファイルは、アナライザーを実行するのと同じディレクトリー内か、 f キーワードによって指定されたディレクトリー内に保管されます。 アナライザーからのメッセージは標準出力に送信されます。 出力 HTML ファイルには、以下の情報が入っています。

上記の情報の一部は、deepcheck を指定した場合にのみ含められます。

:

analyze mydb1 mydb2  
analyze mydb1 mydb2 f=mydirectory 
analyze lightcheck mydb1 mydb2 
 
analyze q=applyqual1 q=applyqual2 deepcheck mydb1 mydb2 f=mydirectory

トラブルシューティング (Troubleshooting)

ここでは、収集および変更適用プログラムの実行時に生じる様々な問題や、 こうした問題の原因を診断する方法について説明します。 複製分析器を使用して、複製環境に一般的な問題や固有の問題を判別する必要もあります。

問題: 収集プログラム (OS/390 版) が開始しない。

RUN JCL に指定されたすべての STEPLIB ライブラリーについて、APF 許可が実行されたことを確認してください。

問題: 収集プログラム (VM 版) または収集プログラム (VSE 版) が開始しない。

以下のことを確認します。

問題: 収集プログラムが更新を収集しない。

以下のいずれかのエラーが原因で、収集プログラムが更新を収集できない場合があります。

問題: 収集プログラムが正常に実行したかどうかが分からない。

いったん収集および変更適用プログラムが開始されると、 変更適用プログラムはターゲット表を収集するために全最新表示を行います。 次に収集プログラムは、トレース表にメッセージ ASN0104I を書き込み、 表所有者名、表名、および開始ログ順序番号の値に関係する情報を提供します。 この情報により、収集プログラムが更新の収集を開始する地点が提供されます。

それ以降に収集された更新は、CD 表に入れられます。 それらの更新は最終的にはターゲット表に適用され、CD 表から枝取りされます。 収集プログラムの実行を開始してしばらくすると、CD 表の中に行が表示されるはずです (ソースに変更が加えられた場合)。 定期的にトレース表を調べて、収集プログラムの進行状態を確認してください。 エラーになったら、収集プログラムはそのエラーをコンソールに送り、それをトレース表にも記録します。 同様に、変更適用プログラムは、その情報を適用追跡表に記録します。

問題: 収集プログラム (OS/390 版) が、正しいメッセージ番号ではなく、 メッセージ ASN0000E を出した。

メッセージ ASN0000E は、RUN JCL に指定された VSAM メッセージ・ファイルが見つからなかった場合に発行される一般的なメッセージです。 VSAM メッセージ・ファイルのインストールについて詳しくは、 収集プログラム (OS/390 版) のプログラム資料説明書を参照してください。

問題: 収集プログラム (VM 版) または収集プログラム (VSE 版) が、 正しいメッセージ番号ではなくメッセージ ASN0000E を出した。

メッセージ ASN0000E は、デフォルトのメッセージ・ファイル ASNLS001 MSG か、 収集プログラム始動 JCL に指定されているメッセージ・ファイルのいずれかが見つからないときに出される一般的なメッセージです。 メッセージ・ファイルのインストールについて詳しくは、 収集プログラム (VM 版) または収集プログラム (VSE 版) のプログラム資料説明書を参照してください。

問題: 収集プログラムが終了してしまう。

収集プログラムは、重大エラーが発生するか、または stop コマンドが発行されると終了します。 収集プログラムは、正常完了または失敗のどちらかを示す戻りコードとともに終了します。 戻りコードは以下のとおりです。

0
stop コマンドが出されました。

8
初期設定のときにエラーになりました。

12
他の何らかの重大エラー。

問題: OS/390 環境の使用中に収集プログラム (OS/390 版) に障害が発生した。

収集プログラムは LE OS/390 版環境で動作します。 収集プログラムの開始時にお勧めする収集ジョブ・ステップの最小領域サイズは REGION=10M です。

問題: エラー・メッセージ 0509 が出された。

DB2 の複数のバージョン、または DB2 と DataJoiner が同じシステム上にインストールされているため、 エラー・メッセージ 0509 が出されます。

LIBPATH 環境変数が変更適用プログラムが開始されるのと同じ環境に設定されているかを確認してください。

問題: DB2 ユニバーサル・データベース用の変更適用構成要素が、SQLCODE= -330、SQLSTATE=22517、 "A string cannot be used, because its characters cannot be translated" (文字を変換できないため、ストリングは使用できません) とともに停止した。

DB2 (OS/390 版) と 別のプラットフォームの DB2 間でコピーを実行する場合に、 CCSID 変換が原因で INSERT が失敗することがあります。失敗するのは、 変換後の値が、挿入場所の DB2 列よりも長い場合です。

混合環境で実行する場合、ご使用の DB2 (OS/390 版) プログラムの CCSID サポート用の最新メインテナンスがインストールされていることを確認してください。

文字変換についての詳細は、 DB2 (OS/390 版) : インストールの手引き にある、文字変換の付録をご覧ください。

問題: 収集プログラムまたは変更適用プログラムを Windows NT サービスとして開始しようとして、 システム・エラー 1067 を受け取った。

エラー・コード 1067 は、以下の状況の下で発生します。

問題: ASNPATH 内の ASNSERV.LOG ファイルによって、変更適用プログラムが正しく開始されたが、 その変更適用処理の終了が通知される。

変更適用プログラムが終了した理由を突き止めるには、NTSERV.ASN の構文を以下のように変更してください。

...ASNAPPLY APPLYQUAL TRCFILE

トレース出力は、変更適用トレース・ファイルに書き出されます。

<ASNPATH pathname>ApplyQual.TRC

問題: バインドは正常に実行できたが、変更適用プログラムを実行すると、 まだ SQLCODE -805、SQLSTATE 51002 が出る。

ユーザー ID に変更適用プログラム・パッケージに対する EXECUTE 特権があることを確認し、 両方の変更適用プログラム・パッケージを制御、ソース、 およびターゲット・サーバー・データベースに確実にバインドするようにしてください。

問題: 非常に大きい表をコピーしたため、DB2 ログの容量がいっぱいになってしまった。

エラーが全最新表示のときに発生した場合、別の方法を使って大きい表をロードすることができます。 それには、ASNLOAD 出口ルーチンを使用できますが、 自分でロードすることもできます (DJRA を使ったターゲット表のオフライン・ロードに説明があります)。

変更データの適用のときにエラーが発生した場合、データ・ブロック・パラメーターを変更して、 大きい変更データ・ブロックを分割することができます。 データ・ブロック化値の指定を参照してください。

問題: 収集プログラムはコールド・スタートされたため、 変更適用プログラムは全最新表示を実行しているが、全最新表示は行いたくない。

ターゲット表が非常に大きいときに、自分のロード機構だけを使用することに決めた場合は、 それ以降に実行される変更適用プログラムの全最新表示をすべて抑止するのがよいかもしれません。 ソース・サーバーで、ソース表の登録表内の DISABLE_REFRESH フラグを 1 にセットします。 この場合、変更適用プログラムはメッセージ ASN1016E を出しますが、 全最新表示を実行するまでは何もコピーしません。

全最新表示を回避し、データの収集もできるだけ早く開始したい場合は、 DJRA のオフライン・ロード機能を使用することができます。 この場合、この表をアンロードして再ロードする必要はなく、 ステップ 1 およびステップ 4 のために生成した SQL を実行するだけです。 オフライン・ロードは、全最新表示を使用不能にするだけでなく、 ステップ 4 を終了するまでサブスクリプションを非活動化します。 DJRA を使ったターゲット表のオフライン・ロードを参照してください。

問題: ギャップが検出されたため、変更適用プログラムは、 ターゲット表の全最新表示を実行しない。

サブスクリプション・セット表内の LASTSUCCESS、SYNCHTIME、および SYNCHPOINT値を NULL にリセットして、強制的に全最新表示を行います。

問題: 2 度目に変更適用プログラム・インスタンスを起動しようとして失敗した。

おのおののインスタンスを、それぞれ固有の変更適用修飾子を使って実行しなければなりません。

問題: 機密保護違反メッセージを受け取りました。 変更適用プログラムはデータベースへの接続を許可されていません。

制御サーバー名、ユーザー ID、およびパスワード定義は、 パスワード・ファイルで指定されたものと正確に一致しなければならず、大文字小文字が区別されます。 定義をもう一度チェックしてください。

変更適用プログラム (AS/400 版) は、パスワード・ファイルを使用しないため、 STRDPRAPY CL コマンドのユーザー・パラメーターで指定したユーザー ID を使って、 データベースへの接続を試行します。DRDA 接続定義が正しく設定されているかどうか確認してください。

問題: SQLCODE = -1032 および SQLSTATE = 57019 の付いた ASN1003 を受け取った。

変更適用プログラムを呼び出す前に、データベース・マネージャーを始動しなければなりません。

問題: 変更適用プログラムが、 ソース・データを取り出す時に SQLCODE -206 を受け取る。

CCD 表を使用して複数の表への複製をステージングする場合は、 全ターゲット表が予期するすべての列を、CD または CCD 表に含めるようにします。 列をサブセット化したり、最終ターゲットに複製する UOW 列を選択したりすることは、 ターゲット表の定義後に CCD 表を複製シナリオに加えた場合、問題の原因となります。

この問題は、ターゲット表を手動で定義し、 かつ複製ソースの定義時にすべての列を含めなかった場合に限って生じるはずです。 CD および内部 CCD 表の定義が済んでから、 すべてのターゲット表の定義 (サブスクリプション・セットへの追加) を行えば、 この問題は回避できます。 DJRA は、ターゲット表の行が、 事前定義された CD または 内部 CCD 表にないということを許しません。 DJRA は、ターゲット表の列の有効なサブセットだけを表示します。

問題: DJRA を使用して制御表を作成している時に SQL1108 エラーが発生する。

DB2 DataJoiner が DJRA と同じ Windows NT システムにインストールされており、 かつ DB2 (OS/390 版) で制御表を作成しようとする場合に、SQL1108 エラーが生じます。 この問題は、 アプリケーションの初期化中に ddcs.dll がロードされないために、 この DLL の必要なメモリー・スペースとメモリーの衝突が生じることが原因で生じます。

この問題を回避するには、 環境変数 DB2DBMSADDR を設定します (範囲は 20000000 〜 70000000)。 これにより、DB2 はメモリーを別の仮想アドレス空間に置くため、 アプリケーションのアドレス空間とのメモリーの衝突を回避できます。


問題の原因を識別するための質問

IBM ソフトウェア・サポートに連絡すると、次のような種類の質問を受けます。 これらの質問に対する回答を調べておけば、時間の節約になり、 自分でエラーを診断するのにも役立つことがあります。

  1. 問題が発生した時点で何がどうなりましたか。
  2. ご自分の環境で、最近何か変更したことはありますか。
  3. ご自分の環境について説明してください。
  4. コントロール・センターがインストールされている DB2 ユニバーサル・データベース の保守レベルは何ですか。
  5. どのプラットフォームで収集プログラムを実行していますか。
  6. 収集プログラム の保守レベルは何ですか。
  7. 収集プログラムを実行している DB2 (または IBM 以外の DBMS) の保守レベルは何ですか。
  8. どのプラットフォームで変更適用プログラムを実行していますか。
  9. 変更適用プログラム の保守レベルは何ですか。
  10. DB2 (または DB2 DataJoiner) のどのリリースで変更適用プログラムを実行していますか。
  11. 変更適用プログラムを実行している DB2 (または DB2 DataJoiner) の保守レベルは何ですか。
  12. 不定期接続ユーザー、 DB2 サテライト・ユーザー、 DB2 常時接続ユーザーのうち、どれにあてはまりますか。
  13. どの ASN メッセージが出されましたか。
  14. SYSLOG (AS/400 の場合は QSYSOPR メッセージ待ち行列)、画面、 またはトレース・ファイルに、その他のメッセージがありますか。
  15. 出されたすべてのメッセージに関して、 それぞれのメッセージ・テキストの全文はどのようなものですか。 これらのメッセージに表示されたすべてのメッセージ番号、データベース名、 ユーザー ID、およびファイル名を必ず書き留めておいてください。
  16. 障害はどこで発生しましたか。
    1. DB2 コントロール・センター
      • 問題は、複製ソースまたはサブスクリプション・セットのどちらにありますか。
      • どのようなメッセージが表示されましたか。
      • ユーザーは、コマンド行または DB2 コマンド・ウィンドウから正常にソースまたはターゲット・データベースに接続できますか。
    2. DJRA
      • どのレベルの DJRA を使用していますか。 メイン・ウィンドウから「ヘルプ (Help)」->「バージョン情報 (About)」をクリックすると、 この情報を知ることができます。
      • IBM 以外のデータ・ソースにアクセスしている場合、どのレベルの DB2 DataJoiner を使用していますか、またプラットフォームは何ですか (AIX か Windows NT か)。
      • 生成スクリプト・ファイルと出力ファイルを保管しましたか。
    3. 収集プログラム
      • 収集プログラムは稼働していますか。
      • 稼働していない場合、ウォーム・スタートを試行すると何が生じますか。
      • トレース表 (ASN.IBMSNAP_TRACE) の中にエラー情報がありますか。
      • 収集プログラム・ログ・ファイルの中にエラー情報がありますか。
      • DB2 構成はどのようなものですか。
      • データ変更内容は、CD 表に正常に挿入されていますか。
      • 収集プログラムを実行しているユーザー ID には、収集プログラムを実行するための正しい特権がありますか。
    4. 変更適用プログラム
      • 変更適用プログラムは稼働していますか。
      • 稼働していない場合、いつ変更適用プログラムを始動しましたか。
      • どのようなメッセージが表示されましたか。
      • 適用追跡表 (ASN.IBMSNAP_APPLYTRAIL) の中にエラー情報がありますか。
      • 変更適用プログラムのログ・ファイル (AS/400 の場合は変更適用プログラムのジョブ・ログ) の中にエラー情報がありますか。
      • データ変更内容は、正常にターゲット表に複製されていますか。
      • 同じサブスクリプション・セット内のすべての表に同じ問題がありますか。
      • 障害には、どのようなタイプの表 (たとえばユーザー・コピー、時刻指定、CCD) が関与していますか。
      • トレース・オプションを指定して変更適用プログラムを開始しましたか。
      • CALL プロシージャーを使用していますか。
      • CCD 表を使用していますか。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]