是不是别的地方也用CD_sequence,或行过CD_sequence.nextval

解决方案 »

  1.   

    这不是序列的问题,可能在你调程序的时候插入发生异常,数据没有插入到数据库中,但是该序列已经加1,所以出现了序列不连续的情况
    第二个问题实际上你按照CD_ID排序一下就行了
      

  2.   

    1: 你的服务器是不是重新启动过?并且序列有默认cache 参数设置
    这样将丢失cache的这段序列号2:有一个问题是:我插值为什么会插到表头去了,也就是出现象8,1,2,3,4,5,6,7
    关系型数据库具有行列无关的特性的具体体现在oracle里面
    假如你order by或者通过索引查询出来的记录,是按顺序排列的
    但如果是直接全表扫描出来的,就是按照rowid排列的(表示物理位置)在你的这个例子中,肯定是因为你做过 delete操作,然后后来插入的数据被插到了以前的数据的物理位置(这个跟 pctused/frsslist等有关)
    然后查询出来顺序自然就乱了
      

  3.   

    由于ORCALE在存储数据时,会自动寻找空闲的空间存放记录,因此,后插入的数据有可能存放于数据文件的前面。
      

  4.   

    还有就是有可能是缓存的问题.
    建序列,我一般会加上
    NoCache 
      

  5.   

    to biti_rainy(biti_rainy) :我的确关过服务器,而且每次问题的出现都是在早晨的第一次操作,此后无论怎么测试都不会出错.我该怎么办呢?望赐教!!谢谢.
      

  6.   

    楼上有人已经说了,创建序列的时候使用 nocachecreate sequence CD_sequence
      start with 1
      increment by 1
       nocache ;
    第二个问题,几乎只能依靠你通过排序来解决,否则,不知道设置  pctused = 0 是否可行,这样delete多的话浪费空间frsslist 应该是 freelist,和pctused一样都是建表的参数
      

  7.   

    It's because cache problem .