我用hibernate+spring+Oracle写了个小例子。Oracle里有个sequence,设置cache为20。
我知道如果数据库突然不正常down掉的话,sequence就会发生跳号现象。现在的问题是当我重启web服务器tomcat时,sequence也会跳号20个。oracle安装在另一台电脑上,并没有异常。大家说说,这个cache是存在于哪台电脑上的,为什么重启web服务器后丢失了?
我知道如果数据库突然不正常down掉的话,sequence就会发生跳号现象。现在的问题是当我重启web服务器tomcat时,sequence也会跳号20个。oracle安装在另一台电脑上,并没有异常。大家说说,这个cache是存在于哪台电脑上的,为什么重启web服务器后丢失了?
rollback操作,这样,你在重起tomcat的时候,导致rollback,相应的序列号已经分配出去,就会出现调号,再说,既然选择用sequence,就不要在乎跳号。
2.使用主表test时,先:insert into test(id) values select min(id) from buf_id;
3.增加主表的实质内容采用update方式来进行。
为什么要把CACHE设置为20呢? 如果不想发生跳号的话可以设置为0或不用ORACLE 的sequence而创建个表去关联也可以的啊!
再者说并不是ORACLE出现异常才会跳号的。
重启web服务器和sequence的cache没有任何关系.
要不你多重启几次web服务器(不要使用你的应用,仅仅重启web),看看是否sequence的nextval值是否有影响.
这样还会跳号吗?
所以就上来问问为什么出现这种情况,如果没有知道的,就当散分了。。