ADD HEARTBEATTABLE
サポートされているすべてのデータベースで有効です。サポートされているデータベースの詳細は、動作保証マトリックスを参照してください。
このコマンドにはDBLOGINを使用したデータベース・ログインが必要です。
ADD HEARTBEATTABLEでは、自動ハートビート機能を使用する場合に必要なオブジェクトを作成します。このコマンドは次のタスクを実行します
-
ハートビート・シード表、ハートビート表およびハートビート履歴表を作成します。
-
GG_LAGビューおよびGG_LAG_HISTORYビューの作成。 -
スケジューラ・ジョブによってコールされる
GG_UPDATE_HB_TABおよびGG_PURGE_HB_TABプロシージャの作成。 -
定期的にハートビート表とシード表を更新し、履歴表をパージするスケジューラ・ジョブを作成します。ただし、Azure SQL Database、PostgreSQL、TeradataおよびTimesTenの場合、これらのジョブは作成されません。
-
シード表に移入します。
-
Oracleマルチテナント・データベースの場合:
-
ハートビート・オブジェクトおよびジョブは、
DBLOGINコマンドを使用してデータベースに接続しているユーザーのスキーマで作成されます。Oracle GoldenGate ExtractおよびReplicatは、USERIDまたはUSERIDALIASスキーマでハートビート・オブジェクトを検索します。DBLOGINを使用して接続する場合は、ExtractおよびReplicatプロセスが使用する適切なUSERIDまたはUSERIDALIASスキーマに設定されていることを確認します。 -
Extract: 各PDBのスキーマ名が使用されます。Extractが登録されている各PDBには、それぞれのハートビート表が必要です。
-
Replicat: 各Replicatには、そのPDB用の独自のハートビート表が必要です。
-
双方向のアクティブ/アクティブ・レプリケーションの場合、ハートビート表は、各サイトの送信Extractsと受信Replicatsで同じスキーマに存在する必要があります。たとえば、次のユース・ケースをご覧ください:
サイトA サイトB
EAB— — —> ` RAB`RBA— — —> ` EBA`この例では、
EABおよびRBAハートビート表が同じスキーマを使用する必要があります。ただし、EABおよびRABでは異なるスキーマを使用できます。
-
-
Oracle GoldenGate for Oracleハートビート表の管理は、限定された状況を除き、
GGSCHEMA(またはHEARTBEATTABLEパラメータ)の必要がなくなることで簡略化されました。ハートビート表の管理操作は、DBLOGINユーザーのスキーマでのみ実行されます。Oracle CDBルートExtractの場合を除き、ExtractおよびReplicatプロセスでは、ER接続ユーザーのスキーマでハートビート表が検索されます。次の表に、Oracle AI DatabaseでのExtractおよびReplicatの動作を示します:Extract/Replicatプロセス 動作 非ルートExtract (非CDB、およびPDB) 最初のExtractユーザーの場合は
GGSCHEMAが使用され、Autonomous AI Databaseの場合はユーザーが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_SEED、GG_HEARTBEATおよびGG_HEARTBEAT_HISTORYです。
Microservices Architectureでは、スキーマはレプリケーション設定を使用して構成されます。
-
デフォルト名をオーバーライドするには、
GLOBALSファイルにHEARTBEATTABLEhbschemaname.hbtablenameを指定します。 -
表、プロシージャおよびジョブは、スキーマ
hbschemanameで作成されます。 -
シードと履歴表は、
_SEEDおよび_HISTORYを表0hbtablenameに追加することで作成されます。
Db2 LUWの場合、db2set DB2_ATS_ENABLE=yesコマンドでDB2_ATS_ENABLEプロパティを設定する必要があります。
Db2 for iでは、ハートビート表の機能のアップグレードまたは構成ミスを処理するために、ADD HEARTBEATTABLEコマンドを再度実行できるため、既存のハートビー・データを削除せずに、既存のハートビー表設定の機能を修復します。
Db2 for iの場合、使用許諾されたプログラム5770SS1 Option 39 International Components for Unicodeをインストールする必要があります。
Db2 for iの場合、ハートビート表は、前述のハートビート表を使用してExtractでレプリケートするオブジェクトと同じジャーナルにジャーナル化する必要があります。そうしないと、Extractは複数のジャーナルが利用可能であることを示して異常終了します。また、特定のOracle GoldenGateインストールで、同じジャーナルを読み取らない他のExtractでは、ハートビート表を有効にできません。
Amazon Aurora MySQLでは、Amazon RDSでグローバル変数の設定が許可されないため、パラメータ・グループ内でグローバル変数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
Azure SQL Databaseの場合、ADD HEARTBEATTABLE TARGETONLYのみがサポートされており、Azure SQL Databaseを使用するSQL Serverエージェントがないため、パージ・ルーチンを作成できません。そのため、ユーザーはGG_PURGE_HB_TABストアド・プロシージャを定期的に実行して、古いハートビート・レコードを削除する必要があります。
構文
ADD HEARTBEATTABLE
[, FREQUENCY number_in_seconds]
[, RETENTION_TIME number_in_days] |
[, PURGE_FREQUENCY number_in_days]
[, PARTITIONED]
[, TARGETONLY]
FREQUENCY number_in_seconds
ハートビート・レコードが生成される頻度を指定します。デフォルトは60秒です。
次の制限事項を確認してください:
-
Oracle AI 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です。
-
Sybaseの場合、最小値は1分(60秒)で、最大値は133分(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 AI 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