JOURNAL

MUPIP JOURNALコマンドは、ジャーナル・ファイルの分析(analyzes)、抽出(extracts)、レポート作成(reports)、回復(recovers)を行います。MUPIP JOURNALコマンドのフォーマットは次のとおりです:

MUPIP J[OURNAL] -qualifier[...] file-selection-argument

file-selection-argument は、ジャーナル・ファイルのコンマ区切りのリストです。

-qualifier [...] は、さまざまなMUPIP JOURNAL操作を実行するAction、Direction、Time、Sequence Number、Control、Selectionの各修飾子の組み合わせです。MUPIP JOURNALコマンドを作成するには、Actionカラムから伸びているSelectionカラムまで水平方向に移動して、適切な修飾子の組み合わせを選択します。

Action:アクション

Direction

Time (オプション)

Sequence Number (オプション)

Control (オプション)

Selection (オプション)

1個以上

1個だけ

1個以上

1個だけ

1個以上

1個以上

-EX[=ファイル仕様]

-REC

-RO

-SH=オプションリストを表示]

-[NO]V

-BA -FO

-A=time

-BE=time

-[NO]LOO= lookback オプションリスト]

-SI=time

-FET=port number

-RES=jnl sequence number

-[NO]AP

-BR=抽出ファイル名

-[NO]CHA

-[NO]CHE

-[NO]ER[= integer]

-FE=フェンス(囲い込み)オプション

-FU

-[NO]IN

-LOST=抽出ファイル名

-RED=ファイルのペアのリスト

-VERB

-DE

-G=グローバル リスト

-ID=pid list

-T=transaction type

-U=user list

また、次の規則に従ってください:

  1. -BEFOREは、-ROLLBACK以外のすべてのJOURNAL修飾子と両立できます。

  2. -AFTERは、-BACKWARDおよび-EXTRACT, -SHOW, および -VERIFYを除くすべてのアクション修飾子と両立できません。

  3. -APPLY_AFTER_IMAGEは、-RECOVERまたは-ROLLBACKとのみ両立できます。

  4. -BACKWARDは、-FORWARD, -AFTER, -CHECKTN, -NOCHAIN, および -REDIRECTと両立できません。

  5. -BROKENTRANSは、-RECOVER, -ROLLBACK, または-EXTRACTとのみ両立できます。

  6. -CHAINは-FORWARDとのみ両立できます。

  7. -DETAILは -EXTRACTとのみ両立できます。

  8. -FETCHRESYNCまたは -RESYNCは -ROLLBACKとのみ両立できます。

  9. -FORWARDは、-BACKWARD, -ROLLBACK, -SINCE, および-LOOKBACK_LIMITと両立できません。

  10. -FULLは、-EXTRACT, -SHOW, または-VERIFYとのみ両立できます。

  11. -LOSTTRANSは、-RECOVER, -ROLLBACK, または-EXTRACTとのみ両立できます。

  12. -REDIRECTは-RECOVERとのみ両立できます。

  13. -ROLLBACKは、-RECOVER, FORWARD, -CHAIN, -CHECKTN, -REDIRECT, -SHOWのtime修飾子と両立できません。

  14. -SINCEは -FORWARDと両立できません。

  15. -TRANSACTIONは、-EXTRACTおよび-SHOWとのみ両立できます。

  16. -USERは、-EXTRACTおよび-SHOWとのみ両立できます。

  17. -REDIRECTの場合、ファイルリストはアスタリスク(*)であってはなりません。

  18. -ROLLBACKの場合、ファイル・リストはアスタリスク(*)でなければなりません。

  19. Journal selection 修飾子は、-RECOVER、-ROLLBACK、および-VERIFYと両立できません。

  20. Journal time 修飾子は、-ROLLBACKと両立できません。

たとえば、MUPIP JOURNAL -EXTRACT=gtm.mjf -FORWARD -DETAIL は、ジャーナル・レコードをgtm.mjfに細かく抽出するための転送処理を実行する有効なコマンドです。ただし、MUPIP JOURNAL -EXTRACT -REDIRECT=gtm.dat,test/gtm.dat -FORWARD は、-REDIRECTが-EXTRACTと互換性がないため、無効なコマンドです。

MUPIP JOURNALは、排他的(スタンドアロン)で使用できる非アクティブなジャーナルファイルを操作します。ジャーナル・ファイルをテープに書き込むことができます。ただし、MUPIP JOURNALの処理のためには常にディスクにそれらを復元する必要があります。

JOURNALの処理を停止するには、Ctrl+Cを押します。オペレータのアクションまたはエラーによって異常終了するJOURNALコマンドは、不完全な結果を生成します。この場合、結果のデータベースが破損している可能性があります。もしJOURNAL操作を誤って停止した場合は、コマンドを再発行して-RECOVER(または-ROLLBACK)-BACKWARDの正しい結果を生成します。-RECOVER -FORWARDの場合は、バックアップからデータベースを復元し、コマンドを再発行します。

ジャーナル Action修飾子

このセクションでは、ジャーナル・アクション(action)修飾子について説明します。

-EXtract[=<file-name>|-stdout]

ジャーナル・ファイルからの情報を、Mルーチンで処理するためにフォーマットされたファイルに転送します。EXTRACTを実行するプロセスのOSおよびプロセス環境からのタイムゾーン設定によって制御されるように、$H形式を使用してジャーナル・タイム・スタンプをレポートします。

-EXTRACTはオプションの引数として<file-name>または-stdoutをとります。

<file-name>は、出力ファイルの名前を指定します。-stdoutは、ファイルに書き込むのではなく、標準出力(stdout)への-EXTRACT書き込みを指定します。

引数を指定しない場合、MUPIP JOURNALは、フォワード処理フェーズで処理される最初のジャーナルファイルの名前と拡張子が .mjfのファイルタイプを使用して、抽出ファイルの出力ファイル指定を導き出します。もしコマンド行に複数のジャーナル名が指定されている場合、指定された最初のジャーナルは、フォワード・フェーズで処理された最初のジャーナルと異なる場合があることに、注意してください。-EXTRACTが-RECOVER(または-ROLLBACK)で指定されている場合、-JOURNALコマンドは、-RECOVER -FORWARDコマンド、または(-RECOVERまたは-ROLLBACK)-BACKWARDコマンドのフォワード・フェーズで処理されたすべてのジャーナル・レコードを抽出します。

-EXTRACTは、ジャーナルファイルのフォワード処理に適用されます: もしジャーナル・ファイルとJournal Time修飾子の結合状態がフォワード処理を引き起こさない場合、-EXTRACTは出力ファイルを作成しません。

-RECOVER(または-ROLLBACK)とは独立して使用すると、-EXTRACTオプションはデータベースファイルが存在しない場合でさえも結果を生成できますが、利用可能な場合はデータベースにアクセスしようとします。

カスタム照合を持つデータベースにアクセスできない場合や、レプリケーション・インスタンスが凍結され、別のプロセスが保持するアクセスに必要なクリティカルセクションがあり、環境変数gtm_extract_nocolが定義されていて、非ゼロの整数または大文字小文字を区別しない文字列または先頭の部分文字列「TRUE」または「YES」のいずれかを評価すると、MUPIP JOURNAL-EXTRACTはDBCOLLREQ警告を発行し、デフォルト照合を使用して抽出を続行します。gtm_extract_nocolが設定されていないか、正の整数または大文字と小文字を区別しない文字列、または "FALSE"または "NO"の先頭の部分文字列以外の値に評価された場合、MUPIP JOURNAL -EXTRACTはこのような状況に遭遇するとSETEXTRENVエラーで終了します。注意:カスタム照合を使用するデータベースでデフォルトの照合が使用されている場合、MUPIP JOURNAL-EXTRACTによって報告された添字は、データベースに格納されている添え字であり、アプリケーション・プログラムによって読み書きされたものと異なる場合があります。

破損したトランザクションが見つかった場合、破損したトランザクションファイル(詳細については、 ジャーナル Control 修飾子” を参照)に抽出され、将来の完全なトランザクションはすべて失われたトランザクションとみなされ、失われたトランザクションファイルに抽出されます (詳細は、 ジャーナル Control 修飾子” を参照してください)。

トランザクションの壊れやトランザクション処理の喪失を避け、すべてのジャーナル・レコードを1つのファイルに抽出するには、制御修飾子 -FENCES=NONEを使用します。FISは、-RECOVER/-ROLLBACKも指定されている場合は、-FENCES=NONEを使用することを強く推奨します。

-RECover

MUPIP JOURNALにデータベース・リカバリを開始するように指示します。 -RECOVERは、複製されていないデータベースの主要なジャーナル操作を開始します。JOURNAL action修飾子のリストから、RECOVERを単独で選択するか、-ROLLBACKを除く他のaction修飾子を使用して選択します。

time修飾子付きの-RECOVER -FORWARDは、フォワードリカバリを開始します。フォワード・リカバリは、ターゲット・データベース・ファイルの現在のジャーナリング状態を無視します。データベースの更新をフォワード処理中に、ターゲットデータベースファイルのジャーナリングを無効にします(現在、有効(ENABLE)にしている場合)。ただし、ジャーナリングが有効(ENABLE)になってからリカバリの前にオンになっている場合を除き、正常なリカバリが完了した時点で(必要に応じて)データベースのジャーナリング状態をリストアします。後者の場合、リカバリーが成功した時点のジャーナリング状態は、ENABLEおよびOFFに切り替わります。JOURNAL -RECOVER -FORWARDのデータベースへの論理更新に対して、ジャーナリングは実行されません。もしターゲット・データベースの現在のトランザクション番号が、その領域(Region)リージョンの指定されたジャーナル・ファイルで処理される最初のトランザクション番号よりも小さい場合、-NOCHAIN修飾子が指定されていない限り、-RECOVERは前世代のジャーナル・ファイルを処理に含めようとします。ジャーナル・ファイルの連続した以前のリンクに続いて、-RECOVERは、ジャーナル・ファイルが作成されたときのトランザクション番号がターゲット・データベースのトランザクション番号以下になるまで、以前の世代のジャーナル・ファイルを含めようとします。 -RECOVERは、前世代のジャーナル・ファイルが含まれている場合、1つ以上の情報メッセージを発行します。もしターゲット・データベースの現在のトランザクション番号が、リージョンに対して処理される最古のジャーナル・ファイルの最初のトランザクション番号と等しくない場合、-RECOVERはエラーで終了します。もし単一領域(Region)の複数のジャーナル・ファイルが -RECOVER -FORWARDで指定されている場合、-NOCHAINが指定された場合と同様に動作します。もしジャーナルファイルが完全なセットでない場合(たとえば、mumps1.mjlとmumps3.mjlが指定され、mumps2.mjlがコマンド・ラインから欠落している場合)、MUPIP JOURNALは、指定されたジャーナルファイルがデータベーストランザクション番号の点で不連続であるため、エラーを生成します。一方、mumps3.mjlだけを指定すると、リカバリにmumps2.mjlとmumps1.mjlが自動的に含まれます。

time修飾子付きの -RECOVER -BACKWARDは、逆方向(バックワード)リカバリーを開始します。バックワード・リカバリの場合、ターゲット・データベース・ファイルは、GT.Mが最後の完了トランザクションをジャーナルに書き込んだときと同じにする必要があります。データベースは障害のための不確定状態にある可能性があるため、この一致のために正確なチェックは不可能です。もしターゲット・データベースにジャーナリング DISABLE(またはENABLE, OFF)がある場合、-RECOVER -BACKWARDはエラー・メッセージとともに終了します。

もしターゲット・データベースに、ジャーナリング ENABLE, ON がある場合、しかし、データベース・ファイル・ヘッダーのジャーナル・ファイル名が、その領域(Region)に指定された最新世代のジャーナル・ファイル名と一致しない場合、-RECOVER はエラーで終了します。

JOURNAL -RECOVER -BACKWARDのフォワード処理フェーズでは、MUPIPはデータベースへ論理更新を記録します。また、前のイメージも作成されます。 -RECOVER -BACKWARD または -ROLLBACKには常にジャーナリングENABLEとONが必要です。

もし不完全な囲い(フェンス)を持つトランザクションが見つかった場合、それは壊れているとみなされます。リカバリのフォワード・フェーズ中に、破損したトランザクションの後に、完全なトランザクション(囲い込または囲い込なし(fenced or unfenced))が見つかった場合、 -RECOVERはエラーカウントをインクリメントします。もし -ERRORLIMITに達すると、完全なトランザクションは失われたトランザクション・ファイルに移動し、それ以外の場合は、データベースに適用されます。

壊れたトランザクションや失われたトランザクションはすべて、-RECOVERYの結果として使用可能になります。それらは2つの異なるテキストファイルにジャーナル抽出形式として書かれます。それらは破損したトランザクションファイルと失われたトランザクションファイルです。ジャーナル Control 修飾子” の中の BROKENTRANS と LOSTTRANS のセクションを参照してください。

囲い込(FENCES="PROCESS" または FENCES="ALWAYS")を使用して JOURNAL -RECOVERを実行する場合、論理データベースを構成するデータベース・ファイルの完全セットに対応するすべてのジャーナル・ファイルをコマンドに含めることが不可欠です。もし指定されたジャーナルのセットが不完全な場合、リカバリーは欠落している領域を含むすべてのトランザクションが壊れていること報告しす。典型的に、これはリカバリーの結果が不十分であるか、または、使用不能でさえあることを意味します。

MUPIP JOURNAL -RECOVER は、リカバリが発生する前にデータベース・ファイルに排他的にアクセスする必要があります。これにより、データベース・ファイルへの排他的アクセスが維持されます。つまり、リカバリ時にデータベースファイルにアクセスできなくなります。

もしtime修飾子が指定されていない場合、-BACKWARD -RECOVER / -ROLLBACKは最適なリカバリーを実行します。最適なリカバリは、データベースが健全な状態にあるかどうかをチェックし、クラッシュがあった場合に自動リカバリを試みます。必要に応じて、一貫した開始点を得るために、いくつかの前世代のファイルを含むように最適なリカバリに戻って、そして一貫したアプリケーション状態を維持しながら使用可能なジャーナルレコードが許可される限り、フォワードに進みます。最後に、データベースのジャーナリング状態は ENABLE, ONのままです。gtmスクリプトは、実行ごとに最適なリカバリを実行することに注意してください。

データベース・ファイルが -RECOVER -BACKWARDによってロールバックされると、対応するジャーナル・ファイルもロールバックされ、したがって、2つが同期されます。-RECOVER -BACKWARDは新しいジャーナル・ファイルを作成します。もしジャーナルレコードのフォワード再生が必要でない場合、新しく作成されたジャーナルファイルは空のままであり、データベースは新しいジャーナルファイルを指し示します。新しいジャーナル・ファイル内のジャーナル割り当ておよび拡張の値は、データベースからコピーされます。新しいジャーナル・ファイル内のautoswitchlimitの値は、最新の世代のジャーナル・ファイルから折り返し点ジャーナル・ファイルの生成までのすべてのジャーナル・ファイルのautoswitchlimit値の最大値です  (折り返し点は、バックワード処理が停止し、転送処理が開始されるジャーナル・ファイル内のポイントです)。新しいジャーナルファイル内のジャーナル 割り当て / 拡張値は、最大のautoswitchlimit の値を共有するジャーナルファイルのセットの最も早い世代から取得されます。

GT.Mは、-RECOVER -BACKWARDによってすべての内容が削除(ロールバック)されたジャーナル・ファイルに接頭辞rolled_bak_を追加します。GT.Mはリカバリが成功した後でこれらのファイルを使用しないため、移動または削除を検討することをお勧めします。将来のデータベース・リカバリには、rolled_bak *ファイルを使用しないでください。もし rolled_bak *ファイルを処理する必要がある場合は、rolled_back *ファイルからジャーナル・レコードを抽出し、Mプログラムを使用してそれらを処理する必要があります。

-ROLLBACK [{-ON[LINE]|-NOO[NLINE]}]

-ROLLBACKは、レプリケートされたデータベースの主要なジャーナル操作を開始します。MUPIP JOURNALコマンドは、他のアクション修飾子で-ROLLBACKを指定できますが、-RECOVERでは指定できません。もし -FETCHRESYNCを使用しない場合、データベースは最後の一貫性のある状態にまでロールバックします。ジャーナル・ファイル選択にはアスタリスク(*)修飾子のみが使用できます。つまり、-ROLLBACKはジャーナル・ファイルを単独で選択します。

-NOO[NLINE]

ROLLBACKにデータベースとレプリケーション・インスタンス・ファイルへの排他アクセスが必要であることを指定します。つまり、データベースとレプリケーション・インスタンス・ファイルは、-ROLLBACK -NOONLINEの間ではアクセスできません。

デフォルトでは、MUPIP JOURNAL-ROLLBACKは-NOONLINEです。

-ON[LINE]

データベースとレプリケーション・インスタンス・ファイルへの排他アクセスを必要とせずにROLLBACKを実行するように指定します。

GT.Mは、プロセスが同時発生する MUPIP JOURNAL -ONLINE -ROLLBACKを検出するたびに ISV $ ZONLNRLBKをインクリメントします。

もしMUPIP JOURNAL -ONLINE -ROLLBACKの完了後のデータベースの論理状態が、MUPIP JOURNAL -ONLINE -ROLLBACKの開始時のデータベースの論理状態と一致する場合、すなわち、コミットされていないTPトランザクションまたは非TPミニ・トランザクションのみが削除またはコミットされると、すべてのトランザクション(TPまたは非TP)によって再起動を招きます。

もしMUPIP JOURNAL -ONLINE -ROLLBACKがデータベースの論理状態を変更した場合、その動作は次のようになります:

  • -ONLINE -ROLLBACK は ISV $ZONLNRLBKをインクリメントします。

  • トランザクション内のトリガーコードを含むTPトランザクションでは、-ONLINE -ROLLBACKはトランザクションを再開します。

  • トリガーによって引き起こされる暗黙のトランザクションを含む非TPミニ・トランザクションでは、-ONLINE -ROLLBACKはDBROLLEDBACKエラーを生成し、$ETRAPまたは$ZTRAPが有効な場合は、エラー・トラップを呼び出します。

MUPIP JOURNAL -ONLINE-ROLLBACKが動作している間に試行されたユーティリティ/コマンドは、ROLLBACKが完了するまで待機します; $gtm_db_startup_max_wait 環境変数は待機時間を設定します。$gtm_db_startup_max_wait の詳細については “環境変数” を参照してください。

[注意] 注意

MUPIP ROLLBACK -ONLINEは状態空間でデータベースをバックワードに取ることができるので、呼び出すときに実行しようとしていることを理解していることを確認してください。FISはこれをはるかに大きなプロジェクトに向けた一歩として発展させ、広く有用ではないと予想しています。

-ROLLBACK -BACKWARDは、以下の条件でエラーメッセージを表示して終了します:

  1. 処理されたジャーナル・ファイルに対応するデータベースの領域(Region)には、レプリケーション状態がオフになっています。レプリケートされた領域(Region)と少なくとも1つの複製されていないがジャーナリングされた領域(Region)がある構成は、複製元サーバーによって許可されていないことに注意してください。このような構成では、ジャーナル・プールを設定せずに起動時にソースサーバーがエラーになります。レプリケートされた領域(Region)へすべてのGT.Mの更新がジャーナル・プールのセットアップを持つためにソース・サーバーが必要とされて以来、構成がレプリケートされた領域(Region)、また、「複製されないそしてジャーナルされてない」(non-replicated-and-non-journaled)領域のみを持つために変更されるまで、更新は不要です。

  2. コマンド引数により識別されたジャーナル・ファイルに対応する任意のデータベース領域は、ジャーナリングス・テータス DISABLEまたはENABLEとOFFを持ちます。

  3. ジャーナルファイルに対応する任意のデータベース領域は、ジャーナルステータスENABLE そしてONを持ち、しかし、データベースファイルのヘッダーに指定されたジャーナルファイル名は、コマンドの引数によって識別される1つよりも異なっています。

もし不完全な囲い(フェンス)を持つトランザクションが見つかった場合、それは壊れているとみなされます。ロールバックの持続期間については、レプリケーションでは、すべての領域ではOFFにされ、そして、ロールバックの終わりでONに戻されます。

ロールバックの前方フェーズの間に、もし完全なトランザクション(フェンスされている、または、フェンスされてない)が、破損したトランザクションの後に発見されるならば、それは失われたトランザクションとして考えられます。ロールバックのフォワードフェーズの間では、MUPIPジャーナルはDBへ論理更新されます。すべてが壊れそして失われたトランザクションは、ロールバックの結果として利用できるようになります。これらは、ジャーナルを抽出するフォーマットとして異なる2つのテキストファイルに書き込まれます。

DBファイルが -ROLLBACKによってロールバックされる時には、2つが同期されるように、対応するジャーナルファイルもロールバックされます。-ROLLBACKは、その時には新しいジャーナルファイルを作成します。もしジャーナルレコードのないフォワード再生が必要ならば、新しく作成されたジャーナルファイルは、空になりそして新しいジャーナルファイルへのデータベースのポイントになります。新しいジャーナルファイル内のジャーナル 割り当て/拡張/自動スイッチ制限(allocation/extension/autoswitchlimit)の値は、-RECOVERの元で以前のセクションの -RECOVER -BACKWARDで説明した方法で設定されます。

接頭辞 roll_bak_がジャーナル・ファイルに追加され、その全内容が-ROLLBACKによって除去されます。これらのファイルは、MUPIP JOURNAL -RECOVERの後にGT.Mで使用されず、必要に応じて移動/削除することができます。

-ROLLBACKの場合、ターゲット・データベース・ファイルは、GT.Mが最後の完了トランザクションをジャーナルに書き込んだときと同じにする必要があります。

もし -FETCHRESYNCまたは -RESYNC修飾子が指定されていない場合、MUPIPは最適なロールバックを実行します(つまり、データベースが健全な状態にあるかどうかをチェックし、クラッシュが発生した場合にデータベースを自動的にリカバリしようとします)。

[注意] 注意

もしROLLBACK(-NOONLINEまたは-ONLINEのいずれか)が異常終了した場合(kill -9のため)、データベースファイルのヘッダーのFILE破損フィールドによって示される可能性のある矛盾した状態になることがあります。このフィールド・セットを残してROLLBACKが終了すると、他のすべてのプロセスはデータベースとの対話を試みるたびにDBFLCORRPエラーを受け取ります。リスクの降順でこの条件をクリアすることができます:

  • ROLLBACKを完了して再開する

  • MUPIP SET -FILE -PARTIAL_RECOV_BYPASS

  • DSE CHANGE -FILEHEADER -CORRUPT=FALSE -NOCRIT

ただし、MUPIPアクションとDSEアクションでは、データベースの状態が一貫しているとは限りません。 MUPIP INTEGでデータベースの整合性をチェックしてください。

-SHow=show-option-list

ジャーナル・ファイルについて表示するJOURNALコマンドの情報を指定します。

ジャーナル・ファイル全体を処理するには、-FORWARDと-SHOWを一緒に使用します(ただし、-RECOVERは使用しないでください)。 -RECOVER -FORWARD コマンド、または、 -RECOVER(または-ROLLBACK)-BACKWARDコマンドのフォワード・フェーズの間で処理されたすべてのジャーナル・ファイル/レコードを検討するには、-SHOWに-RECOVER(または-ROLLBACK)を付けて指定します。-RECOVER(または-ROLLBACK)を指定しないと、-SHOWはデータベースへのアクセスを必要としません。

表示オプションの一覧(show-option-list)には次のものが含まれます(これらは小文字を区別しません):

  1. AL[L]

    ジャーナルファイルに関する利用可能な情報のすべてのタイプを表示します。show-option-listを省略すると、ALLがデフォルトです。

  2. AC[TIVE_PROCESSES]

    JOURNALコマンドのtime修飾子によって暗黙または明示的に指定された期間の最後にアクティブなすべてのプロセスを表示します。

  3. B[ROKEN_TRANSACTIONS]

    JOURNALコマンドでカバーされている期間の最後に、不完全なフェンス・トランザクションを持つすべてのプロセスを表示します。

  4. H[EADER]

    ジャーナル・ファイルのヘッダー情報を表示します。もし MUPIP JOURNALコマンドに -SHOW=HEADERアクション修飾子だけが含まれている場合、GT.Mは、-BACKWARD または -FORWARDを指定しても、ジャーナル・ファイル・ヘッダ(内容ではなく)のみを処理します。ジャーナル・ファイル・ヘッダーのサイズは64Kです。

    HEADERは、ジャーナルファイルのヘッダにて、ほぼすべてのフィールドが表示されます。NODEフィールドは、最初の12文字の最大まで表示されます。SHOW=HEADER の出力の例を次に示します:

    -------------------------------------------------------------------------------
    SHOW output for journal file /home/jdoe/.fis-gtm/V6.0-000_x86/g/gtm.mjl
    -------------------------------------------------------------------------------
    Journal file name       /home/jdoe/.fis-gtm/V6.0-000_x86/g/gtm.mjl
    Journal file label      GDSJNL23
    Database file name      /home/jdoe/.fis-gtm/V6.0-000_x86/g/gtm.dat
     Prev journal file name /home/jdoe/.fis-gtm/V6.0-000_x86/g/gtm.mjl_2012310190106
     Next journal file name
     Before-image journal                      ENABLED
     Journal file header size                    65536 [0x00010000]
     Virtual file size                            2048 [0x00000800] blocks
     Journal file checksum seed             2272485152 [0x87735F20]
     Crash                                       FALSE
     Recover interrupted                         FALSE
     Journal file encrypted                      FALSE
     Journal file hash                           00000000000000000000000000000000000
     Blocks to Upgrade Adjustment                    0 [0x00000000]
     End of Data                                 65960 [0x000101A8]
     Prev Recovery End of Data                       0 [0x00000000]
     Endian Format                              LITTLE
     Journal Creation Time         2012/11/06 17:30:33
     Time of last update           2012/11/06 17:30:33
     Begin Transaction                               1 [0x0000000000000001]
     End Transaction                                 1 [0x0000000000000001]
     Align size                                2097152 [0x00200000] bytes
     Epoch Interval                                300
     Replication State                          CLOSED
     Jnlfile SwitchLimit                       8386560 [0x007FF800] blocks
     Jnlfile Allocation                           2048 [0x00000800] blocks
     Jnlfile Extension                            2048 [0x00000800] blocks
     Maximum Journal Record Length             1048672 [0x00100060]
     Turn Around Point Offset                        0 [0x00000000]
     Turn Around Point Time                          0
     Start Region Sequence Number                    1 [0x0000000000000001]
     End Region Sequence Number                      1 [0x0000000000000001]
    Process That Created the Journal File:
    PID        NODE        USER     TERM JPV_TIME           
    ---------------------------------------------------------
    0000006706 jdoe-laptop jdoe    0    2012/11/06 17:30:33                   
    Process That First Opened the Journal File:
    PID        NODE        USER     TERM JPV_TIME           
    ---------------------------------------------------------
    0000006706 jdoe-laptop jdoe    0    2012/11/06 17:30:33     
  5. P[ROCESSES] 

    JOURNALコマンドのtime修飾子によって暗黙的または明示的に指定された期間中にアクティブなすべてのプロセスを表示します。

  6. S[TATISTICS] 

    JOURNALコマンドのタイム修飾子によって暗黙的にまたは明示的に指定された期間中に、プロセスされたすべてのジャーナルレコードのタイプの数を表示します。SHOW=STATISTICS の出力の例を次に示します:

    -------------------------------------------------------------------------------
    SHOW output for journal file /home/jdoe/.fis-gtm/V6.0-000_x86/g/gtm.mjl
    -------------------------------------------------------------------------------
    Record type    Count
    ----------------------
       *BAD*          0
       PINI           2
       PFIN           2
       ZTCOM          0
       KILL     1333533
       FKILL          0
       GKILL          0
       SET            0
       FSET           0
       GSET           0
       PBLK        4339
       EPOCH          2
       EOF            1
       TKILL          0
       UKILL          0
       TSET           0
       USET           0
       TCOM           0
       ALIGN         49
       NULL           0
       ZKILL          0
       FZKIL          0
       GZKIL          0
       TZKIL          0
       UZKIL          0
       INCTN       4314
       AIMG           0
       TZTWO          0
       UZTWO          0
       TZTRI          0
       UZTRI          0
       TRUNC          0
    %GTM-S-JNLSUCCESS, Show successful
    %GTM-S-JNLSUCCESS, Verify successful
    %GTM-I-MUJNLSTAT, End processing at Tue Nov  6 17:42:21 2012

次の例では、ジャーナル・ファイル・ヘッダーに格納されている対称キー(symmetric key)の暗号化ハッシュを表示します(出力は長い行です)。

$ mupip journal -show -backward mumps.mjl 2>&1 | grep hash
Journal file hash F226703EC502E975784
8EEC733E1C3CABE5AC146C60F922D0E7D7CB5E
2A37ABA005CE98D908B219249A0464F5BB622B72F5FDA
0FDF04C8ECE52A4261975B89A2

-[NO]Verify

ジャーナル・ファイルの整合性を検証します。この修飾子には値を指定できません。 -VERIFY はファイルをスキャンし、正当な形式であるかどうかをチェックし、そうでなければ、データベースファイルに影響を与えずに終了します。

-VERIFYは、-FORWARDと一緒に指定すると、ジャーナル・ファイル全体を検証します。-NOVERIFY -FORWARDの場合、ジャーナル・ファイルの末尾のみが領域(Region)間の整合性を検証されます。どちらの場合も、もし -RECOVERも指定されている場合、ジャーナルレコードのフォワード再生は、検証パスが完全でエラーのない場合にのみ、別のパスで行われます。

-VERIFYは-BACKWARDと一緒に、ジャーナル・ファイルの終わりから折り返し点までのすべてのジャーナル・レコードを検査します。-VERIFY -BACKWARD が -RECOVERまたは-ROLLBACKとともに指定されている場合、バックワード処理には、折り返し点までの検証を行う最初のパスと、イメージ(PBLK)レコードの前に適用する2回目のパスとの、2つのパスに関連性があります。

-NOVERIFY -BACKWARDを -RECOVER または -ROLLBACKとともに指定すると、検証と同じパスでPBLKがデータベースに適用されます。これにより処理が高速化されます。 しかし、このアプローチの欠点は、バックワード処理の途中で終了する検証の場合、領域(Region)横断の完全性の保護がないことです。FISでは、-VERIFYと-RECOVERまたは-ROLLBACKの使用を推奨しています。

-RECOVER(または-ROLLBACK)とは独立して使用する場合、 - [NO] VERIFYオプションはデータベースへのアクセスを必要としません。 デフォルトは -VERIFY です。

ジャーナル Direction 修飾子

次の2つの修飾子はジャーナル処理のディレクション(方向)を制御します:

-BACKWARD

MUPIP JOURNAL処理はジャーナルファイルの末尾から続行する必要があることを指定します。もしアクションに -RECOVERが含まれている場合、フォワード方向(フォワード・フェーズ)でデータベース更新を反転させて処理する前に、JOURNAL-BACKWARDは、ファイルの終わりから明示的にまたは暗示的に指定された点(折り返し点)まで戻すのにのビフォワ・イメージ(before-image)を復元します。

[注意] 注意

-BACKWARDは-FORWARDと互換性がありません。

-FO[RWARD]

指定されたaction修飾子のMUPIP JOURNAL処理が、与えられたジャーナル・ファイルの先頭から始まることを指定します。-RECOVER action修飾子を処理する場合、特定のケースでは、MUPIP JOURNALは、指定されたジャーナル・ファイルの最初のレコードの前に移動する必要があります。つまり、前世代のジャーナル・ファイルから開始できます (詳細は、“-RECover ” を参照してください)

もしコマンドラインで複数のジャーナルファイルが指定されている場合、 -FORWARDは、作成時間に基づいて各領域(Region)内のジャーナル・ファイルをソートし、最も古いジャーナル・ファイルから処理します。-NOCHECKTN修飾子が指定されていないかぎり、-FORWARDは、タイムスパンおよびトランザクション番号スパンの両方で連続していることを確認するために、各領域(Region)に対応するジャーナル・ファイルのチェックを実行します。 -FORWARDは、不連続性を検出するとエラーを出します。

[注意] 注意

-FORWARDは、-BACKWARDおよび-ROLLBACKと互換性がありません。

ジャーナル Time 修飾子

時間を指定するジャーナル修飾子は、絶対時刻または相対時刻(delta time)形式の引数を受け入れます。時刻引数は引用符( "")で囲みます。開始と終了の引用符をUNIXシェルで処理しないようにするには、両方の前にバックスラッシュ(\)区切り文字を含めます。

絶対的なフォーマットは day-mon-yyyy hh:mm:ss で、day は月の日付を表し、monは月の名前を短縮した3文字を示し(例えば、Jan, Feb,..)年yyyyと時刻の hh はスペースで区切られています。絶対的な時間は、時(hours)の前に"-- "を付けて今日の日付を示してください。

デルタフォーマットは day hh:mm:ss で、日、時、分、秒、の数を示しますが、ここでは、日と時間(hh)は、スペースで区切られています。もしデルタ時間が1日未満の場合は、ゼロ(0)ではじまりスペースが続く必要があります。

デルタ時間は、常にMUPIP JOURNALコマンドへ引数によって指定されたすべてのジャーナルファイルの中で最後のレコードの最大時間への相対パスです。

[注意] 注意

すべての time修飾子は、 -ROLLBACKと互換性がありません。

次のセクションでtime修飾子の詳細について説明します:

-A[FTER]=time

ジャーナルとポイントを識別する参照タイムスタンプを指定し、その後に、JOURNALはジャーナルファイルで処理を開始します。このtime修飾子は、-FORWARD のみに適用されます。

もし -AFTER= がジャーナル・ファイルに最後に記録された時刻に続き、または、-BEFORE= time に続く時間を提供する場合、ジャーナル処理は結果を生成せず、警告メッセージが表示されます。もし -AFTERがコマンド行で指定されたジャーナル・ファイルに記録された最初の時刻より前の時刻を提供し、そして、そのジャーナル・ファイル用の前世代のジャーナル・ファイルが存在する場合、前世代のジャーナル・ファイルは処理に含まれません 。前世代のジャーナル・ファイルをコマンド行で明示的に指定して、考慮する必要があります。

-BEFORE と-AFTERを一緒に使用すると、処理がジャーナル・ファイルの特定の期間に制限されます。

-BE[FORE]=time

-FORWARDまたは-BACKWARDのアクションの終了時刻を指定します。指定された時刻は、ジャーナル・ファイルのタイム・スタンプを参照します。もし -BEFORE= がジャーナル・ファイルに記録された最初の時刻より以前の時刻を指定するか、または、-AFTER= または -SINCE= 時刻より以前の時刻を指定すると、JOURNAL処理は結果を生成せず、警告メッセージが表示されます。

もし -BEFORE= の時間がジャーナル・ファイルに記録された最後の時間を超える場合、ジャーナル処理は、修飾子を効果的に無視し、ジャーナル・ファイルの最後で終了します。デフォルトでは、JOURNAL処理はジャーナルファイルの最後で終了します。

-[NO]LOO[KBACK_LIMIT][=lookback-option-list]

オープン・トランザクション・フェンス(囲い込)を解決しようとしている間は、JOURNAL -BACKWARDが過去の折り返し点をどのくらいまで処理するかを指定します(ジャーナル・ファイルの明示的または暗黙的なポイントから -RECOVER が逆方向に進み、データベースを順方向に処理します)。このオプションは、ZTSTARTとZTCOMMITを持つトランザクション・フェンスでのみに適用されます。TSTARTとTCOMMITを持つトランザクション・フェンスでは、-RECOVERは常に開いているトランザクション・フェンスを解決します。

-LOOKBACK_LIMIT=options は、timeとトランザクション数が含まれます。-NOLOOKBACK_LIMITは、オープン・トランザクション・フェンスを解決するために、必要に応じて、JOURNAL-BACKWARDがジャーナル・ファイルの先頭まで幅広く処理できることを指定します。-LOOKBACK_LIMIT= は-FORWARDと互換性がありません。

-FENCES=NONEの場合、JOURNAL処理は -LOOKBACK_LIMIT を無視します。

-LOOKBACK_LIMITオプションは次のとおりです:

  • TIME=time

    これは、LOOKBACKをデルタまたは絶対ジャーナル時間の指定された量だけ制限します。

  • OPERATIONS=integer

    これにより、LOOKBACKは指定されたデータベース・トランザクション数に制限されます。

TIME LOOKBACKオプションの名前とその値は、引用符( "")で囲む必要があります。

例:

-lookback=\"time=0 00:00:30\"

-LOOKBACK_LIMIT= に両方のオプションを指定する場合は、カンマ(,)で区切る必要があります。たとえば、次のようにします:

-lookback=\"time=0 00:00:30,operations=35\"

-LOOKBACK_LIMIT= に両方のオプションを指定すると、最初に到達した限界値でLOOKBACKを終了します。

デフォルトでは、MUPIP JOURNALは、オープン・フェンスを解決するために、-SINCE= 以前のジャーナル時間を5分間提供する -LOOKBACK_LIMIT=\"TIME=0 00:05\" を使用します。最も古いジャーナルファイルの開始よりもずっと前に制限を指定する -LOOKBACK_LIMITは、-NOLOOKBACK_LIMITが指定されているかのように動作します。

-SI[NCE]=time

-BACKWARDを指定したaction修飾子の開始(またはチェックポイント)時間を指定します、つまり、-SINCEは、フォワード処理を開始する前に、JOURNAL -BACKWARDが処理する時間(ジャーナル・ファイルの終わりから)を指定します。

指定された時刻は、ジャーナル・ファイルのタイム・スタンプを参照します。もし JOURNAL -BACKWARD が -SINCE= time を見つけたときにオープン・フェンス・トランザクションがある場合、コマンドが -FENCES=NONEも指定されていないかぎり、それらを解決するためにバックワード処理を続けます。もし -SINCE= 時間 がジャーナル・ファイルに記録された最後の時間を超えた場合、または、-BEFORE= 時間の後に続く場合、JOURNAL処理は修飾子を効果的に無視し、警告メッセージを表示します。

デフォルトでは、-SINCE= time は 0:00:00:00で、ジャーナル・ファイルの最後の時間(最後のジャーナル・レコードが更新された時刻)を示します。

ジャーナル シーケンス番号 修飾子

これらの修飾子は、-ROLLBACKのみ互換性があります。

-FET[CHRESYNC]=<port number>

LMS構成では、レプリケートするインスタンスを、オリジナルのインスタンスがそれに追いつくために更新を送信することができる位置から共通の同期ポイントへ、ロールバックします。このコマンドは、前のオリジナルのインスタンスを、現在のオリジナルのインスタンスが引き継いだ点のジャーナル・シーケンス番号にロールバックします。fetchresync修飾子の形式は次のとおりです:

-fetchresync=<port number> -losttrans=<extract file> file-list

<port number> は、ロールバックコマンドがリファレンス・ポイントを取得している時に使用しているその通信ポート番号です。受信側サーバーで使用されているものと同じロールバック用の、オリジナルのインスタンスで常に同じ<port number>を使用してください。

[重要] 重要

同期外れ状態の可能性を避けるために、複製インスタンス上の任意のソースサーバを起動する前に、mupip journal -rollback -fetchresync コマンドを無条件にスクリプト化することを、FISはお勧めします。

オリジナルのインスタンスによって送信された参照ポイントは、オリジナルのインスタンスが一度保持していたRESYNC_SEQNO(後述)です。データベース/ジャーナル・ファイルは、以前のRESYNC_SEQNO(つまり、オリジナルのインスタンスから受信したものか、または、ローカルに維持されているもの)からロールバックされます。もし -fetchresync を使用しない場合、データベースは最後の一貫した複製インスタンス状態にロールバックされます。

システムは、この必須の修飾子で指定されたファイル<extract file> の中で、抽出される失われたトランザクションを保存します。失われたトランザクションの検索の開始点は、-fetchresync操作でオリジナルのインスタンスから取得されたJNL_SEQNOです。 もし -fetchresync が指定されていない場合、<extract file>は、一貫性のある状態に到達するためにロールバックプロシージャによって取り消された整合性の悪い(post-consistent-state transaction)トランザクションをリストします。

[注意] 注意

抽出された紛失トランザクションのリストには、処理中に発生したシステム障害のために壊れたトランザクションが含まれることがあります。これらのトランザクションを解決しないでください。コミットされていないとみなされます。

注意 注意

もし進行中の ROLLBACK -FETECHRESYNC 操作を中断した場合、または、もし2つのインスタンス間のTCP接続が切断された場合、データベース・ヘッダーが破損する可能性があります。回避策は、ROLLBACK -FETCHRESYNC操作を再始動するか、または、FETCHRESYNC操作がタイムアウトするまで60秒待つことです。

例:

$ mupip journal -rollback -fetchresync=2299 -losttrans="glo.lost" -backward 

このコマンドは、オリジナルのインスタンスが更新を送信してそれに追いつくことができる位置から共通の同期ポイントへ移動させるために、複製インスタンス上の ROLLBACK -FETCHRESYNC操作を実行します。また、複製インスタンス上に存在するが、しかし、ポート2299のオリジナルのインスタンス上には存在しない、すべてのそれらトランザクションの失われたトランザクションファイルglo.lostも生成されます。

-RES[YNC]=<journal sequence number>

GT.Mがデータベース/ジャーナルファイルをロールバックして特定のポイントにロールバックする必要があるジャーナルシーケンス番号を指定します。もし最後の一貫性のある状態よりも大きいジャーナルシーケンス番号を指定すると、GT.Mはデータベース/ジャーナルファイルを最後の一貫性のある状態にロールバックします。通常の動作条件下では、この修飾子は必要ありません。

ジャーナル Control 修飾子

次の修飾子はジャーナル処理を制御します:

-[NO]AP[PLY_AFTER_IMAGE]

バックワード・リカバリーまたはロールバックのフォワード処理の一部として、イメージ・レコード(AIMG)をデータベースに適用される後に指定します。AIMGは、DSEの更新が原因で発生した変更の直後に、GTMによりキャプチャーされたデータベース更新の"スナップショット"です。デフォルトでは、バックワード・リカバリーまたはロールバックのフォワード・フェーズの間に、AIMGレコードはデータベースに適用されます。

デフォルトでは、-RECOVER -FORWARD はAIMGレコードをデータベースに適用しません。-APPLY_AFTER_IMAGEは、-RECOVER または -ROLLBACK action 修飾子とのみ互換性があります。

-BR[OKENTRANS]=<extract file>

-BROKENTRANSは、-ROLLBACK、-RECOVER、-EXTRACTのオプション修飾子です。もしこれが指定されておらず、破損したトランザクション・ファイルの作成が必要な場合、MUPIP JOURNALは、処理中の現在のジャーナルファイルの名前を .broken 拡張子を使って1つ作成します。

もし selection修飾子が指定されている場合、破棄されたトランザクションの決定(したがって、トランザクションの決定も同様に失われます)は、selection修飾子でフィルタリングされたジャーナル・ファイルに基づいて行われます。これは、selection修飾子の性質に応じて、トランザクションのジャーナルレコードが完全であるとみなされるか、または、破損または失われたとみなされる可能性があることを意味します。selection修飾子とともに -FENCES=NONEを使用すると、すべてのジャーナル・レコードが完全であるとみなされ、したがって、トランザクション処理が壊れたり失われたりするのを防ぐことができます。

-[NO]CHA[IN]

-CHAINを指定すると、ジャーナル処理で、以前の世代のジャーナルファイルを-FORWARDで含めることができます。もし JOURNAL -RECOVERが以前の世代のジャーナルファイルを処理する必要があり、かつ、-NOCHAINが指定されている場合、MUPIP JOURNALはエラーで終了します。

-CHAINがデフォルトです。

-[NO]CHE[CKTN]

-CHECKTNは、JOURNAL -FORWARDが、各領域(Region)に対して、その領域(Region)に対して処理される最も古いジャーナル・ファイルの開始トランザクション番号がデータベース・ファイル内の現在のトランザクションと同じであり、かつ、すべてのジャーナル・ファイルの終了トランザクション番号が、所定の領域(Region)に対する次世代ジャーナル・ファイルの開始トランザクション番号に変換するために、等しいことを確認する必要があることを指定します。デフォルトでは、-FORWARDは-CHECKTNを使用します。

-NOCHECKTNは、トランザクションの整合性をチェックするための組み込みのメカニズムをオーバーライドすることによって、フォワードリカバリを強制します。回復されたデータベースおよびジャーナル・ファイルで整合性の問題が発生する可能性があるため、-NOCHECKTNは慎重に使用してください。

-CHECKTNは-BACKWARDおよび-ROLLBACKと互換性がありません。

-[NO]ER[ROR_LIMIT][=integer]

MUPIP JOURNAL処理を受け入れるエラーの数を指定します。エラーの数が -ERROR_LIMITを超えると、-INTERACTIVE修飾子は、JOURNAL処理がオペレータに対して停止するか延期するかどうかを決定します。-NOERROR_LIMITは、エラーのためにMUPIP JOURNALが停止するのを防ぎます。ジャーナル処理は、エラーの数にかかわらず、ジャーナル・ファイルの終わりに達するまで続きます。

-NOERROR_LIMITは -ERROR_LIMIT=0と同じではないことに注意してください。

デフォルトでは、MUPIP JOURNALは-ERROR_LIMIT=0を使用し、最初のエラーで適切なエラー処理が開始されます。クラッシュの場合、そこではジャーナルファイルの末尾にいくつかの不完全なジャーナルレコードがあるかもしれない。MUPIP JOURNALは、エラーとしてこれらをみなしません。加えて、フェンスで囲まれたトランザクションは、エラーとはみなされませんが、壊れています。

リカバリーのフォワードフェーズの間では、もし壊れたトランザクションが見つかったならば、後で処理されるすべての論理レコードは、疑わしいと見なされます。もし壊れたトランザクションの後に完全なトランザクションが見つかると、MUPIP JOURNAL -RECOVERはエラーカウントをインクリメントし、エラー制限よりも小さい場合はデータベースに適用します。それ以外の場合は、失われたトランザクションとして処理され、抽出されます。もし壊れたトランザクションの後に完全なトランザクションが見つかった場合、MUPIP JOURNAL-ROLLBACKはそれを損失トランザクションとして扱い、エラー限度に関係なく抽出します。

もし MUPIP JOURNALが処理中にエラー・カウントを増分する必要がある場合は、 次の場合を除いて、発生したすべてのエラーに対して警告メッセージが発行されます。ただし、エラーカウントが増分されても警告メッセージは表示されません:

  • 壊れたトランザクションの後に完全なトランザクションが見つかった場合

  • -EXTRACT -FULLでエラーが発生した場合

もしMUPIP JOURNALがエラーカウントの値が0以外で正常に完了すると、戻りステータスは成功ではなく警告になります。

-FE[NCES][=fence-option]

どのようにJOURNALがフェンスで囲まれたトランザクションを処理するかを指定します。フェンスで囲まれたトランザクションは、TSTARTまたはZTSTARTコマンドとそれぞれに続くTCOMMITまたはZTCOMMITコマンドにより先行するデータベースの更新が成立する論理トランザクションです。TSTARTまたはZTSTARTとTCOMMITまたはZTCOMMIT間のすべての更新は共にに発生するように設計され、そのため、ジャーナルリカバリーデータベースはフェンスで囲まれたトランザクション、または、それらが無いどちらか一方に一致するすべての更新を含みます。

MUPIP -RECOVERの -FENCES オプションの引数の値は、大文字と小文字は区別されません。

フェンスオプションは:

  • NONE

    これは、あたかもトランザクションのフェンスが存在していないように、すべての個別の更新を適用するためにMUPIP JPURNALを引き起こします。これはTPまたはZTPトランザクション内のSET/KILLが、あたかもフェンスのないSET/KILLがあったかのように、再生されるべきことを意味することに、注意してください。これにより、データベースと新しいジャーナルが作成され(もし -BACKWARD が指定されている場合)、リカバリが行われる前の状態と異なることがあります。

  • ALWAYS

    これにより、MUPIP JOURNALは、フェンス(囲い込み)の無いまたは不適切なフェンス(囲い込み)の更新を破損したトランザクションとして扱います。

  • PROCESS

    これにより、MUPIP JOURNALは、フェンス(囲い込み)の無いデータベースの更新を受け付け、フェンスが現れたときにそれを観察し、対応するTCOMMITがないTSTARTの場合は破損したトランザクションファイルを生成し、対応するZTCOMMITがない場合はZTSTARTを監視します。また、もしTSTARTとTCOMMITを使用する複数の領域(Region)のトランザクションでN個の領域(Region)が関係すると予想されるが、見つかったTSTART/TCOMMITペアの数がN個より少ない場合にも、破損したトランザクションが生成されます。複数の領域(Region)のZTSTARTおよびZTCOMMITについても同様に生じます。

デフォルトでは、MUPIP JOURNALは -FENCES=PROCESSを使用します。

-FU[LL]

-FULLを -EXTRACTとともに使用すると、すべてのジャーナル・レコードが抽出されるように指定されます。ジャーナル・ファイルの内容は、データベースとジャーナルの同期を維持するために、バックワード・リカバリまたはロールバックの場合にロールバックできます (詳細は、“-ROLLBACK [{-ON[LINE]|-NOO[NLINE]}] を参照) 。これは、ロールバックする前にジャーナルファイルの終わりを示し、かつ、ジャーナルファイルの新しい終了点を示すためにファイルヘッダー内の別のフィールドを設定するために、ジャーナルファイルの内容を切り捨てるのではなく、MUPIP JOURNAL -SHOW=HEADERの出力に "Prev Recovery End of Data"として表示されるジャーナルファイルヘッダーのフィールドを設定することによって達成されます(このフィールドは MUPIP JOURNAL -SHOW=HEADER の出力に「End of Data」と表示されます)。ジャーナル・ファイルの内容がロールバックされると、将来のすべてのMUPIP JOURNALコマンド( -EXTRACTを含む)は、ロールバックされたジャーナル・ファイルのみで動作します。しかし、もし -FULLを -EXTRACTとともに指定すると、ジャーナル・ファイルの内容(ロールバックされたこれらレコードを含む)全体が抽出されます。この修飾子は診断ツールとしてのみ使用され、通常の操作では使用されません。

-FULL修飾子は -EXTRACTとのみ互換性があります。

-[NO]IN[TERACTIVE]

-ERROR_LIMITを超える各エラーに対して、JOURNAL処理が処理の継続をコントロールするレスポンスの呼び出し元オペレータにプロンプトを出すかどうかを指定します。もしオペレータが処理を続行すべきでないことをレスポンスした場合、MUPIP JOURNALコマンドは終了します。

-NOINTERACTIVEは、MUPIP JOURNALコマンドが -ERROR_LIMITで指定されたエラー数を生成するとすぐに、ジャーナル処理を終了します。

この修飾子は、対話モードまたは端末モードにのみ適用されます。デフォルトは-INTERACTIVEです。

-LOST[TRANS]=<extract file>

-LOSTTRANS は、-RECOVER、-ROLLBACK および -EXTRACTのオプションの修飾子です。もしこれが指定されてなくて、失われたトランザクション・ファイルの作成が必要な場合、MUPIP JOURNALは .lost 拡張子で処理されている現在のジャーナル・ファイルの名前を使用してジャーナルファイルを作成します。

壊れたトランザクションの後の完全なトランザクションは、失われたトランザクションとみなされます。それらは失われたトランザクション・ファイルに書き込まれます。-RECOVERの場合、もし -ERROR_LIMIT修飾子で許可するには、それは良好なトランザクションとみなされ、データベースに適用されます。

もし selection修飾子が指定されている場合、破棄されたトランザクションの決定(したがって、トランザクションの決定も同様に失われます)は、selection修飾子でフィルタリングされたジャーナル・ファイルに基づいて行われます。これは、selection修飾子の性質に応じて、トランザクションのジャーナルレコードが完全であるとみなされるか、または、破損または失われたとみなされる可能性があることを意味します。selection修飾子とともに -FENCES=NONEを使用すると、すべてのジャーナル・レコードが完全であるとみなされ、したがって、トランザクション処理が壊れたり失われたりするのを防ぐことができます。

レプリケートされたデータベースの場合、失われたトランザクションには更なる原因があります。もしフェイルオーバーが発生すると(つまり、オリジナルのソース・サーバー Aが失敗し、オリジナルのインスタンスの役割(ロール)を引き継いでいるレプリケートしているソース・サーバー B)、Aのデータベースにコミットされたトランザクションが、Bのデータベースに反映されないことがあります。オリジナルのインスタンスが新しい複製インスタンスになる前に、これらのトランザクションをロールバックする必要があります。これらのトランザクションは、"失われたトランザクション" として知られます。これらは完全なトランザクションであり、壊れたトランザクションとは異なることに注意してください。MUPIP JOURNAL -ROLLBACKは、抽出された失われたトランザクションを、この修飾子で指定された抽出ファイルに格納します。失われたトランザクションの検索の開始点は、-FETCHRESYNC操作でオリジナルのソース・サーバーから取得されたジャーナル・シーケンス番号です。

-RED[IRECT]=file-pair-list

ジャーナル・ファイルを作成したデータベースとは異なるデータベースにジャーナル・ファイルを再生します。-REDIRECTを使用して、トレーニングまたはテスト用のデータベースを作成または維持します。

この修飾子は、-RECOVERアクションおよび-FORWARD direction修飾子にのみ適用されます。JOURNALは、-RECOVERとともに表示されない限り、-REDIRECTを拒否します。

ファイル・ペア・リスト(file-pair-list)は、カッコ() で囲まれカンマ(,) で区切られた1つ以上のファイル名のペアで構成されます。ペアは、以下の形式で、等号(イコール)で区切られています:

old-file-name=new-file-name

古いファイル名がオリジナルのデータベース・ファイルを識別し、新しいファイル仕様のファイル名が -RECOVERのターゲットを識別する。古いファイル指定(old-file-specification)は、常に -SHOW を使って決定することができます。

デフォルトでは、ジャーナルが作成されたデータベース・ファイルに対して、ジャーナルは-RECOVERに指示します。-REDIRECT は -ROLLBACKと互換性がありません。

例:

$ mupip journal -recover -forward -redirect="bgdbb.dat=test.dat" bgdbb.mjl

このJOURANLコマンドは、-REDIRECT が bgdbb.dat からtest.datへbgdbb.mjl の中で更新するようなフォワード・リカバリーをします。

-VERB[OSE]

処理中に冗長出力を出力します。それは無視されず、デフォルトではOFFに設定されています。

ジャーナル Selection 修飾子

ジャーナル selection 修飾子は、-EXTRACT および -SHOW操作とのみ互換性があります。これは、ほとんどのアプリケーションが、アプリケーション設計の外部にある基準に基づいてトランザクションのサブセットを安全に削除するように構築されていないためです。選択基準に基づいてトランザクションをリカバリから除外するには、レコードを抽出(-EXTRACT)し、ジャーナル・リカバリではなくアプリケーション・ロジックを使用して再び適用する方法があります。このアプローチにより、アプリケーションロジックは、削除されたトランザクションと保持されたトランザクションとの間のあらゆる対話を適切に処理することができます。 selection修飾子を使用すると、フェンスされた(囲われた)トランザクションのジャーナル・レコードのサブセットのみが抽出されることに注意してください (例えば、対応するTCOMMITレコードが抽出されて取り出されている間、トランザクションがselection修飾子によって取り除かれるその最初の更新の理由でTSTARTレコードは抽出されないことがあります)。これは、実際にそれがない時に破壊が見えるために、フェンス(囲い込)されたトランザクションが発生することができます。

次の修飾子は、ジャーナル処理のためのselection基準を制御します。

-TRANSACTIONを除いて、すべての修飾子でカンマ(,) で区切られた値のリストを指定できます。

-G[LOBAL]=global-list

処理を含めるか、または、処理から除外するにはMUPIP JOURNAL用のグローバルを指定してください。この修飾子は、特定のデータの抽出および分析に役立ちます。

グローバル・リスト(global-list)には、キャレット記号(^)の前に1つ以上のグローバル名(添え字なし)が含まれています。複数のグローバルを含めるには、次の構文のいずれかを使用してください:

$ mupip journal -forward -extract -global="^A*,^C" mumps.mjl 

または

$ mupip journal -forward -extract -global="(^A*,^C)" mumps.mjl 

名前は、アスタリスク(*)でワイルドカードを含めることができます。つまり、-GLOBAL="^ A *" は、名前がAで始まるすべてのグローバル変数を選択します。リスト全体または各名前の前に、オプションでティルド記号(~)を付けることができ、JOURNALに指定されたグローバルにデータベースの更新を除外するように要求します。MUPIP JOURNAL -GLOBAL のグローバル・リストがティルダ記号(~)で始まらない場合、JOURNALは明示的に名前のついたグローバルのみを処理します。デフォルトでは、JOURNALはすべてのグローバルを処理します。

添字を指定するには、-GLOBAL="^ A(1)" を使用すると^A(1)ツリー下のすべてのキーが含まれます。つまり、-GLOBAL="^A(1,*)" と使用するのと同等です。アスタリスク(*)またはパーセント(%)は、グローバル仕様の任意の位置で許可されます。パーセント(%)は任意の文字と一致し、アスタリスク(*)は任意の文字列(ゼロの長さもある)と一致します。アスタリスク(*)またはパーセント(%)指定は、-USER修飾子にも使用できます。

例:

^GBLTMPを除いて、すべての^GBL*を抽出するためには:

$ mupip journal -extract -global="^GBL*,~^GBLTMP" -forward mumps.mjl

^GBL(1,"TMP")を除いて、すべての^GBLを抽出するためには:

$ mupip journal -extract -global=\"^GBL,~^GBL\(1,\"\"TMP\"\"\)\" -forward mumps.mjl

バックスラッシュ(\) 区切り文字は、添字開始の二重引用符(")をMUPIPに渡すためにUNIXでは必要とされます。

グローバル修飾子の文字列のエラー解析が発生した時は必ず、INVGLOBALQUALエラーはコマンドラインでエラーオフセットと共に発行されます。

-ID=pid-list

プロセス識別番号(PIDs)によって識別された1つまたは複数のプロセスによって生成されたデータベースの更新が含まれまたは除外されるJOURNALプロセスを指定します。リスト全体または各PIDの前にオプションでティルダ記号(~)を付けることができ、JOURNALには、指定されたPIDで開始されたデータベース更新を除外する必要があります。トラブルシューティングやデータ解析のため、この修飾子を使用することがあります。

デフォルトでは、JOURNALはそれによって開始されるPIDに関係なくデータベースの更新を処理します。

-T[RANSACTION]=transaction-type

処理を含めるか、または、処理から除外するにはJOURNALのためにトランザクションタイプを指定してください。たとえば、データを見落とすことに可能性がある原因を見つけるためにKILL操作でレポートだけを行う、この修飾子を使用することがあります。

トランザクションタイプは、SETおよびKILLであり、そして、否定ができます。これらのタイプは、同じ名前のMコマンドに対応します。JOURNAL -TRANSACTIONのトランザクションタイプが否定されていない場合、JOURNALは名前付きタイプ(たとえば、-TRANSACTION=KILL)のトランザクションのみを処理し、一方、もし否定されていれば、(例えば、-TRANSACTION=NOKILL )JOURNALは 、名前付きタイプのトランザクションを処理しません。

デフォルトでは、そのタイプに関係なく、JOURNALはトランザクションを処理します。

-U[SER]=user-list

一人または複数ユーザによって生成されたデータベースの更新が含まれまたは除外されるJOURNALプロセスを指定します。特定のユーザーのアクションを監査するためにこの修飾子を使用することができます。ユーザーリストは、1つまたは複数のユーザの名前が含まれます。カンマ(,)で区切られた名前で複数のユーザーを示します。名前は、アスタリスク(*)でワイルドカードを含めることができます。指定されたユーザにより開始されるデータベース更新を除外するためにJOURNALを必要としている、リスト全体またはそれぞれのPIDは、マイナス記号 (-) ティルダ記号 (~)より先にオプションを付ける必要があります。JOURNAL -USERでユーザリストは、(~)ティルダ記号で開始しない時は、JOURNALは、明示的に名づけられたユーザにより生成されたそのデータベース更新のみを処理します。The asterisk (*) or percent (%) specification can be used for -USER qualifier. パーセント(%)は任意の文字と一致し、アスタリスク(*)は任意の文字列(ゼロの長さもある)と一致します。

デフォルトでは、JOURNALはそれらによって開始されるユーザに関係なくデータベースの更新を処理します。

inserted by FC2 system