类型 | 版本 |
Oracle | 11,12,19 |
sqlplus sys/password@host:port/SID AS SYSDBA;CREATE USER flinkuser IDENTIFIED BY flinkpw DEFAULT TABLESPACE LOGMINER_TBS QUOTA UNLIMITED ON LOGMINER_TBS;-- 允许用户连接到数据库GRANT CREATE SESSION TO flinkuser;-- 用于支持需要使用了cdb / pdb的场景,授予用户访问pdb / cdb的权限GRANT SET CONTAINER TO flinkuser;-- 授予用户对数据库中所有表的SELECT权限,用于读取数据GRANT SELECT ANY TABLE TO flinkuser;--SELECT_CATALOG_ROLE预定义的数据库角色,它提供了查看数据库系统表的权限;此外,增量阶段的时候,logminer session也依赖于该权限来查询表的结构。GRANT SELECT_CATALOG_ROLE TO flinkuser;--GRANT ANALYZE ANY是一个授权语句,用于授予用户分析任何用户拥有的所有表、索引、分区和表函数的权限;当表没有主键时,依赖该权限拿到表的惟一索引,并使用惟一索引替代主键。GRANT ANALYZE ANY TO flinkuser;
sqlplus sys/password@host:port/SID AS SYSDBA
alter system set db_recovery_file_dest_size = 10G;alter system set db_recovery_file_dest = '/opt/oracle/oradata/recovery_area' scope=spfile;shutdown immediate;startup mount;alter database archivelog;alter database open;Notes:开启日志归档需要数据库重启,并且需要占用磁盘空间
-- Should now "Database log mode: Archive Mode"archive log list;
-- Enable supplemental logging for a specific table:ALTER TABLE inventory.customers ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
-- Enable supplemental logging for databaseALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
CREATE TABLESPACE logminer_tbs DATAFILE '/opt/oracle/oradata/SID/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE 2048M;
--特殊的权限授予语句,它表示授予用户对V$DATABASE视图的SELECT权限,主要用于检查数据库的归档日志是否开启(LOG_MODE),以及获取当前数据库的SCN位点。GRANT SELECT ON V_$DATABASE to flinkuser;--EXECUTE_CATALOG_ROLE是一个预定义的角色,它主要提供了允许logminer将字典写入binlog的能力,通过这种方式将表结构的变化也记录到逻辑日志中。GRANT EXECUTE_CATALOG_ROLE TO flinkuser;--允许用户通过LOGMINING组件来读取数据GRANT LOGMINING TO flinkuser;--EXECUTE ON DBMS_LOGMNR 权限是用于授予用户能够执行DBMS_LOGMNR包中的程序的权限。DBMS_LOGMNR包用于在数据库日志文件中分析和提取变更数据。GRANT EXECUTE ON DBMS_LOGMNR TO flinkuser;--GRANT EXECUTE ON DBMS_LOGMNR_D 是一个授权语句,它授予用户对DBMS_LOGMNR_D包的执行权限。DBMS_LOGMNR_D是Oracle提供的包,用于在数据库级别上分析在线和归档的重做日志文件GRANT EXECUTE ON DBMS_LOGMNR_D TO flinkuser;--Logminer的数据查询接口是由一组系统提供的视图组成的,需要从logminer中读取数据的话,需要给访问以下视图的权限。GRANT SELECT ON V_$LOG TO flinkuser;GRANT SELECT ON V_$LOG_HISTORY TO flinkuser;GRANT SELECT ON V_$LOGMNR_LOGS TO flinkuser;GRANT SELECT ON V_$LOGMNR_CONTENTS TO flinkuser;GRANT SELECT ON V_$LOGMNR_PARAMETERS TO flinkuser;GRANT SELECT ON V_$LOGFILE TO flinkuser;GRANT SELECT ON V_$ARCHIVED_LOG TO flinkuser;GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO flinkuser;exit;
参数 | 说明 |
数据来源 | 选择需要同步的 Oracle 数据源 |
来源表 | 根据业务需求,选择“所有库表”、“指定表”、“指定库” |
| 所有库表:监控数据源下所有库。任务运行期间新增库、表默认将同步至目标端 指定表:仅同步指定表 指定库:监控指定库和 schema,同步 schema 下所有或符合规则的表 |
| |
| |
读取模式 | 全量 + 增量:数据同步分为全量和增量同步阶段,全量阶段完成后任务进入增量阶段。全量阶段将同步库内历史数据,增量阶段从任务启动后 binlog cdc 的位点开始同步。 增量:仅从任务启动后的 binlog cdc位点开始同步数据。 |
一致性语义 | 仅代表读取端的一致性语义。支持 At-least-once 和 Exactly-once。 At-least-once:数据可能存在重复读取,依赖目标端支持去重来保证数据的一致性。适用于全量阶段数据量大且使用非数值型主键、对同步性能要求高的场景。 Exactly-once:数据严格只读取一次,性能上有一定损失,不支持无主键且无唯一索引列的表。适用于源表有数值型主键或唯一索引列的通用场景。 当前版本两种模式状态不兼容,任务提交后如果修改模式,不支持带状态重启。 |
高级设置(可选) | 可根据业务需求配置参数 |
ALTER TABLE SCHEMA_NAME.TBALE_NAME ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
参数 | 描述 |
数据源 | 选择需要同步的表所在数据源。 |
库 | 支持选择、或者手动输入需读取的库名称。 默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
Schema | 支持选择、或者手动输入需读取该数据源下可用的 Schema。 |
表 | 支持选择、或者手动输入需读取的表名称。 |
读取模式 | 全量 + 增量:数据同步分为全量和增量同步阶段,全量阶段完成后任务进入增量阶段。全量阶段将同步库内历史数据,增量阶段从任务启动后 binlog cdc 的位点开始同步。 仅增量:仅从任务启动后的 binlog cdc 位点开始同步数据。 |
一致性语义 | 仅代表读取端的一致性语义。支持 At-least-once 和 Exactly-once。 At-least-once:数据可能存在重复读取,依赖目标端支持去重来保证数据的一致性。适用于全量阶段数据量大且使用非数值型主键、对同步性能要求高的场景。 Exactly-once:数据严格只读取一次,性能上有一定损失,不支持无主键且无唯一索引列的表。适用于源表有数值型主键或唯一索引列的通用场景。 当前版本两种模式状态不兼容,任务提交后如果修改模式,不支持带状态重启。 |
高级设置 (选填) | 可根据业务需求配置参数。 |
参数 | 说明 |
数据源 | 需要写入的 Oracle 数据源。 |
库 | 支持选择、或者手动输入需写入的库名称 默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
Schema | 支持选择、或者手动输入需要写入的 Oracle 数据模式。 |
表 | 支持选择、或者手动输入需写入的表名称。 当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
主键 | 选择一个字段作为写入表的主键。 |
高级设置(选填) | 可根据业务需求配置参数。 |
参数 | 说明 |
数据源 | 选择当前项目中可用的 Oracle 数据源。 |
库/表 | 选择该数据源中对应的库表。 |
主键 | 选择一个字段作为数据表主键。 |
高级设置(可选) | 可根据业务需求配置参数。 |
Oracle 类型 | 内部类型 |
NUMBER(p, s <= 0), p - s < 3 | TINYINT |
NUMBER(p, s <= 0), p - s < 5 | SMALLINT |
NUMBER(p, s <= 0), p - s < 10 | INT |
NUMBER(p, s <= 0), p - s < 19 | BIGINT |
NUMBER(p, s <= 0), 19 <= p - s <= 38 | DECIMAL(p - s, 0) |
NUMBER(p, s > 0) | DECIMAL(p, s) |
NUMBER(p, s <= 0), p - s > 38 | STRING |
FLOAT,BINARY_FLOAT | FLOAT |
DOUBLE PRECISION,BINARY_DOUBLE | DOUBLE |
NUMBER(1) | BOOLEAN |
DATE,TIMESTAMP [(p)] | TIMESTAMP [(p)] [WITHOUT TIMEZONE] |
TIMESTAMP [(p)] WITH TIME ZONE | TIMESTAMP [(p)] WITH TIME ZONE |
TIMESTAMP [(p)] WITH LOCAL TIME ZONE | TIMESTAMP_LTZ [(p)] |
CHAR(n),NCHAR(n),NVARCHAR2(n),VARCHAR(n),VARCHAR2(n),CLOB,NCLOB,XML 类型 | STRING |
BLOB,ROWID | BYTES |
INTERVAL DAY TO SECOND,INTERVAL YEAR TO MONTH | BIGINT |
内部类型 | Oracle 类型 |
FLOAT | BINARY_FLOAT |
DOUBLE | BINARY_DOUBLE |
DECIMAL(p, s) | SMALLINT,FLOAT(s),DOUBLE PRECISION,REAL,NUMBER(p, s) |
DATE | DATE |
DECIMAL(20, 0) | - |
FLOAT | REAL,FLOAT4 |
DOUBLE | FLOAT8,DOUBLE PRECISION |
DECIMAL(p, s) | NUMERIC(p, s),DECIMAL(p, s) |
BOOLEAN | BOOLEAN |
DATE | DATE |
TIMESTAMP [(p)][WITHOUT TIMEZONE] | TIMESTAMP [(p)]WITHOUT TIMEZONE |
STRING | CHAR(n),VARCHAR(n),CLOB(n) |
BYTES | RAW(s),BLOB |
ARRAY | - |
本页内容是否解决了您的问题?