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

原文链接: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了。

================================================================

关于ANALYZE的用法参考http://blog.sina.com.cn/s/blog_682841ba0101bncp.html

posted @   小龙在线  阅读(47472)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示