将Oracle同步到Kafka 类型名称 使用限制 (DRS自动检查) 数据库权限设置 源数据库端:− 12c及以上版本CDB数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,针对单表的SELECT权限(GRANT SELECT <userName.tbName> 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 <userName.tbName> 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 <userName.tbName> 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操作。 任务再编辑增加新表时,请确保新增的表的事务都已提交,否则未提交的事务可能无法同步到目标库。建议在业务低峰期做增加表的操作。