ORA-02298问题处理
参考:http://blog.163.com/yvtong@126/blog/static/8753524720132223343722/
ORA-39083: Object type REF_CONSTRAINT:"TEST"."FK_AN_ID" failed to create with error:
ORA-02298: cannot validate (TEST.FK_AN_ID) - parent keys not found
Failing sql is:
ALTER TABLE "TEST"."ROWER_INFO" ADD CONSTRAINT "FK_AN_ID" FOREIGN KEY ("LOAN_ID") REFERENCES "TEST"."AN_REQUEST" ("ID") ENABLE
原因:
表ROWER_INFO里,有外键连接到另一个表AN_REQUEST的主键, 在表ROWER_INFO的外键列插入的值 在表AN_REQUEST的主键列找不到就不能插入。这往往由于表在不同的时间点导出,主表中有新的业务数据。
而此次利用数据泵导出TEST用户下的所有对象,导入到另一用户下,报错。原因是子表ROWER_INFO多了一行数据,造成创建外键约束失败
SQL> select * from "TEST"."ROWER_INFO" a where not exists ( select 1 from "TEST"."AN_REQUEST" b where b.ID=a.LOAN_ID);
125509 128043 D 0 Scott F 27-10月-78
SQL> delete from "TEST"."ROWER_INFO" a where not exists ( select 1 from "TEST"."AN_REQUEST" b where b.ID=a.LOAN_ID);
1 row deleted.
SQL> ALTER TABLE "TEST"."ROWER_INFO" ADD CONSTRAINT "FK_AN_ID" FOREIGN KEY ("LOAN_ID") REFERENCES "TEST"."AN_REQUEST" ("ID") ENABLE;
Table altered.
获取删除多余数据的SQL:
SELECT ' delete from '
||a.table_name
||' a where not exists ( select 1 from '
||c_pk.table_name
|| ' b where b.'
|| b.column_name
||'=a.'
||a.column_name
||');'
FROM user_cons_columns a
JOIN user_constraints c
ON a.constraint_name = c.constraint_name
JOIN user_constraints c_pk
ON c.r_constraint_name = c_pk.constraint_name
JOIN user_cons_columns b
ON c_pk.constraint_name = b.constraint_name
WHERE c.constraint_type = 'R'
AND a.table_name = '&Table_Name'
AND a.constraint_name ='&FK_NAME';
最新文章
- [WP8.1开发]RSA 使用BouncyCastle 公钥解密
- js键盘事件和焦点事件
- Sublime Text 解决中文乱码
- java的poi技术读取Excel[2003-2007,2010]
- 最新discuz模版制作7堂课让你精通discuz模版制作
- DomFlags - 给 DOM 添加书签,方便调试
- 基础学习day11--多线程一线程的创建,运行,同步和锁
- Vnc viewer与windows之间的复制粘贴
- C 语言学习 之搭建环境和熟悉命令
- 获取一个Jpanel的父容器有多难
- 压缩感知中的数学知识:稀疏、范数、符号arg min
- Alpha冲刺Day9
- 饮冰三年-人工智能-Python-19 Python网络编程
- OpenStack-Neutron-VPNaaS-代码
- redis scan删除key的方法封装
- tensorflow 迭代周期长,每个epoch时间变慢
- Day 4-10 logging模块
- 【实践练习一】Git以及Github的使用
- openvpn 批量生成用户脚本
- 错误“AxImp.exe”已退出,代码为 -1163019603【转载及个人看法】