AWS DMS RDS Oracle 12至RDS Oracle 12全量迁移任务失败求助
解决RDS Oracle 12c全量迁移时的ORA-02264约束名冲突问题
从你提供的错误日志来看,核心问题是迁移任务尝试创建主键约束时,指定的约束名SYS_C0011324已经被目标库中的其他对象占用,进而引发了后续的任务失败、连接断开等连锁问题。下面是具体的排查和解决步骤:
1. 确认冲突约束的具体信息
首先登录目标RDS Oracle实例,执行以下SQL查询,找到这个重复约束所属的表:
SELECT owner, table_name, constraint_type FROM dba_constraints WHERE constraint_name = 'SYS_C0011324';
这条语句会返回该约束的所属用户、表名以及约束类型(主键、唯一约束等)。
2. 根据不同场景处理冲突
场景一:冲突约束属于目标库的1234.MST表
这种情况大概率是之前迁移失败后,目标库残留了未清理的表结构。你可以先删除目标表(连带所有关联约束):
DROP TABLE "1234"."MST" CASCADE CONSTRAINTS;
删除完成后,重新启动全量迁移任务,让迁移工具重新创建表和主键约束。
场景二:冲突约束属于其他表
这说明迁移工具自动生成的系统约束名和目标库现有对象冲突。你需要调整迁移任务的配置:
- 找到迁移任务中关于主键约束的设置,开启自定义约束名选项,为
MST表指定一个不重复的主键约束名(比如PK_MST_SEC_TARIFF)。 - 如果工具不支持自定义约束名,也可以先禁用迁移任务中的“自动创建主键”功能,待全量数据迁移完成后,手动在目标库执行主键创建语句(使用自定义的约束名):
ALTER TABLE "1234"."MST" ADD CONSTRAINT "PK_MST_SEC_TARIFF" PRIMARY KEY ( "SEC", "TARIFF" );
3. 验证后续连接问题
解决约束名冲突后,重新启动迁移任务。如果仍然出现“无法连接到数据库”的错误,需要排查以下几点:
- 确认源库和目标库的RDS安全组配置,确保迁移工具所在的网络能访问两个实例的Oracle端口(默认1521)。
- 检查迁移任务使用的数据库用户权限:需要拥有
CREATE TABLE、ALTER TABLE、INSERT等必要权限。 - 查看RDS实例的日志,确认是否有数据库层面的连接拒绝或资源不足问题。
内容的提问来源于stack exchange,提问作者Abhinay




