ADD HEARTBEATTABLE

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

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

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

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

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

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

  • (PostgreSQL)ラグ情報を取得するために、ジョブ表、ジョブ・プロシージャをハートビート表またはビューとともに作成します。TARGETONLYを指定すると、ジョブ表もジョブ・プロシージャも作成されません。NOTARGETONLYはサポートされていません。

ノート:

Teradataの場合、NOTARGETONLYオプションはサポートされていません。TeradataおよびPostgreSQLでは、オプションFREQUENCYPURGE_FREQUENCYおよびRETENTION_TIMEはサポートされていません。

シード表、ハートビート表および履歴表のデフォルト名は、それぞれGG_HEARTBEAT_SEEDGG_HEARTBEATおよびGG_HEARTBEAT_HISTORYです。表、プロシージャおよびスケジューラ・ジョブは、GLOBALSファイルに記述されているGGSCHEMAで作成されます。

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

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

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

Microservices Architectureでは、スキーマはレプリケーション設定を使用して構成されます。

Oracleの場合、CDBモードでハートビートを生成する各PDBでADD HEARTBEATTABLEを実行する必要があります。データベースでは、各PDB内にハートビート表が作成されます。ハートビート表の作成が必要なPDBには、DBLOGINコマンドを使用してログインします。

Db2 for iの場合、ハートビート表は、ハートビート表を使用してExtractでレプリケートされるオブジェクトと同じジャーナルに記録されます。ハートビート表が別のジャーナルに記録されている場合、Extractは異常終了し、複数のジャーナルが存在することを示します。また、特定のOracle GoldenGateインストールで、同じジャーナルを読み取っていない他のExtractでは、ハートビートを有効にできません。

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

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

Admin Client構文

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

GGSCI構文

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

ハートビート・シード表とハートビート表の更新頻度を指定します。たとえば、ハートビート・レコードが生成される頻度です。デフォルトは60秒です。

DB/400、DB2 z/OSおよびDB2 LUWを使用する場合は、次の制限を考慮してください。

  • number_in_secondsは、0から7999の間になる必要があります。ハートビートを一時停止するための特殊な値、ゼロが有効になります。

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

  • 最小頻度は、DB2400の場合は1、Db2 z/OSおよびDb2 LUWの場合は60です。

MySQLの場合、最大頻度の値は7999です。最小値は0、デフォルト値は60秒です。

SQL Serverの場合、最大頻度の値は3600です。最小値は0秒、デフォルト値は60秒です。

PostgreSQLの場合、最大頻度の値は7999です。最小値は60秒、デフォルト値は60秒です。ハートビート頻度を移入するcronジョブを作成する必要があります。cronジョブを60秒以内に実行する例を次に示します。
PGPASSWORD="$passwd" psql -U postgres -d postgres -h localhost -p 5433 -c "select public.gg_hb_job_run();" >/dev/null 2>&1
RETENTION_TIME number_in_days

履歴表で保存時間を過ぎたハートビート・エントリをパージするタイミングを指定します。デフォルトは30日です。Db2/400、Db2 z/OSおよびDb2 LUWの場合、最大保存時間は31日です。値は1から2147483646の間である必要があります。

MySQL、SQL Server、PostgreSQLの場合、最大保存時間の値は2147483646日です。最小値は1日、デフォルト値は30日です。

PURGE_FREQUENCY number_in_days

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

GGSCIの場合、このパラメータはDB2 LUWおよびDB2 for z/OSのnumber_in_daysを1から31の間隔で指定する必要があります。

MySQL、SQL ServerおよびPostgreSQLの場合、最大パージ頻度の値は199日です。最小値およびデフォルト値は1日です。

PARTITIONED

Oracleに有効です。

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

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

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

ADD HEARTBEATTABLE

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

ADD HEARTBEATTABLE, frequency 120, retention_time 10, purge_frequency 2

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

ADD HEARTBEATTABLE, partitioned, TARGETONLY
次の例は、PostgreSQLでのハートビート表の追加を示しています:
GGSCI> ADD HEARTBEATTABLE, FREQUENCY 10, PURGE_FREQUENCY 10, RETENTION_TIME 10