注:

  • 以下类型,增量发布不能获取到数据,通过回查方式处理:
    TEXT,JSON,BSON,BYTE,LONG,CLOB,BLOB,INTERVAL
  • cdc支持truncat操作,不支持其他ddl,进而导致增量发布不支持ddl,并且同步过程中的同步表不允许执行ddl
    执行ddl,同步操作流程:
    a)停止增量发布
    b)执行EXECUTE FUNCTION syscdcv1.cdc_set_fullrowlogging(‘库名:gbasedbt.表名’, 0);
    c)源端执行对应的ddl
    d)目标库手动执行对应的ddl
    e)启动增量发布
  • 增量发布队列里必须配置同步表,否则real报错:ZCBUS-61700: no table in dict
  • 发布端,db_name需要指定cdc库,固定值syscdcv1,否则real报错: ZCBUS-404: 不能解析例行程序 (cdc_opensess)。

1 源库配置

1.1 检查源库是否开启日志模式

1.1.1 查看数据库日志模式

set environment sqlmode 'oracle' ;
select  a.name,a.owner,a.is_logging,a.is_buff_log from sysmaster.sysdatabases a where a.name='your_database';

其中is_logging需要为1,is_buff_log为0或者1都可以。如果查询结果不符合要求,则联系管理员处理。

1.1.2 如果没有开启日志模式,数据库开启g

ontape -s -L 0 -t /dev/null -U your_database

1.2 开启cdc

1.2.1 查询syscdcv1是否存在

set environment sqlmode 'oracle' ;
select  a.name,a.owner,a.is_logging,a.is_buff_log from sysmaster.sysdatabases a where a.name='syscdcv1';

1.2.2 如果不存在syscdcv1库,创建syscdcv1库

在服务器命令行,执行以下命令创建syscdcv1库:

  • 切换到gbasedbt用户
    su - gbasedbt
  • 使用dbaccess工具执行syscdcv1.sql脚本
    dbaccess - your_gbase8s_path/etc/syscdcv1.sql
    syscdcv1.sql会创建 syscdcv1 数据库,并在 syscdcv1 数据库中创建若干表和函数。

1.3 创建用户及赋权

1.3.1 创建用户

  • 开启用户映射:(之前已开启,此步跳过)
    root用户执行:

    mkdir /etc/gbasedbt
    echo "USER:daemon" >> /etc/gbasedbt/allowed.surrogates
    gbasedbt用户执行:
    su - gbasedbt
    onmode -wf USERMAPPING='ADMIN'
    onmode -cache surrogates
    dbaccess sysuser - <<!
    CREATE DEFAULT USER WITH PROPERTIES USER 'daemon';
    !
  • 创建用户:

    dbaccess sysuser -<<!
    CREATE USER zcbus WITH PASSWORD "用户密码";
    !

1.3.2 用户赋权

set environment sqlmode 'oracle' ;
-- 切换到syscdcv1库
database syscdcv1;
-- 对zcbus用户授予
grant connect to zcbus;
GRANT EXECUTE ON function  cdc_activatesess TO zcbus;
GRANT EXECUTE ON function  cdc_closesess TO zcbus;
GRANT EXECUTE ON function  cdc_deactivatesess TO zcbus;
GRANT EXECUTE ON function  cdc_endcapture TO zcbus;
GRANT EXECUTE ON function  cdc_errortext TO zcbus;
GRANT EXECUTE ON function  cdc_opensess TO zcbus;
GRANT EXECUTE ON function  cdc_recboundary TO zcbus;
GRANT EXECUTE ON function  cdc_set_fullrowlogging TO zcbus;
GRANT EXECUTE ON function  cdc_startcapture TO zcbus;
-- 切换到源库需要同步的库,对zcbus用户授予权限,需要授予connect 或者connect 以上权限。
database 同步数据库名称;
grant connect to zcbus;

2 数据类型支持

字段类型 是否支持 字段描述
SMALLINT 是
INTEGER 是
INT8 是
BIGINT 是
DECIMAL 是
NUMERIC 是
FLOAT 是
SMALLFLOAT 是
REAL 是
DOUBLE 是
LONG 是
SERIAL 是
SERIAL8 是
BIGSERIAL 是
MONEY 是
CHAR 是
VARCHAR 是
LVARCHAR 是
NCHAR 是
NVARCHAR 是
CHARACTER VARYING 是
DATE 是
DATETIME 是
INTERVAL 是
TEXT 是
BYTE 是
CLOB 是
BLOB 是
JSON/BSON 是
XML 是
RAW 是
BOOLEAN 是
ROW 否
Set 否
List 否
Multiset 否
文档更新时间: 2025-09-21 16:29   作者:周风磊