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

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

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

次の例を参照してください。
DBLOGIN USERIDALIAS alias  [DOMAIN domain]|[SYSDBA | SQLID sqlid][SESSIONCHARSET character_set]}
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とともに移入され、レコードが証跡に入力されます。

レコードの読取り時にDistribution Serviceによって、OUTGOING_ROUTING_PATH列の値がチェックされます。この列には分散パスのリストが含まれています。

値がNULLの場合、列は現在のグループ名(およびパス、ただしこれがDistribution Serviceの場合) "*"で更新され、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
    

その他の考慮事項:

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

システムを流れるタイムスタンプは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で処理されるときのタイムスタンプ。

INCOMING_REPLICAT_LW_CSN

VARCHAR2

-

INCOMING_EXTRACT_HEARTBEAT_CSN

VARCHAR2

-

INCOMING_EXTRACT_RESTART_CSN

VARCHAR2

-

INCOMING_EXTRACT_RESTART_TS

TIMESTAMP(6)

-

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

String リモート・データベース名。
DB_UNIQUE_NAME String リモート・データベースの一意の名前。データベースの一意の名前が存在しない場合、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

- -