ADD HEARTBEATTABLE

Oracle、Db2 z/OS、Db2 LUW、Db2 for i、MySQL、PostgreSQL、SQL Server、TeradataおよびTimesTenに有効です。

このコマンドにはDBLOGINを使用したデータベース・ログインが必要です。

ADD HEARTBEATTABLEでは、自動ハートビート機能を使用する場合に必要なオブジェクトを作成します。このコマンドは、次のタスクを実行します。

  • ハートビート・シード表、ハートビート表およびハートビート履歴表の作成。

  • GG_LAGビューおよびGG_LAG_HISTORYビューの作成。

  • スケジューラ・ジョブによってコールされるGG_UPDATE_HB_TABおよび GG_PURGE_HB_TABプロシージャの作成。

  • ハートビートとシード表の更新および履歴表のパージを定期的に実行するスケジューラ・ジョブの作成。ただし、PostgreSQL、TeradataおよびTimesTenの場合、これらのジョブは作成されません。

  • シード表を移入します。

  • Oracleマルチテナント・データベースの場合:

    • ハートビート・オブジェクトとジョブは、DBLOGINコマンドを使用してデータベースに接続されているユーザーのスキーマに作成されます。Oracle GoldenGate ExtractおよびReplicatは、USERIDまたはUSERIDALIASスキーマでハートビート・オブジェクトを検索します。DBLOGINを使用して接続する場合は、ExtractおよびReplicatプロセスが使用する適切なUSERIDまたはUSERIDALIASスキーマに設定されていることを確認します。

    • Extract: 各PDBでスキーマ名を使用します。Extractが登録されている各PDBには、独自のハートビート表が必要です。どのスキーマでハートビート表を検索するかをExtractに指示するには、GLOBALSファイル内で構文GGSCHEMA pdb.schemanameを使用します。

    • Replicat: 各Replicatには、そのPDB用の独自のハートビート表が必要です。

    • 双方向アクティブ/アクティブ・レプリケーションの場合、ハートビート表は、各サイトの送信Extractと受信Replicatで同じスキーマ内にある必要があります。たとえば、次のユースケースを参照してください。

      サイトA サイトB

      EAB –-------------> RAB

      RBA –-------------> EBA

      この例では、EABおよびRBAハートビート表が同じスキーマを使用する必要があります。ただし、EABおよびRABでは異なるスキーマを使用できます。

  • Oracle GoldenGate for Oracleハートビート表の管理は、限定された状況を除き、GGSCHEMA (またはHEARTBEATTABLEパラメータ)の必要がなくなることで簡略化されました。ハートビート表の管理操作は、DBLOGINユーザーのスキーマでのみ実行されます。Oracle CDBルートExtractの場合を除き、ExtractおよびReplicatプロセスは、ER接続ユーザーのスキーマでハートビート表を検索します。次の表に、OracleデータベースでのExtractおよびReplicatの動作を示します。

    Extract/Replicatプロセス 動作

    非ルートExtract (非CDB、およびPDB)

    最初のExtractユーザーの場合はGGSCHEMAが使用され、Autonomous Database (ADB)の場合はユーザーがggadminである必要があります。

    Extractの起動後にハートビートが作成された場合は、Extractユーザーでのみ検索します。

    CDBルートExtract

    GGSCHEMAが使用されます。

    Replicat

    最初のReplicatユーザーの場合、GGSCHEMAが使用されます。ADBの場合、ユーザーはggadminである必要があります。

    Replicatの起動後にハートビートが作成された場合は、Replicatユーザーでのみ検索します。

    DELETE EXTRACT/REPLICAT

    最初のExtractまたはReplicatユーザーの場合は、GGSCHEMAが使用されます。ADBの場合、ユーザーはggadminである必要があります。

    この機能を使用すると、異なるOracle GoldenGate管理者スキーマで複数のデータベースを管理するOracle GoldenGate Hubデプロイメントでハートビート表を使用できます。

    ノート:

    ハートビート表オブジェクトはOracle Multitenant DatabaseのルートCDBに作成しないでください。
  • 異種またはOracle以外のデータベースの場合、ハートビート・オブジェクトおよびジョブはGLOBALSファイルにリストされているGGSCHEMA値で作成されます。

シード表、ハートビート表および履歴表のデフォルト名は、それぞれGG_HEARTBEAT_SEEDGG_HEARTBEATおよびGG_HEARTBEAT_HISTORYです。

Microservices Architectureでは、スキーマは、Oracle GoldenGate Microservicesを使用したデータ・レプリケーションのステップガイドのデプロイメントの作成方法に関する項に記載されているステップ12を使用して構成されます。

  • デフォルト名をオーバーライドするには、GLOBALSファイルでHEARTBEATTABLE hbschemaname.hbtablenameを指定します。

  • 表、プロシージャおよびジョブは、スキーマhbschemanameで作成されます。

  • シードと履歴表を作成するには、表hbtablename_SEEDおよび_HISTORYを追加します。

Db2 LUWの場合、db2set DB2_ATS_ENABLE=yesコマンドでDB2_ATS_ENABLEプロパティを設定する必要があります。

Db2 for iの場合、ハートビート表機能のアップグレードまたは構成の誤りを処理するために、ADD HEARTBEATTABLEコマンドを再度実行できます。これにより、既存のハートビート・データを削除せずに、ハートビート表設定の機能が修復されます。

Amazon RDSではグローバル変数の設定が許可されていないため、Amazon Aurora MySQLの場合はグローバル変数event_schedulerをパラメータ・グループで有効にする必要があります。データベースが再起動されると、event_schedulerは無効に戻ります。これを回避するには、my.cnf/iniファイルでevent_schedulerを有効にする必要があります。

PostgreSQLの場合、ハートビート・レコード更新および履歴レコード・パージ関数gg_hb_job_runを定期的にコールするシステム・ジョブを手動で作成する必要があります。たとえば、1分ごとに実行されるcronジョブを作成できます。この機能は、ハートビート構成の実際のハートビート・レコード更新およびパージ頻度設定をチェックし、これらの境界内の操作のみを処理します。
PGPASSWORD="$passwd" psql -U gguser -d dbname -h dbhostname -p dbport# -c "select <ggschema.gg_hb_job_run();" >/dev/null 2>&1

GGSCI構文

ADD HEARTBEATTABLE
[, FREQUENCY number_in_seconds]
[, RETENTION_TIME number_in_days] |
[, PURGE_FREQUENCY number_in_days]
[, PARTITIONED]
[, TARGETONLY]
FREQUENCY number_in_seconds

ハートビート・レコードが生成される頻度を指定します。デフォルトは60秒です。

次の制限を考慮します。

  • Oracle Databaseの場合、最小値は0、最大値は7999です。

  • Db2 for iシリーズの場合、最小値は0、最大値は7999です。

  • Db2 LUWおよびDb2 z/OSの場合、最小値は60、最大値は7999です。

  • Db2 /zOSおよびDb2 LUWの頻度は、3600未満の値では60の倍数である必要があり、3600以上の値では3600の倍数である必要があります。

  • MySQLの場合、最小値は0、最大値は7999です。

  • SQL Serverの場合、最小値は10、最大値は7999です。

  • PostgreSQLの場合、最小値は60、最大値は7999です。

  • FREQUENCYを0に設定できるデータベースでは、ハートビート・レコード・スケジューラが一時停止されます。

RETENTION_TIME number_in_days

ハートビート履歴表で保存時間を過ぎたハートビート・エントリをパージすることを指定します。デフォルトは30日です。

すべてのデータベースで、最小値は1、最大値は2147483646です。

PURGE_FREQUENCY number_in_days

保存時間を過ぎた表エントリをハートビート履歴表から削除するパージ・スケジューラの実行頻度を指定します。デフォルトは1日です。

Db2 LUWおよびDb2 z/OSの場合、最小値は1、最大値は31です。

サポートされている他のすべてのデータベースでは、最小値は1、最大値は199です。

PARTITIONED

Oracleに有効です。

ハートビート履歴表のパーティション化を有効にします。受信したハートビートのタイム・スタンプの列を使用して、表を1日間隔でパーティション化します。デフォルトでは、ハートビート履歴表はパーティション化されていません。

TARGETONLY
Oracle Database、Db2 iシリーズ、Db2 LUW、Db2 z/OS、MySQL、PostgreSQLおよびSQL Serverに有効です。
ハートビート・シード表とハートビート表の両方でサプリメンタル・ロギングを有効にしません。また、ハートビート表を更新するためのスケジューラ・ジョブは作成しません。

次のコマンドでは、デフォルトのハートビート表、プロシージャおよびジョブを作成します。

ADD HEARTBEATTABLE

次のコマンドでは、カスタム頻度、保存時間およびパージ頻度を指定してハートビート表、プロシージャおよびジョブを作成します。

ADD HEARTBEATTABLE, FREQUENCY 120, RETENTION_TIME 10, PURGE_FREQUENCY 2

次のコマンドでは、ハートビート履歴表でパーティション化が有効になっているハートビート表、プロシージャおよびジョブを作成します。ハートビート表およびハートビート・シード表のサプリメンタル・ロギングは有効化されません。

ADD HEARTBEATTABLE, partitioned, TARGETONLY