注:

  • 以下类型,增量发布不能获取到数据,通过回查方式处理:
    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   作者:周风磊