ITPub博客

首页 > 数据库 > Oracle > ORA-00001: unique constraint (...) violated并不一定是数据冲突

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

原创 Oracle 作者:Jet_Zhang 时间:2015-05-12 22:53:34 0 删除 编辑
收到一位测试人员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了。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13885898/viewspace-1651538/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
中国南方Oracle用户组(SOUG)联合创始人,Oracle ACE,曾服务于国外某大型银行,曾担任国内某中型保险公司的技术经理,现为易景科技合伙人、首席架构师、CTO。主要研究方向数据库内核。

注册时间:2024-06-26

  • 博文量
    124
  • 访问量
    542488