定义了一个sequence如下:MAXVALUE 90000000, MINVALUE 70000000,CYCLE, CACHE 100, NOORDER;在实际使用一段时间后,发现该sequence 的last_number的最后两位为非0和1的数值,如46,根据之前所知,last_number的数值取决于cache和last_number本身,那么如果每次都是以100个序号为一批提取的话,last_number的最后两位应该始终是01,但如今为何出现其它数值呢?注:该sequence已经历了一次到顶后的循环,其所在的数据库在期间也曾经历过正常关闭和启动。谢谢!
那么包含 20000001个值.没循环一次cache里的最大value就减1.
第一次99
第二次98
...
CREATE SEQUENCE test_seq
START WITH 70000000
INCREMENT BY 1
MAXVALUE 90000000
NOCYCLE
CACHE 100;
这个意思吗
那么包含 20000001个值.没循环一次cache里的最大value就减1.
第一次99
第二次98
...
”
没明白你的解释,你是指每循环一次,所能用到的序号总数就少1?我测试过一个小范围的循环sequence,从10到50,cache为10,多次循环后,last_number的末尾都是0,没有出现其它数值
oracle是按照cache截取sequence的.比如sequence长度为21,从10到30,cache为10.未使用时, last_number=10
第一次截取,10-19,last_number=20
第二次截取,20-29,last_number=30
第三次截取,30 ,last_number=31
第四次截取,10-19,last_number=10
-----以下循环.