17 Oracle GoldenGate処理の監視

この章では、Oracle GoldenGate処理を監視する方法について説明します。

内容は次のとおりです。

17.1 GGSCIでの情報コマンドの使用

処理情報を表示する主な方法は、GGSCIを使用することです。これらのコマンドの詳細は、『Oracle GoldenGateリファレンス』を参照してください。

表17-1 プロセス情報を表示するコマンド

コマンド 表示内容

INFO {EXTRACT | REPLICAT} group [DETAIL]

実行ステータス、チェックポイント、ラグ概算および環境情報

INFO MANAGER

実行ステータスおよびポート番号

INFO ALL

システム上のすべてのOracle GoldenGateプロセスに関するINFO出力

STATS {EXTRACT | REPLICAT} group

処理量に関する統計(実行した操作の数など)。

STATUS {EXTRACT | REPLICAT} group

実行ステータス(起動中、実行中、停止済、異常終了済)

STATUS MANAGER

実行ステータス

LAG {EXTRACT | REPLICAT} group

処理された最新レコードとデータソースのタイムスタンプとの間のレイテンシ

INFO {EXTTRAIL | RMTTRAIL} trail

関連プロセスの名前、最後に処理されたデータの位置、最大ファイル・サイズ

SEND MANAGER

実行ステータス、子プロセスに関する情報、ポート情報、証跡消去設定

SEND {EXTRACT | REPLICAT} group

プロセスと選択したオプションに応じて、メモリー・プール、ラグ、TCP統計、長時間実行トランザクション、プロセス・ステータス、リカバリ進行状況などに関する情報が戻されます。

VIEW REPORT group

破棄ファイルとプロセス・レポートの内容

VIEW GGSEVT

Oracle GoldenGateエラー・ログの内容

COMMAND ER wildcard

COMMANDタイプに応じた次の情報:

INFO

LAG

SEND

STATS

STATUS

wildcardは、影響を受けるプロセス・グループに応じたワイルドカードの指定です。次に例を示します。

INFO ER ext*
STATS ER *

INFO PARAM

静的情報を問い合せて表示します。

GETPARAMINFO

現在実行中のパラメータ値を表示します。

17.2 Extractリカバリの監視

長時間実行トランザクションがオープンしているときにExtractが異常終了すると、Extractの再起動時のリカバリに時間がかかることがあります。処理状態をリカバリするため、Extractは、必要に応じて以前のオンライン・ログとアーカイブ・ログを検索し、その長時間実行トランザクションの最初のログ・レコードを検出する必要があります。トランザクションの開始時点が古いほど、一般的にリカバリにかかる時間も長くなり、Extractは停止したように見えることがあります。

Extractのリカバリ状況が適切であることを確認するには、SEND EXTRACTコマンドをSTATUSオプション付きで使用します。次のステータス記録のいずれかが表示されるため、リカバリの実行中にExtractがそのログ読取り位置を変更するのに応じて、作業の進行状況を追跡できます。

  • In recovery[1] – Extractは、トランザクション・ログのチェックポイントにリカバリ中です。つまり、次のいずれかから読み取っています。

    a) BRチェックポイント・ファイル、次にアーカイブ/オンライン・ログから読取り中、

    または

    b) アーカイブ/オンライン・ログのリカバリ・チェックポイントから読取り中。

  • In recovery[2] – Extractは、チェックポイントから証跡の末尾にリカバリ中です。つまり、最後のトランザクションが完全には書き込まれず、トランザクションを再書込みしているときにリカバリ・マーカーが出力証跡に付加されます。

  • Recovery complete – リカバリは終了し、通常の処理が再開されます。

17.3 ラグの監視

ラグ統計は、Oracle GoldenGateプロセスが、ビジネス・アプリケーションによって生成されたデータの量に後れを取らず適切に処理を進めているかどうかを示します。この情報によって、潜在的な問題を診断し、Oracle GoldenGateプロセスのパフォーマンスをチューニングしてソース・データベースとターゲット・データベース間のレイテンシを最小化できます。Oracle GoldenGateをチューニングしてラグを最小化する方法の詳細は、「Oracle GoldenGateのパフォーマンスのチューニング」を参照してください。

内容は次のとおりです。

17.3.1 ラグについて

Extractのラグとは、(システム・クロックに基づく)Extractがレコードを処理した時刻と、データ・ソース内のそのレコードのタイムスタンプとの差(秒)です。

Replicatのラグとは、(システムクロックに基づく)Replicatが最後のレコードを処理した時刻と、証跡内のそのレコードのタイムスタンプとの差(秒)です。

ラグの統計を表示するには、GGSCIでLAGコマンドかSENDコマンドを使用します。詳細は、『Oracle GoldenGateリファレンス』を参照してください。

ノート:

INFOコマンドでもラグ統計は戻されますが、この統計は、処理中の現在のレコードではなく、チェックポイントが指定された最後のレコードから取得された統計です。LAGINFOと比較して正確性の点で劣ります。

17.3.2 ラグのレポート方法の制御

LAGREPORTMINUTESまたはLAGREPORTHOURSパラメータでは、ManagerがExtractおよびReplicatのラグを確認する間隔を指定します。『Oracle GoldenGateリファレンス』を参照してください。

LAGCRITICALSECONDSLAGCRITICALMINUTES、またはLAGCRITICALHOURSパラメータでは、クリティカルとみなすラグしきい値を指定し、しきい値に達したときにエラー・ログに警告メッセージを書き込みます。このパラメータは、ローカル・システムのExtractおよびReplicatプロセスに影響します。『Oracle GoldenGateリファレンス』を参照してください。

LAGINFOSECONDSLAGINFOMINUTESまたはLAGINFOHOURSパラメータでは、ラグしきい値を指定します。ラグが指定した値を超えると、Oracle GoldenGateはエラー・ログにラグ情報をレポートします。ラグがLAGCRITICALパラメータで指定した値を超えると、Managerはこのラグをクリティカルとしてレポートし、それ以外の場合は情報メッセージとしてレポートします。値ゼロ(0)を指定すると、LAGREPORTMINUTESまたはLAGREPORTHOURSパラメータで指定した間隔でメッセージがレポートされます。『Oracle GoldenGateリファレンス』を参照してください。

17.4 自動ハートビート表を使用した監視

デフォルトの自動ハートビート表機能を使用してエンドツーエンドのレプリケーション遅延を監視できます。自動ハートビートは、ハートビート・シード表およびハートビート表のレコードを更新し、ハートビート履歴表を構築することにより、各ソース・データベースからレプリケーション・ストリームに送信されます。レプリケーション・パスの各レプリケーション・プロセスがこれらのハートビート・レコードを処理して、その情報を更新します。これらのハートビート・レコードは、ターゲット・データベースでハートビート表に挿入されるか、更新されます。

ハートビート表には次の情報が含まれます。

  • ソース・データベース

  • 宛先データベース

  • 送信レプリケーション・ストリームに関する情報:

    • パス内のExtract、ポンプ/分散サービスまたはReplicatプロセスの名前

    • ハートビート・レコードがレプリケーション・プロセスによって処理されたときのタイムスタンプ。

  • 受信レプリケーション・ストリームに関する情報:

    • パス内のExtract、ポンプ/分散サービスまたはReplicatプロセスの名前

    • ハートビート・レコードがレプリケーション・プロセスによって処理されたときのタイムスタンプ。

ハートビート表とハートビート履歴表の情報を使用して、各レプリケーションの現在と過去の遅延を計算できます。

Replicatは、自動ハートビート表(LOGBSN)を使用してExtractの現在の再開位置を追跡できます。これにより、必要に応じてソース・データベースから証跡ファイルを再生成し、ソース・データベースのREDOログ保存期間を最小化できます。また、最新のExtractの再開位置を追跡することにより、自動競合検出および解決(ACDR)表のツームストン表をより頻繁にパージできます。

双方向の構成では、データベースに含まれる近隣へのレプリケーション・パスと同数のエントリがハートビート表にあり、片方向設定ではソース側の表は空です。送信列には、タイムスタンプと送信パス、ローカルExtractおよびダウンストリームのプロセスが含まれます。受信列には、タイムスタンプ、アップストリームのプロセスのパスおよびローカルReplicatが含まれます。

片方向構成では、ターゲット・データベースはハートビート表の受信列のみに移入します。

ノート:

自動ハートビート機能はMySQLバージョン5.5ではサポートされていません。

内容は次のとおりです。

17.4.1 ハートビート表のエンドツーエンド・レプリケーション・フローの理解

ハートビート表のエンドツーエンドのレプリケーション処理は、Oracle GoldenGateの証跡形式の使用に依存しています。この処理について、次に説明します。

ADD HEARTBEATTABLEコマンドを使用して、各データベースにハートビート表を追加します。ハートビート表をすべてのソース・インスタンスおよびターゲット・インスタンスに追加し、既存のOracle GoldenGateプロセスを再起動して、ハートビート機能を有効にします。データベース・システムによっては、ハートビート表データを移入するためにジョブの作成または有効化が必要になることがあります。

次の例を参照してください。
GGSCI>DBLOGIN {[SOURCEDB data_source] |[, database@host:port] |USERID {/ | userid}[, PASSWORD password] 
[algorithm ENCRYPTKEY {keyname | DEFAULT}] |USERIDALIAS alias [DOMAIN domain]|[SYSDBA | SQLID sqlid][SESSIONCHARSET character_set]}
GGSCI>ADD HEARTBEATTABLE

(オプション) Oracle Databaseの場合、ハートビート更新はOracle DBMS_SCHEDULERに依存しているので、これが適切に動作していることを確認する必要があります。DBMS_SCHEDULERを問い合せるには、次を発行します。

select START_DATE, LAST_START_DATE, NEXT_RUN_DATE 
from dba_scheduler_jobs 

Where job_name ='GG_UPDATE_HEARTBEATS';

次に、NEXT_RUN_DATE (スケジューラを次回実行する日時)の有効な値を探します。これが過去のタイムスタンプである場合、ジョブは実行されないので修正する必要があります。

スケジューラが機能しない一般的な理由は、パラメータjob_queue_processesの設定値が低すぎる(通常はゼロ)場合です。ALTER SYSTEM SET JOB_QUEUE_PROCESSES = ##; (##はジョブ・キュー・プロセス数)コマンドを使用して、データベースに構成されたjob_queue_processesの数を増やします。

Extractを実行します。これにより、論理変更レコード(LCR)を受信時に、OUTGOING_EXTRACT列の値がチェックされます。

  • Extract名がこの値に一致すると、OUTGOING_EXTRACT_TS列が更新され、レコードが証跡に入力されます。

  • Extract名が一致しない場合、LCRは破棄されます。

  • OUTGOING_EXTRACT値がNULLの場合、OUTGOING_EXTRACT_TSとともに移入され、レコードが証跡に入力されます。

ポンプまたは分散サーバーは、レコードの読取り時にOUTGOING_ROUTING_PATH列の値をチェックします。この列には分散パスのリストが含まれています。

値がNULLの場合、列は現在のグループ名(およびパス、ただしこれが分散サーバーの場合) "*"で更新され、OUTGOING_ROUTING_TS列を更新して、レコードがそのターゲット証跡ファイルに書き込まれます。

値のリストに"*"が含まれている場合は、それをgroup name[:pathname],"*"'で置換して、OUTGOING_ROUTING_TS列を更新し、レコードがそのターゲット証跡ファイルに書き込まれます。リストの値にアスタリスク(*)が含まれていない場合、ポンプ名がリストにあると、リスト内の関連するgroup name[:pathname],"*"'ペアに指定されたパスにレコードが送信されます。ポンプ名がリストにない場合は、レコードが破棄されます。

Replicatを実行します。これによりレコードの受信時に、OUTGOING_REPLICA列の値がチェックされます。

  • Replicat名が値に一致すると、ハートビート表の行が更新され、レコードが履歴表に挿入されます。

  • Replicat名が一致しない場合は、レコードが破棄されます。

  • 値がNULLの場合、Replicatの列マッピングを暗黙的に起動して、ハートビート表とハートビート履歴表の行が更新されます。

    Replicatの自動列マッピング

    REMOTE_DATABASE 		= LOCAL_DATABASE
    INCOMING_EXTRACT	 	= OUTGOING_EXTRACT
    INCOMING_ROUTING_PATH      = OUTGOING_ROUTING_PATH with "*"    removed
    INCOMING_REPLICAT		= @GETENV ("GGENVIRONMENT", "GROUPNAME")
    INCOMING_HEARTBEAT_TS	= HEARTBEAT_TIMESTAMP
    INCOMING_EXTRACT_TS	= OUTGOING_EXTRACT_TS
    INCOMING_ROUTING_TS	= OUTGOING_ROUTING_TS
    INCOMING_REPLICAT_TS          = @DATE ('UYYYY-MM-DD HH:MI:SS.FFFFFF','JTSLCT',@GETENV ('JULIANTIMESTAMP'))
    LOCAL_DATABASE	= REMOTE_DATABASE
    OUTGOING_EXTRACT	= INCOMING_EXTRACT
    OUTGOING_ROUTING_PATH	= INCOMING_ROUTING_PATH
    OUTGOING_HEARTBEAT_TS     = INCOMING_HEARTBEAT_TS
    OUTGOING_REPLICAT	= INCOMING_REPLICAT
    OUTGOING_HEARTBEAT_TS	= INCOMING_HEARTBEAT_TS
    

OUTGOING_ROUTING_TSの1列しかありません。レコードが複数のポンプをパス・スルーしてからReplicatによって適用される場合、各ポンプではOUTGOING_ROUTING_TS列を上書きして、計算するポンプ遅延を1つのポンプに限定せずに、PUMP_PATHで指定されたすべてのポンプの遅延を参照するようにします。

その他の考慮事項:

ハートビートがシステムを流れる際の遅延の計算は、ソース・システムとターゲット・システムのクロックが正確に設定されているかどうかに依存します。ターゲット・システムがソース・システムよりも進んでいると、遅延が負の値になる可能性があります。クロックの差異に気付いて修正する措置を取れるよう、遅延は負の数値として表示されます。

システムを流れるタイムスタンプはUTCで設定されています。タイムスタンプにはタイムゾーンが関連付けられていないので、各コンポーネントが異なるタイムゾーンに設定されている場合でも、ハートビート表を表示するときは、すぐに遅延を表示できます。基礎となる表を基に必要なビューを書き込むことができます。UTCが推奨されます。

すべてのハートビート・エントリはUTF-8で証跡に書き込まれます。

送信パスと受信パスを組み合せて一意に行が特定されます。つまり、送信パスが同じで受信パスが異なる2つの行がある場合、2つの一意のエントリとみなされます。

ハートビート表の詳細

GG_HEARTBEAT表には、エンドツーエンド・レプリケーション時間のタイムスタンプ情報と、異なるコンポーネントのプライマリとセカンダリのExtractおよびReplicatのタイミング情報が表示されます。

片方向環境では、ターゲット・データベースのみにレプリケーション・ラグに関する情報が含まれます。この場合は、レコードがソース・データベースで生成され、ターゲット・データベースでクライアントに見えるようになります。

ノート:

ソース・データベースとリモート・データベースの両方が同じ名前の場合、自動ハートビート表はOUTGOING_%列にデータを移入しません。データベース名を変更するには、ユーティリティDBNEWIDを使用します。詳細は、DBNEWIDユーティリティを参照してください。
データ型 説明

LOCAL_DATABASE

VARCHAR2

リモート・データベースからのレプリケーション時間が計測されるローカル・データベース。

HEARTBEAT_TIMESTAMP

TIMESTAMP(6)

タイムスタンプがリモート・データベースで生成された時点。

REMOTE_DATABASE

VARCHAR2

タイムスタンプが生成されるリモート・データベース

INCOMING_EXTRACT

VARCHAR2

リモート・データベースでのプライマリExtract (取得)の名前

INCOMING_ROUTING_PATH

VARCHAR2

リモート・データベースでのセカンダリExtract (ポンプ)の名前

INCOMING_REPLICAT

VARCHAR2

ローカル・データベースでのReplicatの名前。

INCOMING_HEARTBEAT_TS

TIMESTAMP(6)

情報がローカル・データベースのGG_HEARTBEAT表に挿入されるときの最終タイムスタンプ。

INCOMING_EXTRACT_TS

TIMESTAMP(6)

生成されたタイムスタンプがリモート・データベースのプライマリExtractで処理されるときのタイムスタンプ。

INCOMING_ROUTING_TS

TIMESTAMP(6)

生成されたタイムスタンプがリモート・データベースのセカンダリExtractで処理されるときのタイムスタンプ。

INCOMING_REPLICAT_TS

TIMESTAMP(6)

生成されたタイムスタンプがローカル・データベースのReplicatで処理されるときのタイムスタンプ。

OUTGOING_EXTRACT

VARCHAR2

双方向/N方向レプリケーション: ローカル・データベースのプライマリExtractの名前。

OUTGOING_ROUTING_PATH

VARCHAR2

双方向/N方向レプリケーション: ローカル・データベースのセカンダリExtractの名前。

OUTGOING_REPLICAT

VARCHAR2

双方向/N方向レプリケーション: リモート・データベースのReplicatの名前。

OUTGOING_HEARTBEAT_TS

TIMESTAMP(6)

双方向/N方向レプリケーション: 情報がリモート・データベースの表に挿入されるときの最終タイムスタンプ。

OUTGOING_EXTRACT_TS

TIMESTAMP(6)

双方向/N方向レプリケーション: 生成されたタイムスタンプがローカル・データベースのプライマリExtractで処理されるときのタイムスタンプ。

OUTGOING_ROUTING_TS

TIMESTAMP(6)

双方向/N方向レプリケーション: 生成されたタイムスタンプがローカル・データベースのセカンダリExtractで処理されるときのタイムスタンプ。

OUTGOING_REPLICAT_TS

TIMESTAMP(6)

双方向/N方向レプリケーション: 生成されたタイムスタンプがリモート・データベースのReplicatで処理されるときのタイムスタンプ。

GG_HEARTBEAT_HISTORY表には、エンドツーエンド・レプリケーション時間のタイムスタンプ履歴情報と、異なるコンポーネントのプライマリとセカンダリのExtractおよびReplicatのタイミング情報が表示されます。

片方向環境では、宛先データベースのみにレプリケーション・ラグに関する情報が含まれます。

タイムスタンプはUTCタイムゾーンで管理されます。この場合は、レコードがソース・データベースで生成され、ターゲット・データベースでクライアントに見えるようになります。

データ型 説明

LOCAL_DATABASE

VARCHAR2

エンドツーエンド・ラグが計測されるローカル・データベース。

HEARTBEAT_RECEIVED_TS

TIMESTAMP(6)

リモート・データベースのタイムスタンプがローカル・データベースで受け取られた時点。

REMOTE_DATABASE

VARCHAR2

タイムスタンプが生成されるリモート・データベース。

INCOMING_EXTRACT

VARCHAR2

リモート・データベースのプライマリExtractの名前。

INCOMING_ROUTING_PATH

VARCHAR2

リモート・データベースのセカンダリExtractの名前。

INCOMING_REPLICAT

VARCHAR2

ローカル・データベースでのReplicatの名前。

INCOMING_HEARTBEAT_TS

TIMESTAMP(6)

情報がローカル・データベースのGG_HEARTBEAT_HISTORY表に挿入されるときの最終タイムスタンプ。

INCOMING_EXTRACT_TS

TIMESTAMP(6)

生成されたタイムスタンプがリモート・データベースのプライマリExtractで処理されるときのタイムスタンプ。

INCOMING_ROUTING_TS

TIMESTAMP(6)

生成されたタイムスタンプがリモート・データベースのセカンダリExtractで処理されるときのタイムスタンプ。

INCOMING_REPLICAT_TS

TIMESTAMP(6)

生成されたタイムスタンプがローカル・データベースのReplicatで処理されるときのタイムスタンプ。

OUTGOING_EXTRACT

VARCHAR2

双方向/N方向レプリケーション: ローカル・データベースのプライマリExtractの名前。

OUTGOING_ROUTING_PATH

VARCHAR2

双方向/N方向レプリケーション: ローカル・データベースのセカンダリExtractの名前。

OUTGOING_REPLICAT

VARCHAR2

双方向/N方向レプリケーション: リモート・データベースのReplicatの名前。

OUTGOING_HEARTBEAT_TS

TIMESTAMP(6)

双方向/N方向レプリケーション: 情報がリモート・データベースの表に永続的に挿入されたときの最終タイムスタンプ。

OUTGOING_EXTRACT_TS

TIMESTAMP(6)

双方向/N方向レプリケーション: 生成されたタイムスタンプがローカル・データベースのプライマリExtractで処理されるときのタイムスタンプ。

OUTGOING_ROUTING_TS

TIMESTAMP(6)

双方向/N方向レプリケーション: 生成されたタイムスタンプがローカル・データベースのセカンダリExtractで処理されるときのタイムスタンプ。

OUTGOING_REPLICAT_TS

TIMESTAMP(6)

双方向/N方向レプリケーション: 生成されたタイムスタンプがリモート・データベースのReplicatで処理されるときのタイムスタンプ。

REPLICAT_LOW_WATERMARK_CSN

String

この列は、このハートビート・レコードを処理するときにReplicatによって移入されます。このレコードを処理する際に、現在の低水位標(LWM)がこの列に移入されます。これにより、ReplicatのLWM以降のハートビート・レコードからLOGBSNを選択できます。

SOURCE_EXTRACT_HEARTBEAT_CSN

String

この列は、Extractによって移入され、ソース・データベースのハートビート・トランザクションのソース・コミットSCNが含まれています。ソース・データベースのハートビート・ジョブは、コミットSCNを先験的に知らないため、この値を移入できません。

SOURCE_EXTRACT_RESTART_CSN

String

この列は、Extractによって移入され、Extractがこの特定のハートビート・レコードを処理するときの現在のLOGBSNが含まれています。ソース・データベースのハートビート・ジョブはこの値を移入しません。

SOURCE_EXTRACT_RESTART_CSN_TS

TIMESTAMP

この列は、Extractによって移入され、Extractがこの特定のハートビート・レコードを処理するときの現在のLOGBSNに対応するUTCのREDOタイムスタンプが含まれています。ソース・データベースのハートビート・ジョブはこの値を移入しません。

GG_LAGビューには、ローカル・データベースとリモート・データベースのレプリケーション・ラグに関する情報が表示されます。

片方向環境では、宛先データベースのみにレプリケーション・ラグに関する情報が含まれます。ラグは秒単位で計測されます。

データ型 説明

LOCAL_DATABASE

VARCHAR2

リモート・データベースからのエンドツーエンド・レプリケーション・ラグが計測されるローカル・データベース。

CURRENT_LOCAL_TS

TIMESTAMP(6)

ローカル・データベースの現在のタイムスタンプ。

REMOTE_DATABASE

VARCHAR2

タイムスタンプが生成されるリモート・データベース。

INCOMING_HEARTBEAT_AGE

NUMBER

リモート・データベースから受信した最新のハートビートの経過時間。

INCOMING_PATH

VARCHAR2

リモート・データベースからExtractおよびReplicatコンポーネントを含むローカル・データベースへのレプリケーション・パス。

INCOMING_LAG

NUMBER

リモート・データベースからローカル・データベースへのレプリケーション・ラグ。この時間は、リモート・データベースでハートビートが生成された時刻から、ローカル・データベースの表に情報が永続的に挿入された時刻を引いたものです。

OUTGOING_HEARTBEAT_AGE

NUMBER

ローカル・データベースからリモート・データベースへの最新のハートビートの経過時間。

OUTGOING_PATH

VARCHAR2

ローカル・データベースからExtractおよびReplicatコンポーネントを含むリモート・データベースへのレプリケーション・パス。

OUTGOING_LAG

NUMBER

ローカル・データベースからリモート・データベースへのレプリケーション・ラグ。この時間は、ローカル・データベースでハートビートが生成された時刻から、リモート・データベースの表に情報が永続的に挿入された時刻を引いたものです。

REMOTE_EXTRACT_RESTART_CSN

String

ソースExtractの再開位置。

REMOTE_DATABASE DB_UNIQUE_NAME

String

リモート・データベースの一意の名前が表示されます。一意の名前が存在しない場合は、DB_NAME値が表示されます。

REMOTE_EXTRACT_RESTART_CSN_TIME

Timestamp

ソースExtractのREDOの位置に関連付けられたタイムスタンプ。

REMOTE_DB_OLDEST_OPEN_TXN_AGE

Timestamp

Extractが現在処理しているソース・データベースで最も古いオープン・トランザクションの経過時間。この列は、SYSTIMESTAMP - REMOTE_EXTRACT_RESTART_TIMEとして計算できます。

LOCAL_REPLICAT_LWM_CSN

String

ハートビートを処理したときのローカルReplicatの低水位標CSN。

GG_LAG_HISTORYビューには、ローカル・データベースとリモート・データベースのレプリケーション・ラグ履歴に関する履歴情報が表示されます。

片方向環境では、宛先データベースのみにレプリケーション・ラグに関する情報が含まれます。

ラグは秒単位です。

データ型 説明

LOCAL_DATABASE

VARCHAR2

リモート・データベースからのエンドツーエンド・レプリケーション・ラグが計測されるローカル・データベース。

HEARTBEAT_RECEIVED_TS

TIMESTAMP(6)

リモート・データベースのタイムスタンプがローカル・データベースで受け取られた時点。

REMOTE_DATABASE

VARCHAR2

タイムスタンプが生成されるリモート・データベース。

DB_NAME

文字列 リモート・データベース名。
DB_UNIQUE_NAME 文字列 リモート・データベースの一意の名前。データベースの一意の名前が存在しない場合、DB_NAMEDB_UNIQUE_NAMEは同じになります。

スタンバイへのスイッチオーバーのシナリオでは、db_unique_nameは変更されますが、db_nameとレプリケーション・パスは同じままです。

INCOMING_HEARTBEAT_AGE

NUMBER

ハートビート表の経過期間。

INCOMING_PATH

VARCHAR2

リモート・データベースからExtractおよびReplicatコンポーネントを含むローカル・データベースへのレプリケーション・パス。

INCOMING_LAG

NUMBER

リモート・データベースからローカル・データベースへのレプリケーション・ラグ。この時間は、リモート・データベースでハートビートが生成された時刻から、ローカル・データベースの表に情報が永続的に挿入された時刻を引いたものです。

OUTGOING_HEARTBEAT_AGE

NUMBER

OUTGOING_PATH

VARCHAR2

ローカル・データベースからExtractおよびReplicatコンポーネントを含むリモート・データベースへのレプリケーション・パス。

OUTGOING_LAG

NUMBER

ローカル・データベースからリモート・データベースへのレプリケーション・ラグ。この時間は、ローカル・データベースでハートビートが生成された時刻から、リモート・データベースの表に情報が永続的に挿入された時刻を引いたものです。

REMOTE_EXTRACT_RESTART_CSN

String

ソースExtractの再開位置。

REMOTE_EXTRACT_RESTART_CSN_TIME

TIMESTAMP

ソースExtractのREDOの位置に関連付けられたタイムスタンプ。

REMOTE_DB_OLDEST_OPEN_TXN_AGE

TIMESTAMP

Extractが現在処理しているソース・データベースで最も古いオープン・トランザクションの経過時間。この列は、SYSTIMESTAMP - REMOTE_EXTRACT_RESTART_TIMEとして計算できます。

LOCAL_REPLICAT_LWM_CSN

String

ハートビートを処理したときのローカルReplicatの低水位標CSN。

INCOMING_EXTRACT_LAG

 

INCOMING_ROUTINE_LAG

   

INCOMING_REPLICAT_READ_LAG

   

INCOMING_REPICAT_LAG

   

OUTGOING_EXTRACT_LAG

   

OUTGOING_ROUTINE_LAG

   

OUTGOING_REPLICAT_READ_LAG

   

OUTGOING_REPLICAT_LAG

   

17.4.2 ハートビート表の更新

ハートビート・シード表のHEARTBEAT_TIMESTAMP列は、データベース・ジョブで定期的に更新する必要があります。デフォルトのハートビート間隔は1分で、この間隔はコマンドラインまたは管理サービスWebインタフェースから指定または上書きできます。

Oracle Databaseの場合、データベース・ジョブは自動的に作成されます。サポートされているその他のすべてのデータベースの場合、データベース固有のスケジューラ機能を使用してハートビート・タイムスタンプを更新するバックグラウンド・ジョブを作成する必要があります。

ハートビート表の更新の詳細は、ADD HEARTBEATTABLEALTER HEARTBEATTABLEを参照してください。

17.4.3 ハートビート履歴表のパージ

ハートビート履歴表はジョブを使用して定期的にパージされます。デフォルトの間隔は30日で、この間隔は管理クライアント、GGSCIまたは管理サービスWebインタフェースなどのコマンドライン・インタフェースを使用して指定または上書きできます。

Oracle Databaseの場合、データベース・ジョブは自動的に作成されます。サポートされているその他のすべてのデータベースの場合、データベース固有のスケジューラ機能を使用してハートビート・履歴表をパージするバックグラウンド・ジョブを作成する必要があります。

17.4.4 ベスト・プラクティス

次のことをお薦めします。

  • すべてのデータベースで同じハートビート頻度を使用して診断を容易にします。

  • 容量に問題がある場合は保存時間を調整します。

  • デフォルトのハートビート表の頻度を保持します。頻度を30から60秒に設定すると、ほとんどのワークロードで最適な結果をもたらします。

  • 遅延履歴統計を使用して遅延および期間の情報を収集します。

17.4.5 自動ハートビート・コマンドの使用方法

ハートビート表コマンドを使用して、次のようにOracle GoldenGateの自動ハートビート機能を制御できます。

コマンド 説明

ADD HEARTBEATTABLE

自動ハートビート機能に必要なハートビート表(LOGBSN列を含む)を作成します。

ALTER HEARTBEATTABLE

既存のハートビート・オブジェクトを変更します。

ALTER HEARTBEATTABLE UPGRADE

ハートビート表を変更して、ハートビート表にLOGBSN列を追加します。これはオプションです。

DELETE HEARTBEATTABLE

既存のハートビート・オブジェクトを削除します。

DELETE HEARTBEATENTRY

ハートビート表内のエントリを削除します。

INFO HEARTBEATTABLE

ハートビート表情報を表示します。

詳細は、Oracle GoldenGate Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

17.5 処理量の監視

GGSCIでSTATSコマンドを使用すると、Oracle GoldenGateプロセスによって処理されているデータ量と、そのデータ量がOracle GoldenGateシステムを通じて移動されている速度を表示できます。この情報によって、潜在的な問題を診断し、Oracle GoldenGateプロセスのパフォーマンスをチューニングできます。それらのコマンドには、出力の選択やフィルタリングに使用できる様々なオプションがあります。

STATSコマンドには、STATS EXTRACTSTATS REPLICATSTATS ERの各コマンドがあります。

SEND EXTRACTまたはSEND REPLICATコマンドにREPORTオプションを指定することで、いつでもレポート・ファイルに仮統計を送信できます。

17.6 エラー・ログの使用

Oracle GoldenGateのエラー・ログを使用して、次の情報を表示できます。

  • GGSCIコマンドの履歴

  • 起動および停止したOracle GoldenGateプロセス

  • 実行された処理

  • 発生したエラー

  • 情報メッセージおよび警告メッセージ

エラー・ログにはイベントが発生順に記録されているため、エラーの(1つ以上の)原因を検出する場合に役立ちます。たとえば、次の情報を検索できます。

  • ユーザーがプロセスを停止したこと

  • プロセスがTCP/IPまたはデータベース接続の確立に失敗したこと

  • プロセスがファイルを開くことに失敗したこと

エラー・ログを表示するには、次のいずれかの方法を使用します。

  • 標準のシェル・コマンドによるOracle GoldenGateのルート・ディレクトリに含まれるggserr.logファイルの表示

  • Oracle GoldenGate DirectorまたはOracle GoldenGate Monitor

  • GGSCIのVIEW GGSEVTコマンド。

ggserr.logファイルの動作を次のように制御できます。

  • ファイルが最大サイズに達するとロールオーバーします。これはディスク領域の問題を回避するためのデフォルトです。

  • ディスク領域を考慮せず、すべてのプロセスによってすべてのメッセージがファイルに付加されます。

  • ファイルを無効にします。

  • メッセージをシステム・ログなど別の宛先にルーティングします。

このような動作は、次のいずれかの場所にあるogg-ggserr.xmlファイルに指定されて制御されます。 

Microservices Architecture
$OGG_HOME/etc/conf/logging/
Classic Architecture
diretc/logging/

17.7 プロセス・レポートの使用

プロセス・レポートを使用して、(プロセスに応じて)次の情報を表示できます。

  • 使用中のパラメータ

  • 表および列マッピング

  • データベース情報

  • 実行時メッセージおよびエラー

  • 処理された操作の数に関する実行時統計

Extract、ReplicatおよびManagerのすべてのプロセスで、レポート・ファイルが生成されます。このレポートは、実行中に発生した問題(無効なマッピング構文、SQLエラー、接続エラーなど)を診断する場合に役立ちます。

プロセス・レポートを表示するには、次のいずれかの方法を使用します。

  • 標準のシェル・コマンドによるテキスト・ファイルの表示

  • Oracle GoldenGate Monitor

  • GGSCIのVIEW REPORTコマンド。

  • プロセスがレポートを生成せずに異常終了した場合に情報を表示するには、次のコマンドを使用して、(GGSCIでなく)オペレーティング・システムのコマンド・シェルからプロセスを実行し、端末に情報を送信します。

    process paramfile path.prm
    

    説明:

    • processの値は、extractまたはreplicatです。

    • path.prmの値は、パラメータ・ファイルの完全修飾名です。例:

      replicat paramfile /ogg/dirdat/repora.prm
      

デフォルトでは、レポートのファイル拡張子は.rptです(EXTORA.rptなど)。デフォルトの場所は、Oracle GoldenGateディレクトリのdirrptサブディレクトリです。ただし、これらのプロパティは、グループを作成するときに変更できます。レポート・ファイルは、一度作成したら、処理の開始後にOracle GoldenGateを適切に動作させるため、元の場所から移動しないでください。

プロセス・レポートの名前と場所を確認するには、GGSCIでINFO EXTRACTINFO REPLICATINFO MANAGERのいずれかのコマンドを使用します。

17.7.1 プロセス・レポートの実行時統計のスケジュール

デフォルトでは、実行時統計は、各実行の終了時に1回のみレポートに書き込まれます。長時間の実行や継続的な実行では、オプション・パラメータを使用することで、各実行の終了を待機せずにこれらの統計を定期的に表示できます。

実行時統計をレポートするスケジュールを設定するには、ExtractまたはReplicatのパラメータ・ファイルでREPORTパラメータを使用して、レポートで実行時統計を生成する日時を指定します。REPORTを参照してください。

レポートにオン・デマンドで実行時統計を送信するには、必要に応じてその時点の実行時統計を表示するREPORTオプションを付けてSEND EXTRACTまたはSEND REPLICATコマンドを実行します。

17.7.2 プロセス・レポートのレコード数の表示

REPORTCOUNTパラメータでは、ExtractまたはReplicatが起動以降に処理したトランザクション・レコード数をレポートします。各トランザクション・レコードは、Oracle GoldenGateによって取得されたトランザクション内で実行された論理データベース操作を表します。レコード数は、レポート・ファイルおよび画面に出力されます。詳細は、『Oracle GoldenGateリファレンス』を参照してください。

17.7.3 ReplicatレポートがSQLエラーで一杯になることを防止する方法

WARNRATEパラメータでは、プロセス・レポートまたはエラー・ログにレポートされるまでの、ターゲット表で許容されるSQLエラー数のしきい値を設定します。エラーは警告としてレポートされます。お使いの環境で、多数のエラーを許容できるときは、WARNRATEの値を増やすことによってこれらのファイルのサイズを最小限に抑えられます。詳細は、『Oracle GoldenGateリファレンス』を参照してください。

17.8 破棄ファイルの使用

デフォルトでは、プロセスがGGSCIのSTARTコマンドによって開始されると常に破棄ファイルが生成されます。破棄ファイルは、失敗したOracle GoldenGate操作に関する情報を取得します。この情報は、データ・エラー(無効な列マッピングに関連するエラーなど)を解決する場合に役立ちます。

破棄ファイルでは、次のような情報がレポートされます。

  • データベースのエラー・メッセージ

  • データソースまたは証跡ファイルの順序番号

  • データソースまたは証跡ファイルのレコードの相対バイト・アドレス

  • 破棄された操作の詳細(DML文の列値やDDL文のテキストなど)

破棄ファイルを表示するには、テキスト・エディタを使用するか、GGSCIでVIEW REPORTコマンドを使用します。『Oracle GoldenGateリファレンス』を参照してください。

デフォルトの破棄ファイルには、次のプロパティがあります。

  • ファイル名は、ファイルを作成したプロセスの名前に、デフォルトの拡張子.dscを付けたものです。例: finance.dsc

  • ファイルは、Oracle GoldenGateインストール・ディレクトリのdirrptサブディレクトリに作成されます。

  • ファイルの最大サイズは50MBです。

  • 起動時に破棄ファイルが存在する場合、消去してから新しいデータが書き込まれます。

これらのプロパティを変更するには、DISCARDFILEパラメータを使用します。NODISCARDFILEパラメータを使用すると、破棄ファイルの使用を無効にできます。『Oracle GoldenGateリファレンス』を参照してください。

オペレーティング・システムのコマンドラインを使用してプロセスを開始した場合、デフォルトでは破棄ファイルは生成されません。DISCARDFILEパラメータを使用して、破棄ファイルを使用するかどうかと、そのプロパティを指定できます。

破棄ファイルは、一度作成したら、処理の開始後にOracle GoldenGateを適切に動作させるため、元の場所から移動しないでください。

17.9 破棄ファイルとレポート・ファイルの維持

デフォルトでは、破棄ファイルとレポート・ファイルは同じ方法でエージングされます。新しい破棄ファイルまたはレポート・ファイルは、新しいプロセス実行の開始時に作成されます。古いファイルは、名前に0(最新)から9(最も古い)までの順序番号を付加してエージングされます。

アクティブなレポートまたは破棄ファイルが、ある実行の終了前に(または、連続実行の最中に)最大ファイル・サイズに到達した場合、有効なエージング・スケジュールがなければ、そのプロセスは異常終了します。破棄ファイルやレポート・ファイルのエージング・スケジュールを設定するには、それぞれ、DISCARDROLLOVERパラメータおよびREPORTROLLOVERパラメータを使用します。これらのパラメータにより、プロセスの開始時に加え、定期的にファイルをロールオーバーするように指定されます。これは、ファイルのサイズを制御し、プロセスの停止を防止するだけでなく、アーカイブ・ルーチンに含めることができるアーカイブのセットが予測可能になります。詳細は、次のドキュメントを参照してください。

プロセスは、最大10個のエージングされたレポートまたは破棄ファイルと1個のアクティブなレポートまたは破棄ファイルを保持できます。10個目のファイルがエージングされると、新規レポートの作成時に最も古いレポートが削除されます。サービス・リクエストの解決に必要とされる場合に備えて、エージングされたレポート・ファイルおよび破棄ファイルのアーカイブ・スケジュールを設定することをお薦めします。

表17-2 ExtractおよびManagerの現行レポートとエージングされたレポート

権限 X 日付 レポート

-rw-rw-rw-

1 ggs ggs
1193 Oct 11 14:59
MGR.rpt

-rw-rw-rw-

1 ggs ggs
3996 Oct 5  14:02
MGR0.rpt
-rw-rw-rw-
1 ggs ggs
4384 Oct 5  14:02
TCUST.rpt
-rw-rw-rw-
1 ggs ggs
1011 Sep 27 14:10
TCUST0.rpt
-rw-rw-rw-
1 ggs ggs
3184 Sep 27 14:10
TCUST1.rpt
-rw-rw-rw-
1 ggs ggs
2655 Sep 27 14:06
TCUST2.rpt
-rw-rw-rw-
1 ggs ggs
2655 Sep 27 14:04
TCUST3.rpt
-rw-rw-rw-
1 ggs ggs
2744 Sep 27 13:56
TCUST4.rpt
-rw-rw-rw-
1 ggs ggs
3571 Aug 29 14:27
TCUST5.rpt

17.10 時間の差異の調整

ソース・システムとターゲット・システム間の時間の差異に対応するには、Extractパラメータ・ファイルでTCPSOURCETIMERパラメータを使用します。このパラメータにより、レプリケートされたレコードのタイムスタンプがレポート目的で調整されるため、同期ラグの解析が容易になります。詳細は、『Oracle GoldenGateリファレンス』を参照してください。

17.11 パフォーマンス・チューニングに関するヘルプ情報の取得

Oracle GoldenGateのパフォーマンスをチューニングする方法の詳細は、Oracle GoldenGateのパフォーマンスのチューニングを参照してください。