
# 心跳表格式
心跳表必须含有三个字段dlf_job_id、external_job_id和heartbeat，且主键名必须为dlf_job_id。
各个数据源对应字段的数据类型如下：
表1各个数据源对应字段的数据类型 
| 字段名             | MySQL类型      | Oracle类型      | SQL Server类型  | PostgreSQL/GaussDB类型 | 说明                               |
|:---|:---|:---|:---|:---|:---|
| dlf_job_id      | VARCHAR(128) | VARCHAR2(128) | NVARCHAR(128) | VARCHAR(128)         | 主键，Migration实时集成作业ID。            |
| external_job_id | VARCHAR(128) | VARCHAR2(128) | NVARCHAR(128) | VARCHAR(128)         | Migration实时集成底层作业ID。             |
| heartbeat       | BIGINT       | NUMBER(20, 0) | BIGINT        | BIGINT               | 心跳时间，为同步作业的系统生成心跳数据的UTC时间，单位为毫秒。 |
   
- **MySQL**
  ```
  CREATE TABLE `your_db_name`.`your_heartbeat_table_name` (
    `dlf_job_id` VARCHAR(128) PRIMARY KEY,
    `external_job_id` VARCHAR(128),
    `heartbeat` BIGINT
  )
  ```
  
- **PostgreSQL/GaussDB**
  ```
  CREATE TABLE "your_schema_name"."your_heartbeat_table_name" (
    "dlf_job_id" VARCHAR(128) PRIMARY KEY,
    "external_job_id" VARCHAR(128),
    "heartbeat" BIGINT
  )
  ```
  
- **Oracle**
  ```
  CREATE TABLE "your_schema_name"."your_heartbeat_table_name"(
    "dlf_job_id" NVARCHAR2(128) PRIMARY KEY,
    "external_job_id" NVARCHAR2(128),
    "heartbeat" NUMBER(20, 0)
  )
  ```
  Oracle心跳表创建完成后（包括作业自动建表），请为心跳表开启补充日志，否则心跳表数据将无法同步。
  ALTER TABLE "your_schema_name"."your_heartbeat_table_name" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
  
- **SQL Server**
  ```
  CREATE TABLE [your_schema_name].[your_heartbeat_table_name] (
        [dlf_job_id] NVARCHAR(128) PRIMARY KEY,
    [external_job_id] NVARCHAR(128),
    [heartbeat] BIGINT
    )
  ```
  SQL Server心跳表创建完成后（包括作业自动建表），请为心跳表开启CDC功能，否则心跳表数据将无法同步。
  ```
  EXEC sys.sp_cdc_enable_table
        @source_schema = N'your_schema_name',   
        @source_name = N'your_heartbeat_table_name',-- 表名 
        @role_name = NULL,   
        @supports_net_changes = 0;
  ```
  
 
