1. 概述
1.1 版本
| FineDataLink 版本 | 功能变动 |
|---|---|
| 5.0.5.1 | Oracle 作为实时管道、实时任务来源端时,支持裸日志解析方式 |
1.2 应用场景
1)Oracle 的 XStream 和 LogMiner 两种 CDC 模式,是使用源库的硬件资源,当用户源端数据库的硬件资源跟不上业务的更新频率时,可能导致数据库卡顿,影响其上层业务系统使用。
2)当用户源端数据库的业务更新频率非常大时,由于 LogMiner 解析速度较慢,会导致:
数据延迟非常大。
如果解析速度长时间达不到日志增量速度,当超过日志保留时间时,实时同步会同步异常,并且「重新全量+增量同步」的成本往往非常高。
1.3 功能简介
实时任务、实时管道支持 Oracle 裸日志解析方式,降低日志解析对源端数据库的影响,提高日志解析速度。
1.4 前提条件
产品注册版本为「v5.0」且需注册「Oracle(独立日志解析)」功能点。
2. 操作步骤
2.1 安装解析器
联系技术支持,获取解析器的部署包并安装(技术支持联系方式:前往「服务」,选择「在线支持」、电话「400-811-8890」)。
2.2 开启LogMiner模式的CDC功能
步骤请参见:Oracle环境准备(LogMiner) 文档的第二章-第四章内容。
2.3 为用户赋予权限
创建用户并赋予权限。
1)创建和配置表空间(需要同步表所处的模式,若表空间已存在,忽略该步骤),表空间名称为 TBLS1,初始数据文件大小为 100MB,当空间不足时自动扩展,每次扩展 100MB。
注:用户可自定义表空间名称。
ALTER SESSION SET CONTAINER = XEPDB1;
CREATE TABLESPACE TBLS1 DATAFILE SIZE 100M AUTOEXTEND ON NEXT 100M;
ALTER TABLESPACE TBLS1 FORCE LOGGING;2)创建一个用户,用户名为 USR1,密码为 USR1PWD,使用的表空间是 TBLS1(需要同步表所处的模式)。
允许用户 USR1 在 TBLS1 表空间中无限制使用存储空间。
注:用户根据实际情况修改用户名、密码、表空间;该用户为后续 2.4 节中配置 Oracle 数据连接时填入的用户名。
CREATE USER USR1 IDENTIFIED BY USR1PWD DEFAULT TABLESPACE TBLS1 TEMPORARY TABLESPACE TEMP;
ALTER USER USR1 QUOTA UNLIMITED ON TBLS1;
3)为用户 USR1 赋予权限:
GRANT CONNECT TO USR1;
GRANT RESOURCE TO USR1;
GRANT SELECT, FLASHBACK ON SYS.CCOL$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.CDEF$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.COL$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.DEFERRED_STG$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.ECOL$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.LOB$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.LOBCOMPPART$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.LOBFRAG$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.OBJ$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.TAB$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.TABCOMPART$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.TABPART$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.TABSUBPART$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.TS$ TO USR1;
GRANT SELECT, FLASHBACK ON SYS.USER$ TO USR1;
GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USR1;
GRANT SELECT ON SYS.V_$DATABASE TO USR1;
GRANT SELECT ON SYS.V_$DATABASE_INCARNATION TO USR1;
GRANT SELECT ON SYS.V_$LOG TO USR1;
GRANT SELECT ON SYS.V_$LOGFILE TO USR1;
GRANT SELECT ON SYS.V_$PARAMETER TO USR1;
GRANT SELECT ON SYS.V_$STANDBY_LOG TO USR1;
GRANT SELECT ON SYS.V_$TRANSPORTABLE_PLATFORM TO USR1;
GRANT SELECT, FLASHBACK ON XDB.XDB$TTSET TO USR1;
DECLARE
CURSOR C1 IS SELECT TOKSUF FROM XDB.XDB$TTSET;
CMD VARCHAR2(2000);
BEGIN
FOR C IN C1 LOOP
CMD := 'GRANT SELECT, FLASHBACK ON XDB.X$NM' || C.TOKSUF || ' TO USR1';
EXECUTE IMMEDIATE CMD;
CMD := 'GRANT SELECT, FLASHBACK ON XDB.X$QN' || C.TOKSUF || ' TO USR1';
EXECUTE IMMEDIATE CMD;
CMD := 'GRANT SELECT, FLASHBACK ON XDB.X$PT' || C.TOKSUF || ' TO USR1';
EXECUTE IMMEDIATE CMD;
END LOOP;
END;
2.4 配置 Oracle 数据连接
Oracle数据连接中,配置独立日志解析。如下图所示:

| 设置项 | 说明 |
|---|---|
| 日志读取方式 | Oracle 归档日志和在线日志可能通过普通文件系统获取,也可能会存储在 Oracle ASM 中 基于日志存储的不同方式,需要配置不同属性让独立日志解析能够获取到文件 可选择:远程文件挂载、ASM |
| 目录映射规则 | 日志读取方式为远程文件挂载时,才需设置该设置项: 因为归档日志挂载到解析器的服务器时,日志的访问路径大概率是不一样的 比如 Oracle 归档日志是"/opt/olr/recovery_area/o1_mf_1_123456_abcde.arc” 实际挂载到解析器目录后,实际路径变成了"/oracleA/recovery_area/o1_mf_1_123456_abcde.arc” 所以需要配置一个映射规则,将获取到归档日志地址转换成解析器实际能访问的地址 支持设置多组映射规则 当用户没有配置映射规则时,解析器默认使用原目录地址找归档日志,当日志找不到后,采集任务会报错 |
| ASM配置 | 日志读取方式为 ASM 时,才需设置下图设置项:
|
2.5 开发任务
2.5.1 实时管道任务
实时管道任务中,读取方式选择「独立日志解析」。如下图所示:

2.5.2 实时任务
实时任务中,读取方式选择「独立日志解析」。如下图所示:

