impdp报错违反唯一约束排查处理

来源:这里教程网 时间:2026-03-03 23:21:57 作者:

在做数据导出导入进行迁移时,导入日志报错违反唯一约束 导出数据库查询,确认是否存在重复数据

    确认该唯一索引涉及到的列

    根据该索引涉及到的列查看是否存在重复数据select * from (select t1.*,count(1) over(partition by t1.SHIP_NO, tl.BILL_NBR) rn from test.test1 t1) t1where t1.rn > 1;

        根据查询结果,发现源库的确存在重复数据,部分数据有一样的两条(结果不做展示)

解决办法,导出数据库先删除这些重复数据只保留一条,然后再进行导出导入,或者在导入数据之前,先创建表结构,并禁用唯一约束,等数据导入后,在以不验证数据的方式启用唯一索引,或者是删除重复行后再启用唯一索引。

将解决方案告知客户后,客户选择在生产库删除重复数据后重导,但是在删除的时候发现奇怪问题。 业务方想去产出重复数据,发现:根据重复列的sql查询的结果,将唯一索引涉及到的列代入到where条件中查询,只有一条数据,如下: 尝试用其他方式再次查询确认是否存在重复行,如下: 发现找不到重复数据,怀疑是索引用rowid回表查询有问题,为进一步确认,强制查询走全表

走全表后,发现重复记录查询到了,可以明确是因为索引记录值rowid只有一条导致的关系,可能索引重建后就能解决该问题。
这边为减少影响,决定先删除重复记录后,做重新导出。

相关推荐

热文推荐