You need to enable JavaScript to run this app.
导航
Oracle CDC 数据源 LogMiner 配置文档
最近更新时间:2024.08.26 20:06:34首次发布时间:2024.08.26 20:06:34

1 概述

在 Oracle CDC 数据源中,使用基于 LogMiner 的日志进行实时采集时需要进行一些配置操作。本文将为您介绍进行实时采集前的前置操作。

2 使用限制

  • 当前配置方案适用于 Oracle 整库的数据变更量小于 10000 条/秒的场景;
  • 仅支持主库读取,不支持从库;
  • 默认情况下,只支持 Oracle 非 CDB 模式,以及非 RAC 模式1
  • 不支持二进制类型和超大类型、特殊类型,例如 NCLOB、CLOB、BFILE、XMLTYPE、LONG、BINARY,VARBINARY,TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB。

3 配置步骤

3.1 启用归档日志模式(Archive Log)

注意

  • 开启 Archive Log 需要重启数据库,可能会导致业务中断,请谨慎评估后进行。
  • 开启 Archive Log 模式后,请务必预留足够磁盘空间(建议 50GB 以上),以免空间不足导致 Oracle 异常。
  1. 在**数据盘(确保有足够空余空间)**新建目标目录,例如:

    mkdir -p /opt/oracle/oradata/recovery_area
    mkdir -p /opt/oracle/oradata/ORCLCDB
    
    -- 对于 CDB + PDB 模式,还需要执行如下的命令,为 PDB 也创建对应的目录:
    mkdir -p /opt/oracle/oradata/ORCLCDB/ORCLPDB1
    
    chown -R oracle /opt/oracle/***
    
  2. 切换到有 Oracle DBA 权限的用户,运行 sqlplus / as sysdba 命令。

  3. 然后在 sqlplus 命令中,继续执行如下指令,设置日志目录的最大占用空间,以及存储路径:

    alter system set db_recovery_file_dest_size = 100G;
    alter system set db_recovery_file_dest = '/opt/oracle/oradata/recovery_area' scope=spfile;
    
  4. 上述指令执行完成后,随后继续执行如下指令:

    shutdown immediate;
    startup mount;
    alter database archivelog;
    alter database open;
    
    -- 必须执行, 否则会出现列缺失等问题;
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    alter system switch logfile;
    
    -- 确保如下图显示 "Database log mode: Archive Mode"
    archive log list;
    
    -- 配置完成后退出
    exit;
    

说明

建议通过 RMAN 配置 Archive Log 清理策略,同样也是切换到有 Oracle DBA 权限的用户,运行 rman target / 命令后执行如下策略:
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;

此外,您可以手动或定期执行如下命令,主动触发清理:
DELETE NOPROMPT ARCHIVELOG ALL BACKED UP 1 TIMES TO DISK;

3.2 检查 LogMiner 安装情况(可选)

  1. 首先进入 sysplus 命令,执行:

    desc DBMS_LOGMNR;
    desc DBMS_LOGMNR_D;
    
  2. 如果上述执行语句没有任何信息返回,则需要执行如下命令来安装 LogMiner 组件。否则有信息返回时无需安装。

    @$ORACLE_HOME/rdbms/admin/dbmslm.sql
    @$ORACLE_HOME/rdbms/admin/dbmslmd.sql
    

3.3 配置 LogMiner 用户和权限

  1. 再次进入 sysplus 命令,执行下面命令:

    注意

    仅适用于 12c 及以上的 Oracle 版本。

    SELECT name, cdb from v$database;
    
  2. 如果 CDB 为 0,则说明是非 CDB 模式,可以继续执行下面的命令:

    注意

    以下命令仅适用于 10g、11c 版本,或者 12c 及以上版本的非 CDB 模式。
    **如果自行指定了归档目录,则请替换下文的路径为您部署环境的实际路径;**此外,请替换 CREATE USER 命令中的 [您的密码] 为实际密码值

    -- 创建 LogMiner 采集用户
    CREATE TABLESPACE logminer_tbs DATAFILE '/opt/oracle/oradata/ORCLCDB/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
    CREATE USER logminer_user IDENTIFIED BY [您的密码] DEFAULT TABLESPACE logminer_tbs QUOTA UNLIMITED ON logminer_tbs;
    
    -- 允许获取 LogMiner 所必须的表
    GRANT CREATE SESSION TO logminer_user;
    GRANT SELECT ON V_$DATABASE to logminer_user;
    GRANT SELECT ON V_$LOG TO logminer_user;
    GRANT SELECT ON V_$LOGFILE TO logminer_user;
    GRANT SELECT ON V_$LOGMNR_LOGS TO logminer_user;
    GRANT SELECT ON V_$LOGMNR_CONTENTS TO logminer_user;
    GRANT SELECT ON V_$ARCHIVED_LOG TO logminer_user;
    GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO logminer_user;
    GRANT EXECUTE ON DBMS_LOGMNR TO logminer_user;
    GRANT EXECUTE ON DBMS_LOGMNR_D TO logminer_user;
    
    GRANT SELECT ANY TABLE TO logminer_user;
    GRANT ANALYZE ANY TO logminer_user;
    
    -- 允许查看所有用户信息
    GRANT SELECT ON ALL_USERS TO logminer_user;
    
    -- 允许查看所有对象信息
    GRANT SELECT ON ALL_OBJECTS TO logminer_user;
    GRANT SELECT ON DBA_OBJECTS TO logminer_user;
    
    -- 允许查看物化视图和物化视图日志
    GRANT SELECT ON DBA_MVIEWS TO logminer_user;
    GRANT SELECT ON DBA_MVIEW_LOGS TO logminer_user;
    
    -- 允许查看约束信息
    GRANT SELECT ON DBA_CONSTRAINTS TO logminer_user;
    GRANT SELECT ON DBA_CONS_COLUMNS TO logminer_user;
    
    -- 允许查看表列信息
    GRANT SELECT ON ALL_TAB_COLS TO logminer_user;
    
    -- 允许查看系统表信息
    GRANT SELECT ON SYS.OBJ$ TO logminer_user;
    GRANT SELECT ON SYS.COL$ TO logminer_user;
    GRANT SELECT ON SYS.USER$ TO logminer_user;
    GRANT SELECT ON SYS.CDEF$ TO logminer_user;
    GRANT SELECT ON SYS.CON$ TO logminer_user;
    GRANT SELECT_CATALOG_ROLE to logminer_user WITH delegate option;
    
    -- 允许查看所有索引信息
    GRANT SELECT ON ALL_INDEXES TO logminer_user;
    
    -- 允许查看备用日志信息
    GRANT SELECT ON V_$STANDBY_LOG TO logminer_user;
    GRANT SELECT ON V_$ARCHIVE_GAP TO logminer_user;
    
    -- 允许查看事务信息
    GRANT SELECT ANY TRANSACTION TO logminer_user;
    
    -- 允许查询 DUAL 表
    GRANT SELECT ON DUAL TO logminer_user;
    
    -- Oracle 12c 及更高版本需要额外执行如下命令, 11 等旧版本无需执行
    GRANT LOGMINING TO logminer_user;
    

强烈不建议】如果您在测试环境遇到其他各类权限问题,如 ORA-01031: insufficient privileges、ORA-00942: table or view does not exist,可以尝试执行快速授予高权限:

GRANT DBA TO logminer_user;

-- 数据同步任务全部执行完成以后可解除授权
REVOKE DBA FROM logminer_user;

4 实时数据集成使用方法

上述配置操作完成后,您可通过 DataSail 解决方案界面,来配置 Oracle 实时整库同步、分库分表等作业,便可实现全增量数据同步的效果。

  1. 登录 DataSail 控制台
  2. 在左侧导航栏中选择数据同步方案,进入同步方案配置界面。
  3. 单击目录树中项目选择入口,选择已创建的 DataLeap 项目。
  4. 图片
  5. 单击右上角新建数据同步解决方案按钮,下拉选择实时整库同步、实时分库分表按钮,进入整库实时同步方案配置界面。按照以下配置,完成方案新建。

进入配置界面后,您可按实际场景需求,完成方案的基本配置、数据缓存配置、映射配置等流程配置。具体配置说明详见解决方案
图片