将Oracle同步到Kafka 本节主要介绍将Oracle同步到Kafka 支持的源和目标数据库 表 支持的数据库 源数据库 目标数据库 :: 本地自建Oracle数据库 ECS自建Oracle数据库 Kafka 前提条件 已登录数据复制服务控制台。 满足实时同步支持的数据库类型和版本,详情请参见实时同步。 使用建议 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,避免同步对业务造成性能影响。 使用须知 在创建同步任务前,请务必阅读以下使用须知。 表 环境要求 类型名称 使用限制 (DRS自动检查) :: 数据库权限设置 源数据库端:− 12c及以上版本CDB数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,针对单表的SELECT权限(GRANT SELECT to drsUser;),EXECUTECATALOGROLE,SELECT ANY TRANSACTION,LOGMINING,SELECT ON SYS.COL,SELECT ON SYS.OBJ,SET CONTAINER(GRANT SET CONTAINER TOCONTAINERALL;)权限。 − 12c及以上版本PDB数据库同步时,除了需要具有CREATE SESSION,SELECT ANY DICTIONARY,针对单表的SELECT权限(GRANT SELECT to drsUser;),EXECUTECATALOGROLE,SELECT ANY TRANSACTION,LOGMINING,SELECT ON SYS.COL,SELECT ON SYS.OBJ权限,还需要具有CDB的CREATE SESSION,SELECT ANY DICTIONARYCREATE SESSION, SELECT ANY DICTIONARY,EXECUTECATALOGROLE,SELECT ANY TRANSACTION,LOGMINING,SET CONTAINER(GRANT SET CONTAINER TOCONTAINERALL;)权限。 − 11g及以下版本数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,针对单表的SELECT权限(GRANT SELECT to drsUser;),EXECUTECATALOGROLE,SELECT ANY TRANSACTION,SELECT ON SYS.COL,SELECT ON SYS.OBJ。 同步对象约束 支持表的同步,其他数据库对象暂不支持。 支持VARCHAR、VARCHAR2、NVARCHAR2、NUMBER、FLOAT、LONG、DATE、BINARYFLOAT、BINARYDOUBLE、CHAR、NCHAR、ROWID、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE类型。 不支持接入的列类型:GEOMETRY以及自定义类型。 不支持同步但以过滤方式接入的列类型:BLOB、 CLOB、NCLOB、INTERVALYEARTOMONTH、INTERVALDAYTOSECOND、UROWID、BFILE、XML、LONG、long raw。 支持同步但默认过滤的列类型:raw(同步数据为原始二进制数据)。 不支持默认值含有表达式的函数的表的同步。 源数据库要求 库名、表名不支持的字符有:非ASCII字符、“. ”、 “>”、 “<”、 “”、 “”、 “ 目标数据库要求 目标库为社区Kafka。 操作须知 如有中文、日文等特殊字符,业务连接Oracle数据库使用的编码需和Oracle数据库服务端编码一致,否则目标库会出现乱码。 Oracle中实时同步到kafka后的字符集为UTF8。 对于Oracle RAC集群,建议使用SCAN IP+ SERVICENAMES方式创建任务,SCAN IP具有更强的容错性,更好的负载能力,更快的同步体验。 源库为Oracle RAC环境时,如果需要使用SCAN IP,需要保证SCAN IP与源库的所有VIP互通,否则无法通过连接检查。若不使用SCAN IP,可以使用某一节点的VIP,其他节点异常不影响同步。 日志中未出现的列在传递的消息中不会出现,表示该列未更新。 同步过程中,不允许删除连接源和目标数据库的用户的用户名、密码、权限,或修改目标数据库的端口号。 选择表级对象同步时,增量同步过程中不建议对表进行重命名操作。 由于kafka的机制,Topic名字格式不能以"" , "."开头,或以".internal","internal" 结尾,这些命名格式的Topic会被当做为kafka的内部Topic,业务无法使用。 支持表级DDL操作。 任务再编辑增加新表时,请确保新增的表的事务都已提交,否则未提交的事务可能无法同步到目标库。建议在业务低峰期做增加表的操作。