问题描述
由于开发要求,需要添加一张oracle表同步到rds中,阿里云dts没法修改配置,只能删除重建。但是新建dts后,结构迁移和全量迁移正常,增量迁移却始终无法成功。如下图:
解决过程
通过联系客服,将整体解决过程,以及尝试操作归结如下:
1. dts实例规格太小,更换更大规格实例
尝试解决:通过更换更大规格dts实例,发现问题依旧。排除此原因。
2. 本地oracle的redolog设置过小,导致dts读取redolog出错
尝试解决:将原有的50M每个的redolog加大到5G,重新新建dts问题依旧。排除此原因。
3. 迁移的表中存在特殊字符,导致迁移失败
尝试解决:通过只同步没有特殊字符的表测试,发现问题依旧,故排除此原因。
4. 配置oracle用户名格式错误
尝试解决:最终发现造成此故障的原因就是oracle用户名格式问题,原有的dts使用sys as sysdba用户,在以往的dts中,此账户是可以正常使用的,可能是后端规范了命名规则导致了无法实现增量同步。下面详解下解决流程。
第一步:在oracle上新建一个具有dba权限的账号;
第二步:新建dts使用新创建的账号连接;
第三步:验证dts是否正常。
小结
虽然造成此次问题的最终原因好像很简单,但是解决的过程并不轻松,因为使用阿里云产品,对于运维人员来说,只能看到表面的操作层,并不能完全了解中间的逻辑,以及后端开发的一些限制。所以出问题后能做的很有限,只能等待阿里售后的回复,这中间充满了不确定性。提醒了我们运维人时刻要准备好b计划,甚至是c计划、d计划。这里记录下,希望能帮助到需要的人。