ADD HEARTBEATTABLE
对所有支持的数据库有效。有关支持的数据库的详细信息,请参阅认证矩阵。
此命令需要使用 DBLOGIN 登录数据库。
使用 ADD HEARTBEATTABLE 可以创建使用自动脉动功能所需的对象。此命令执行以下任务
-
创建脉动种子表、脉动表和脉动历史记录表。
-
创建
GG_LAG和GG_LAG_HISTORY视图。 -
创建调度程序作业调用的
GG_UPDATE_HB_TAB和GG_PURGE_HB_TAB过程。 -
创建用于定期更新脉动和种子表以及清除历史记录表的调度程序作业。但对于 Azure SQL 数据库、PostgreSQL、Teradata 和 TimesTen,不会创建这些作业。
-
填充种子表。
-
对于 Oracle 多租户数据库:
-
在使用
DBLOGIN命令连接到数据库的用户方案中创建脉动对象和作业。Oracle GoldenGate 提取和复制在USERID或USERIDALIAS方案中查找脉动对象。在使用DBLOGIN建立连接时,确保其设置为适当的USERID或USERIDALIAS方案,以供提取和复制进程使用。 -
提取:在每个 PDB 中使用方案名称。在其中注册提取的每个 PDB 都应有自己的脉动表。
-
复制:每个复制在对应的 PDB 中都必须有自己的脉动表。
-
对于双向、主动/主动复制,每个站点的传出提取和传入复制的脉动表应位于同一方案中。例如,参见以下用例:
站点 A 站点 B
EAB————— > ` RAB`RBA————— > ` EBA`在此示例中,
EAB和RBA脉动表必须使用同一方案。但是,EAB和RAB可以使用不同方案。
-
-
适用于 Oracle 脉动表管理的 Oracle GoldenGate 已简化,除了有限的情况外,不需要使用
GGSCHEMA(或HEARTBEATTABLE参数)。仅在DBLOGIN用户的方案中才会进行脉动表管理操作。除了 Oracle CDB 根提取外,提取和复制进程在 ER 连接用户的方案中查找脉动表。下表显示了 Oracle AI Database 的提取和复制行为:提取/复制进程 行为 非根提取(非 CDB 和 PDB) 如果是第一个提取用户,则使用
GGSCHEMA,对于自治 AI 数据库,用户必须是ggadmin。如果脉动是在提取启动后创建的,则仅在提取用户中查找。
CDB 根提取 使用 GGSCHEMA。复制 如果是第一个复制用户,则使用
GGSCHEMA。对于 ADB,用户必须是ggadmin。如果脉动是在复制启动后创建的,则仅在复制用户中查找。
DELETE EXTRACT/REPLICAT如果是第一个提取或复制用户,则使用 GGSCHEMA。对于 ADB,用户必须是ggadmin。此功能支持在 Oracle GoldenGate 中心部署中使用脉动表,此时多个数据库使用不同的 Oracle GoldenGate 管理员方案进行管理。
注:绝不应在 Oracle Multitenant 数据库的根 CDB 中创建心跳表对象。
- 对于异构或非 Oracle 数据库,在 GLOBALS 文件中列出的
GGSCHEMA值中创建脉动对象和作业。
默认种子、脉动和历史记录表名分别为 GG_HEARTBEAT_SEED、GG_HEARTBEAT 和 GG_HEARTBEAT_HISTORY。
在微服务体系结构中,使用复制设置配置方案。
-
可以通过在
GLOBALS文件中指定HEARTBEATTABLEhbschemaname.hbtablename覆盖默认名称。 -
在方案
hbschemaname中创建表、过程和作业。 -
种子和历史记录表通过向表
hbtablename附加_SEED和_HISTORY来创建。
对于 Db2 LUW,必须使用 db2set DB2_ATS_ENABLE=yes 命令设置 DB2_ATS_ENABLE 属性。
对于 i 的 Db2,要处理脉动表的升级或错误配置,可以再次运行 ADD HEARTBEATTABLE 命令,它将修复现有脉动表的设置的功能,而不删除现有脉动数据。
对于 i,必须安装许可的程序 5770SS1 Option 39 International Components for Unicode(对于 i)。Db2
对于 Db2 for i,必须将脉动表记录到与对象相同的日志中,这些对象使用所述的脉动表在提取中进行复制。如果未这样,提取将异常终止并指示有多个日志可用。此外,对于特定 Oracle GoldenGate 安装中不读取相同日志的任何其他提取,无法为其启用脉动表。
对于 Amazon Aurora MySQL,必须在参数组中启用全局变量 event_scheduler,因为 Amazon RDS 不允许设置全局变量。重新启动数据库后,event_scheduler 将恢复为禁用。要避免这种情况,需要在 my.cnf/ini 文件中启用 event_scheduler。
对于 PostgreSQL,必须手动创建系统作业来定期调用脉动记录更新和历史记录清除函数 gg_hb_job_run。例如,可以创建一个每分钟运行一次的 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 数据库,仅支持 ADD HEARTBEATTABLE TARGETONLY,并且由于 Azure SQL 数据库没有 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 有效。
在脉动历史记录表上启用分区。收到的脉动时间戳所在列用于以一天为间隔对表进行分区。默认情况下,不对脉动历史记录表进行分区。
TARGETONLY
对 Oracle AI Database、Db2 i Series、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