您的位置:首页 > 产品设计 > UI/UE

ORA-00001: unique constraint (...) violated并不一定是数据冲突

2013-12-19 17:33 736 查看
2013-01-14 10:43:46|  分类: ORACLE |  标签:oracle  ora-00001  表和索引结构损坏  |字号 订阅

原文链接:http://blog.163.com/jet_it_life/blog/static/205097083201301410303931/

收到一位测试人员RAISE的JIRA,说在某张表上INSERT不了数据,报ORA-00001: unique constraint violated的错误,但是仔细核查了一下,并没有发现有重复的数据,让帮忙检查一下是什么问题。

仅仅看错误,应该是数据冲突引起的。但有一点比较奇怪的是错误中提示的违反的约束是一个索引,而这个索引并不是唯一索引!将这个索引DROP后,ORA-00001依然存在,但是这次换了一个索引!而这个索引依然不是唯一索引!再将这个索引DROP后再进行INSERT,问题的本质就暴露出来了:

ERROR at line 1: 

ORA-00600: internal error code, arguments: [6002], [0], [227], [2], [0], [], [], [] 

600的错误,可能是表或表上的索引数据有坏块或者表或表的索引结构存在问题,尝试分析表及索引的结构:

SQL> ANALYZE TABLE #.#  VALIDATE STRUCTURE CASCADE; 

ANALYZE TABLE #.# VALIDATE STRUCTURE CASCADE 



ERROR at line 1: 

ORA-01499: table/index cross reference failure - see trace file 

已经基本可以确定问题在表结构及其索引,尝试对表及相关索引进行重建:

SQL> alter TABLE #.# move; 

Table altered. 

SQL> alter index #.# REBUILD;

Index altered. 

...

重建完表和索引后,终于正常INSERT了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jpa java oracle