一个项目: 需要将数据库从老服务器迁移到新服务器, 用 exp 导出的数据
imp 导入 exp 导出备份时遇到下面错误提示:
- IMP-00017: following statement failed with ORACLE error 2298:
- "ALTER TABLE"RESERVATION"ENABLE CONSTRAINT"RESERVATION_FK31252591893468""
- IMP-00003: ORACLE error 2298 encountered
ORA-02298: cannot validate (RESERVATION.RESERVATION_FK31252591893468) - parent keys not found
Import terminated successfully with warnings.
产生错误原因以及解决办法:
出现上面的原因有可能是在导出的时间某个表已经被导出了, 可是他外键关联系有数据变化了, 导致不一致, 所以报错. exp 不能保证事务的完整性. 如果你导出主表. 随后有人在主表增加记录, 然后在子表增加记录, 提交.
不能鉴定上面说的是否正确, 应该也会发生, 不过查了很多资料后又发现, 应该是 exp 导出时少了一个参数. 所以解决办法是在导出备份的脚本中加入这个参数 consistent=y 默认为 no . 为的是保持一致的作用.
$ exp rh/124 file=/home/oracle/rh201804260920.dmp owner=rh grants=no consistent=y
GRANTS 参数表示导出时否要导出数据库对象上的授权 (no 不导出)
在导入就不会有报错了:
$ imp rh/jkj file=/home/oracle/rh201804260920.dmp ignore=y full=y
来源: http://www.bubuko.com/infodetail-2575448.html