maybe it's a bug of Oracle?

xbin999 2003-03-24 11:38:28
用id做条件,却得到了另外一个值:
select id from table where id=1;
得到的结果却是2,呵呵

以前还有次类似情况:
同事发现的问题,很奇怪。
如下sql语句,select rowd from table where pk=v1;
AAASwBAA9AAAY9tAA/
AAASwBAA9AAAY9tAA/
AAASwBAA9AAAY9tABA
AAASwBAA9AAAY9tABA
AAASwBAA9AAAY9tABB
AAASwBAA9AAAY9tABC
AAASwBAA9AAAY9tABF
AAASwBAA9AAAY9tABG
AAASwBAA9AAAY9tABH
AAASwBAA9AAAY9tABI
AAASwBAA9AAAY9tABJ

还是同一张表,还一个查询select rowid from table where unid=v2
AAASwBAA9AAAY9tAA/
AAASwBAA9AAAY9tABA
AAASwBAA9AAAY9tABB
AAASwBAA9AAAY9tABC
AAASwBAA9AAAY9tABD
AAASwBAA9AAAY9tABE
AAASwBAA9AAAY9tABF
AAASwBAA9AAAY9tABG
AAASwBAA9AAAY9tABH
AAASwBAA9AAAY9tABI
AAASwBAA9AAAY9tABJ
比较一下,很吃惊吧。
查询的结果确实应该是11条记录。但第一个查询结果居然得到了两组相同的rowid

环境是oracle 9i,在HP平台
不知大家是否遇到过类似问题?欢迎大家讨论讨论原因看!

...全文
32 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xbin999 2003-03-25
  • 打赏
  • 举报
回复
开始发现这个问题时是在c++程序中,倒不是直接使用以上sql语句。
后来是在pl/sql developer中用
select id from table where partitionKey='key1' and id=1;
做测试,不会是变量名和字段名相同的原因。
表做的是LIST分区。
我不是DBA,具体有些配置不是很清楚。
该问题已经没有了,DBA说并没做什么操作,不过我估计可能有人重建了索引,比较乱,谁也不知原因。
xbin999 2003-03-24
  • 打赏
  • 举报
回复
声明一下,这肯定是千真万确的现象。
先是程序出错,然后观察分析,发现用sql语句得到了如下结果。
表做过partition,我怀疑是分区引起的。

三杯倒 2003-03-24
  • 打赏
  • 举报
回复

不可能吧??
black_snail 2003-03-24
  • 打赏
  • 举报
回复
是不是你的显示有问题?
maohaisheng 2003-03-24
  • 打赏
  • 举报
回复
你看看这些表的定义有没有用到簇?
hrb_qiuyb 2003-03-24
  • 打赏
  • 举报
回复
有意思,怎么会呢.
supershb 2003-03-24
  • 打赏
  • 举报
回复
奇怪!

过一天再去检查该问题,说不准会有新的突破.
KingSunSha 2003-03-24
  • 打赏
  • 举报
回复
真的吗?奇怪!

你是单独执行这个sql语句还是在pl/sql块中执行?是不是因为变量名和字段名相同引起的(我的猜测)?
xbin999 2003-03-24
  • 打赏
  • 举报
回复
前面写的sql有点问题,我刚才重新又测试了一下。
真实的sql语句应该类似这样:
select id from table where partitionKey='key1' and id=1;
这时得到的结果是2
而如果直接使用
select id from table where id=1;
得到的结果还是1

snowy_howe 2003-03-24
  • 打赏
  • 举报
回复
分区怎么做的??
一般如果用id来做范围分区的话,这种情况也不应该发生啊。

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧