ITPub博客

首页 > 数据库 > Oracle > impdp报错违反唯一约束排查处理

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

原创 Oracle 作者:梦夕林1992 时间:2026-02-02 18:05:42 0 删除 编辑

在做数据导出导入进行迁移时,导入日志报错违反唯一约束

导出数据库查询,确认是否存在重复数据

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


  2. 根据该索引涉及到的列查看是否存在重复数据

    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只有一条导致的关系,可能索引重建后就能解决该问题。
这边为减少影响,决定先删除重复记录后,做重新导出。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29956245/viewspace-3109734/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-10-13

  • 博文量
    90
  • 访问量
    85391