sitemap

RSS地图

收藏本站

设为首页

Oracle研究中心

当前位置:Oracle研究中心 > 故障案例 >

【案例】Oracle报错ORA-39083 ORA-02298产生的原因和MOS官方解决办法

时间:2016-10-18 21:36   来源:Oracle研究中心   作者:网络   点击:

天萃荷净 运维DBA反映在做10G使用impdp的方式跨平台迁移到11GR2的时候遇到一个下面的报错ORA-39083 ORA-02298,结合MOS分析产生原因为迁移的时候没有停源库的业务。

1.Oracle impdp的方式迁移时报错


ORA-39083: Object type REF_CONSTRAINT failed to create with error:
ORA-02298: Oracleоcannot validate (CTG.FK_CTG_LOGS_INT_201306) - parent keys not found

Failing sql is:

ALTER TABLE "CTG"."CTG_LOGS_201306"
ADD CONSTRAINT
"FK_CTG_LOGS_INT_201306"
FOREIGN KEY ("CONTRACT_INTERACTION_ID")
REFERENCES "CTG"."INTERACTION_201306" ("CONTRACT_INTERACTION_ID")
ENABLE

报错的原因很简单,在“CTG”.“CTG_LOGS_201306″中的列CONTRACT_INTERACTION_ID中有部分值在父表“CTG”.“INTERACTION_201306” 的列“CONTRACT_INTERACTION_ID”不存在。因为我们在迁移的时候没有停源库的业务,所以会导致这样的现象存在,可以通过下面的SQL来查询在父表中不存在的值

SQL> select CONTRACT_INTERACTION_ID from ctg.ctg_logs_201306
  2  minus
  3  select CONTRACT_INTERACTION_ID from "CTG"."INTERACTION_201306";

CONTRACT_INTERACTION_ID
----------------------------------------
1000010000201306034157405137
1000010000201306034157405141
1000010000201306034157405212
1000010000201306034157405234
1000010000201306034157405338
1000010000201306034157405366
1000010000201306034157406629
1000010000201306034157406640
1000010000201306034157406912
1000010000201306034157406939
1000010000201306034157407079

2.Oracle报错解决的方法


1,在expdp过程中我们可以加上flashback scn或者flashback time的参数,两确保事务的一致性,但是会带来UNDO表空间的增加,也可能导致01555的报错。

2,删除相关的行记录。

3,增加约束的时候,默认会去检验已经存在的值,通过增加NOVALIDATE值,可避免去检验已经存在的行记录。

本文固定链接: http://www.htz.pw/2013/06/08/ora-02298-cannot-validate-ctg-fk_ctg_logs_int_201306-parent-keys-not-found.html | 认真就输

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【案例】Oracle报错ORA-39083 ORA-02298产生的原因和MOS官方解决办法

本文由大师惜分飞原创分享,网址:http://www.oracleplus.net/arch/998.html

Oracle研究中心

关键词:

Oracle报错ORA-39083 ORA-02298的解决办法

Oracle imp迁移数据库报错ORA-39083 ORA-02298