由索引引发的奇怪的无效条件问题
2006-06-01 09:34
323 查看
问题背景:昨天下班时,跟踪程序,突然发现一个奇怪的问题,相同的数据使用like能查到,而使用=就查询不到。比如
select * from emp where empno = 123; 查询不到数据,但是通过名字查询数据,该123数据的确存在。查询条件换成
select * from emp where empno like 123; 后,可以查询到数据,原以为是数据的问题,拷贝出来后,发现数据并没有问题,没有奇怪的字符存在。随后在这条记录上执行了多种操作,都比较奇怪,最后更新empno字段的时候,突然发现更新不上去,数据库报错,对象ID XXX 出错。这下终于找到了问题所在,赶紧查询user_object.object_id,发现这个对象是一个索引,这个索引正好包含empno字段。重建索引后,问题消失。
问题分析:因为中午突然停电,而数据库正在处理emp这个表,很可能突然断电对索引造成了影响。这个问题在需要维护索引的时候暴露出来了,而在正常查询利用到索引时,Oracle没有报错。
问题感谢:感谢俺老婆在这个问题解决过程中起到的关键作用 :)
select * from emp where empno = 123; 查询不到数据,但是通过名字查询数据,该123数据的确存在。查询条件换成
select * from emp where empno like 123; 后,可以查询到数据,原以为是数据的问题,拷贝出来后,发现数据并没有问题,没有奇怪的字符存在。随后在这条记录上执行了多种操作,都比较奇怪,最后更新empno字段的时候,突然发现更新不上去,数据库报错,对象ID XXX 出错。这下终于找到了问题所在,赶紧查询user_object.object_id,发现这个对象是一个索引,这个索引正好包含empno字段。重建索引后,问题消失。
问题分析:因为中午突然停电,而数据库正在处理emp这个表,很可能突然断电对索引造成了影响。这个问题在需要维护索引的时候暴露出来了,而在正常查询利用到索引时,Oracle没有报错。
问题感谢:感谢俺老婆在这个问题解决过程中起到的关键作用 :)
相关文章推荐
- 一个问号引发的血案之程序员的职业素养(java.sql.SQLException: 无效的列索引问题)
- [MySQL优化案例]系列 — 典型性索引引发CPU负载飙升问题
- 由“使用istream对象作为条件判断”所引发的一些问题
- mysql 修改索引时,外键约束造成的奇怪问题
- java sql like '%?%' 索引无效的有关问题 java sql like '%?%'取不到值
- win32 SDK 组合框获取选中标签索引无效的问题.
- 分析MySQL中索引引引发的CPU负载飙升的问题
- vs2005奇怪的断点无效问题!
- 当Select语句有Where的范围条件以及Order By时的索引字段顺序问题
- oracle 时间条件值范围越大就不走索引问题解决:使用强制索引
- win32 SDK 组合框获取选中标签索引无效的问题.
- 奇怪的问题,InvalidateRect最后一个参数在XP下无效
- mybatis查询sql:where语句“查询时间字段书写问题”引发的索引失效
- try-catch-finally 引发的奇怪问题
- 奇怪的断点无效问题!
- Jquery引发的问题:此页的视图状态无效,可能已损坏
- [MySQL优化案例]系列 ― 典型性索引引发CPU负载飙升问题
- [Microsoft][ODBC SQL Server Driver]无效的描述符索引 问题的解决
- tomcat部署多个项目引发Filter无效的问题
- 一个索引引发的问题