事务级数据比对服务

源端支持数据库类型:LOGMNR模式

  1. 发布节点创建临时表

  2. 发布节点配置临时表存放信息
    在bus_push_db_parameter配置参数auto_compare_table为ZCBUS.AUTO_COMPARE_TBL,注意表名大小写。

  3. 源端Orcale创建表语句,表结构严格参考如下信息:

CREATE TABLE ZCBUS.AUTO_COMPARE_TBL (
    table_schema varchar2 (128),
    table_name varchar2 (128),
    scnt number,
    STATUS INT,
    create_time date,
    update_time date,
    PRIMARY KEY (table_schema, table_name)
);
  1. 生产操作SQL逻辑
delete from ZCBUS.AUTO_COMPARE_TBL where table_schema='SAPSR3' and table_name='BKPF';
INSERT INTO ZCBUS.AUTO_COMPARE_TBL(table_schema,table_name,scnt,status,create_time,update_time) values('SAPSR3','BKPF',0,0,sysdate,sysdate);
commit;
update ZCBUS.AUTO_COMPARE_TBL set scnt=(select count(1) from SAPSR3.BKPF),status=1,update_time=sysdate where table_schema='SAPSR3' and table_name='BKPF';
commit;

说明:增量分析到ZCBUS.AUTO_COMPARE_TBL的insert和update操作,会分别形成两条控制信息发送到ZC01.TB01的topic里。

  1. 客户端订阅在bus_client_main_control_properties里设置参数auto_compare=1时,在订阅时遇到这两种控制信息,会自动进行比对,比对结果插入到bus_client_auto_compare_result表中。
CREATE TABLE `bus_client_auto_compare_result` (
    `id` INT (11) NOT NULL AUTO_INCREMENT,
    `customerid` INT (11) NOT NULL,
    `tableid` INT (11) NOT NULL,
    `objectid` INT (11) NOT NULL,
    `status` INT (11) NOT NULL DEFAULT '0' COMMENT '0 - 未开始 1 - 比对开始 2 - 完成比对',
    `TargetTableSchema` VARCHAR (128) NOT NULL,
    `TargetTableName` VARCHAR (128) NOT NULL,
    `scnt` BIGINT (20) NOT NULL DEFAULT '0' COMMENT '源端记录数',
    `tcnt` BIGINT (20) NOT NULL DEFAULT '0' COMMENT '目标端记录数',
    `source_starttime` datetime DEFAULT NULL COMMENT '源端查询记录数起始时间',
    `source_endttime` datetime DEFAULT NULL COMMENT '源端查询记录数完成时间',
    `target_endtime` datetime DEFAULT NULL COMMENT '目标端查询记录数完成时间',
    `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    UNIQUE KEY `customerid` (`customerid`, `objectid`)
)
文档更新时间: 2022-09-26 21:01   作者:阿力