这个专题讲一些日常运维的异常处理

今天讲一个impdp过程中的ORA-02291错误

1. 现象

今天在做impdp导入,导入结束会发现其中一个表的插入报错如下

1_2.png

分别有ORA-31693,ORA-29913,ORA-02291三个错误

2. 原因查找

2.1 查看错误代码

首先我们分别查看该报错的内容

2.png

通过ORA-02291错误内容我们可以看到是由子该表外键的值和主表的不栏位不匹配

建议的动作为删除子表外键或者主表新增相关的值

问题是为什么主表会找不到匹配的呢?

2.2 查看导入日志

我们查看导入日志后有所发现,原来主表的数据在子表后面插入,这才导致上面的错误

3. 解决方法

解决就很简单了,由于整体的导入是成功的,这时主表已经有数据了,所以我们只需将该子表单独导入一下就可以

impdp参数中使用tables=schema.child_table 即可