反馈已提交

网络繁忙

②开启补充日志

  • 文档创建者:Wendy123456
  • 历史版本:2
  • 最近更新:Wendy123456 于 2026-01-29
  • 1. 概述

    必须为捕获的表或数据库启用补充日志记录,以便数据更改能够捕获已更改的数据库行之前的状态。下面将说明如何在表/数据库级别上配置它。 一般建议对库进行启用。

    用户根据实际的数据库版本,参考下面文档进行操作。

    2. Oracle 10g、11g

    用户根据实际情况,选择其中一种方案:

    方案说明步骤
    开启单表补全日志

    同步某张表时,就需要开启该表的补全日

    优势:操作比较精准

    开启单表的全补充得在运行管道任务前,不然有可能会出现数据丢失

    劣势:需要一张一张开启

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;--开启最小补充日志
    ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;--为XX表开启全补充日志


    开启全库补全日志

    若用户库里的表数据量可控,且希望一劳永逸(不想每同步一张表就开启一次),可开启全库补全日

    劣势:会占用较多数据库空间

    alter database add supplemental log data;
    alter system switch logfile;
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    15.png

    3. Oracle 12c、18c、19c、21c、Oracle RAC集群

    3.1 数据库是否支持CDB/PDB

    Oracle12c 及之后版本引入了多租用户环境,其中包含两个核心概念:容器数据库-CDB(Container Database)和可插拔数据库-PDB(Pluggable Database)。

    CDB 是一个包含零个或多个 PDB 的数据库;PDB 是一个独立的数据库,可以插入或拔出 CDB,每个 PDB 都有自己的数据文件和用户数据;CDB 管理多个 PDB,PDB 共享 CDB 中的系统资源,但数据和对象是隔离的。

    1769671976195791.png

    在使用上二者与非多租户数据库实例没有任何区别,区别主要在于获取数据变更时,只能从CDB中捕获到,基于此要对其进行适配。

    1)判断当前连接的数据库是否是CDB

    以具有 DBA 权限的用户身份登录数据库,使用如下命令查看数据库是否开启多租户:

    SELECT CDB FROM V$DATABASE;

    13.png

    如果查询结果中的 CDB 列值为 YES,则当前连接的数据库是容器数据库(CDB)。如果值为 NO,则当前连接的数据库是非容器数据库(非 CDB)

    2)判断当前连接的是根容器还是 PDB

    SELECT SYS_CONTEXT('USERENV', 'CON_NAME') FROM DUAL;

    1769672044765692.png

    若返回的是 CDB$ROOT,则表示当前连接的是 CDB 的根容器;若返回的是其他名称,则表示当前连接的是 PDB。

    3.2 场景一:非多租户

    使用以下命令,确认 supplemental logging 是否开启:

    SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;

    1769671638291301.png

    如果返回的三列都是 Yes 或者 Implicit 

    如果返回的三列都是 Yes 或者 Implicit ,则表示 identification key logging(标识键日志)和 full supplemental logging(全补充日志)已同时开启,可以直接查看第五章数据库账号相关内容。

    如果返回的前两列是 Yes 或者 Implicit 

    如果返回的前两列是 Yes 或者 Implicit,则表示只开启了 identification key logging(标识键日志),需要开启全补充日志。

    单表开启 full supplemental logging(全补充日志),使用如下命令:

    ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    所有表开启 full supplemental logging(全补充日志),使用如下命令:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    17.png

    提交更改的配置:

    ALTER SYSTEM SWITCH LOGFILE;

    然后可以使用命令查看单表的补全日志权限是否开启:

    SELECT OWNER, TABLE_NAME, LOG_GROUP_NAME, ALWAYS, LOGGING_COLUMNS
    FROM DBA_LOG_GROUPS
    WHERE TABLE_NAME = '你的表名';

    3.3 场景二:CDB/PDB

    用户根据实际情况,选择其中一种方案:

    方案说明步骤
    开启单表补全日志

    同步某张表时,就需要开启该表的补全日

    优势:操作比较精准

    开启单表的全补充得在运行管道任务前,不然有可能会出现数据丢失

    劣势:需要一张一张开启

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;    
    ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;


    开启全库补全日志

    若用户库里的表数据量可控,且希望一劳永逸(不想每同步一张表就开启一次),可开启全库补全日

    劣势:会占用较多数据库空间

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;


    4. 后续步骤

    详情请参见:③读取数据变更记录



    附件列表


    主题: 数据管道
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持