【问题标题】:Query result set randomly duplicated查询结果集随机重复
【发布时间】:2012-04-24 10:08:34
【问题描述】:

我有一个非常简单的查询,它随机返回重复的行。有时我没有重复,有时我有重复的结果集,重复的记录每次都不同。我正在对冻结的数据库运行查询(数据不会改变)。我的 Oracle 版本是 11g。

我在某个日期只有一个过滤器(在 WHERE 子句中):
to_char(date,'yyyy/mm') > = '2012/03'

任何帮助将不胜感激。 感谢您的关注。 最好的问候。

完成查询

select distinct 
   B.ORD_V_COD_ROWID as c1,
   B.ORD_D_DAT_INSERITO_RIFIUTATO as c2,
   B.ORD_D_DAT_RIFIUTO_SIS as c3
  from   
       NRFTF_ORD_ORDINE A,
       NRFTF_COR_ORDINI_RDS B
  where  (A.ORD_N_DWH_NUM_ORDINE = B.ORD_N_DWH_NUM_ORDINE 
  and B.ORD_V_COD_CAUSALE = 'CLIENTE NON AFFIDABILE' 
  and B.ORD_V_COD_STATO = 'RIFIUTATO' 
  and B.RDS_C_DWH_FLG_CANCELLAZIONE = '0' 
  and B.ORD_C_DWH_FLG_CANCELLAZIONE = '0' 
  and B.ORD_V_COD_CAUSALE = 'CLIENTE NON AFFIDABILE' 
  and B.PER_NAME_MONTH >= '2012/03' 
  and (B.ORD_D_DAT_RIFIUTO_SIS >= TO_DATE('2012-03-22 00:00:00' , 'YYYY-MM-DD HH24:MI:SS') 
  or B.ORD_D_DAT_INSERITO_RIFIUTATO >= TO_DATE('2012-03-22 00:00:00' , 'YYYY-MM-DD HH24:MI:SS')) 
  and  TO_CHAR (A.ord_d_dat_creazione,'YYYY/MM') >= '2012/03' ) 
  order by c1, c2, c3

【问题讨论】:

  • 什么查询?显示所有查询文本,而不是部分
  • 编辑您的问题以显示查询(不要放在评论中...)
  • B.PER_NAME_MONTH 是一个 varchar2,对吧?
  • 是的,B.PER_NAME_MONTH 是存储在表 B 上的一个字段,作为 varchar2。我想知道我是否应该检查 db 上的 trobles,寻找 SGA 的大小或其他东西。感谢您的回答和关注..
  • 您的数据库是什么版本的 11g,包括补丁集?如果您从查询中得到重复的结果/错误的结果,这听起来像是一个 oracle 错误。

标签: sql oracle oracle11g


【解决方案1】:

有趣。我已经看到索引损坏的类似行为。重建索引修复了一段时间的问题,但随后非确定性行为又回来了。我们最终致电 Oracle 支持。他们在一个令人印象深刻的 24 小时全球更新数据字典会话中修复了它。

我会尝试从头开始重建所有涉及的表和索引。

如果这没有帮助,并且您三次检查您没有任何动态发生在您身边,请联系 Oracle 支持。

【讨论】:

  • 谢谢 Jens,我将重建涉及的索引,希望它会起作用。
猜你喜欢
  • 1970-01-01
  • 2018-03-13
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
相关资源
最近更新 更多