ORA-39083,ORA-02298错误_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2638 | 回复: 0   主题: ORA-39083,ORA-02298错误        下一篇 
nini
注册用户
等级:新兵
经验:56
发帖:63
精华:0
注册:2011-12-16
状态:离线
发送短消息息给nini 加好友    发送短消息息给nini 发消息
发表于: IP:您无权察看 2015-6-30 11:06:12 | [全部帖] [楼主帖] 楼主

问题:
在使用impdp工具导从生产环境导入到测试环境数据时,导入过程最后出现下面的错误:

impdp system/******** directory=DIR_1 network_link=link_5237 schemas=NTICKET logfile=imp237_120703.log


ORA-39083: 对象类型 REF_CONSTRAINT 创建失败, 出现错误:
ORA-02298: 无法验证 (NTICKET.TK_ITINERARY_PRN_FK2) - 未找到父项关键字
失败的 sql 为:

ALTER TABLE "NTICKET"."TK_ITINERARY_PRN_DT" ADD CONSTRAINT "TK_ITINERARY_PRN_FK2" FOREIGN KEY ("TKT_ID") REFERENCES "NTICKET"."TK_ORDER_TICKET_DT" ("ID") ENABLE


分析原因:
从错误信息看是因为违反了外键约束所至。

--检查数据
SQL> Select TKT_ID From NTICKET.TK_ITINERARY_PRN_DT
2  Minus
3  Select ID From NTICKET.TK_ORDER_TICKET_DT;
TKT_ID
----------------------------------------
8a81858c384b801701384d3b4af90a3b
8a81858c384b801701384d3b4afb0a3d
8a81858c384b801701384d3bf1550a46


发现主表中有外键表中不存在的外键值。

因为数据从生产环境导过来的,导入时间用了近1小时,而数据表的导入顺序是按表的由大到小导入的。在这过程中如果先导入外键表数据,再经过一段时间后,再导入主表数据。如果这段时间经过的时间比较长,就会有可能出现主表和外键表数据不一致的情况。就像前面所说的主表中有外键表中不存在的外键值。

解决办法:
1.如果允许,在导入前先把生产环境用户进行锁定。

Alter User nticket Account Lock;


2.或是在导入时加上FLASHBACK_SCN参数,保证数据导入的一致性。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论