将Oracle迁移到TeleDB 本页介绍天翼云TeleDB数据库如何将Oracle迁移至TeleDB。 支持的数据库版本 源数据库 目标数据库 12c, 19c, 21c TeleDB 支持的迁移对象及SQL 迁移对象 结构迁移支持表结构迁移(包含索引、外键、约束)、视图、同义词、序列、触发器、函数、存储过程、类型、物化视图、程序包。 增量数据迁移支持同步的SQL操作 DML: INSERT、UPDATE、DELETE DDL: 增量同步暂不支持DDL同步。 支持的迁移类型 Oracle TeleDBX 数值类型 数值类型 NUMBER(p,s) s!0 numeric/decimal NUMBER(p,s) s0,1 ”、 “<”、 “”、 “”、 “”、 “,”、 “? ”、 “! ”、 “"”和 “'”。 如果待迁移对象中含有分区表,结构迁移阶段分区表信息将会被丢弃。 不支持bfile,xml、sdogeometry、urowid、interval(精度大于6位)和自定义类型。 不支持使用Oracle 物理备库进行迁移/同步。 RAC模式的Oracle不支持使用scanIP,只能连接其中一个节点进行同步。 对于TIMESTAMP WITH TIME ZONE类型,根据目标库时区做转换后不得大于“99991231 23:59:59.999999”。 如果表中只有LOB字段,可能出现数据不一致性情况。 如果Oracle中使用LOB类型各自的empty函数写入数据时,通过JDBC查询出来的值是空字符串,写入到目标库后是空字符串还是NULL取决于目标库对空字符串值的处理。 不支持默认值含有表达式的函数的表的同步。 源库支持todate和sysguid函数做默认值。将其他函数作为default值时,需要目标库也有相同功能的函数。对于目标库不存在对应函数的情况,可能会出现以下结果: 默认值函数可能会被置空。 创建表失败,导致对象对比不一致或者任务失败。 暂不支持DDL同步。 同步过程中,不允许删除连接源和目标数据库的用户的用户名、密码、权限,或修改目标数据库的端口号。 大事务有可能同步失败。 包含大字段的行有可能同步失败。 确保Oracle的归档日志空间大小足够。 源库为Oracle 12c及以上时,增量阶段要保证所有存在的容器数据库均处于打开状态。 源库为Oracle 12c及以上时,不支持同步application root和application PDB. 如果有增量迁移,增量阶段不能使用sys/system等oracle内部的系统用户作为DTS用户,也不能使用PDB用户,必须使用公共容器中创建的用户。 如果有增量迁移,则只支持库名和表名映射,不支持列名映射。 若要做增量同步,且同步对象包含外键、触发器或事件触发器,则目标数据库的sessionreplicationrole参数必须设置为replica,同步结束后,此参数需改为origin。 结构迁移无主键表时,默认迁移到目标端的分片键为当前表结构的第一个字段。 无主键表在全量迁移和增量迁移阶段,如果当前源表的第一个字段(也就是作为分片键的字段)存在null值时,将会迁移失败,原因是TeleDBX分片键的键值不能为NULL。 准备工作 1. 创建源库DTS用户 oracle 12c及以上且开启了CDB模式 如果仅作测试用可直接赋予最高权限,用SYS用户登录Oracle,如下创建DTS迁移用户: 要求该用户必须是CDB下的用户,且授权的权限必须在所有容器内都具备 CREATE USER C