Oracle序列 - 跳过的数字

时间:2014-09-23 17:29:42

标签: oracle oracle10g

CREATE SEQUENCE F_SQ  
START WITH 1  
MAXVALUE 999999999999999999999999999  
MINVALUE 1  
NOCYCLE  
CACHE 20  
NOORDER;  

我使用上面的脚本创建了一个序列。我们的夜间工作使用这些序列,因此在第一天它使用1,2,3,4,5,第二天它以21,22,23开始......依此类推

我可以理解它正在发生,因为CACHE参数。

现在的问题是

三天之间它一直在跳过一些数字。

序列是否会决定使用这些跳过的数字?(从上面的示例6到20),如果是这样,在什么情况下有没有办法避免它?

1 个答案:

答案 0 :(得分:1)

通常,由于缓存参数会跳过值。文档中指定的一些原因可能是因为当发生系统故障时,所有未在已提交的DML语句中使用的高速缓存序列值都将丢失。潜在的丢失值数等于CACHE参数的值。如果你想要一个连续的序列值,不管上面指定的情况如何,总是使用NOCACHE选项。

对于最后一个问题,除非你在序列中提到了CYCLE选项,否则不会再次使用这些序列。