请教关于序列的怪问题,很着急,100分送上 创建的语句没什么问题。出现你的问题的原因可能是:1、别人用了你的sequence2、出现了非常规的down机3、你的程序的循环写的有问题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上说的对,出现GAP的原因很多:1 sequence可以被多表共享,其他表用了6-202 系统崩溃时cache中的sequence数据丢失,会出现GAP3 当rollback时sequence不会rollback,会出现gap4 也很可能是你自己“查数”没查对,重新检查一下sql不知您能否受到启发。 我是一个表见了一个sequence,不会出现多表共享的问题。因为这个表只有我自己用。循环怎么会出问题?第一天的提交很好,顺序都是正确的,第二天就会变了。 排序值和循环值应该不会导致你的问题不经义的一句话如:select ***.nextval from dual;就会导致序列增加。能把sql贴出来吗? 我没有用过select **.nextval from dual,但是用过select * from dual不知道这样有没有影响。 select * from dual没有影响。这个问题应该和cache没关系cache默认为20,就是存20个sequence数在cache中,如果cache为0则系统会从内存中取数。 将CACHE SIZE设置为0就ok了 我想设置 CACHE SIZE属性于楼主的问题没有什么关系吧。如果不用CACHE的话,反而还降低了效率我想楼主可以重新建一个表及序列再进行测试一下看,注意你所做的每一步操作,看一看是不是会有出问题的地方呢? 还是和cache有关系。没有cache就没事了。 我也遇到过这样的问题,没有cache就没事了。为什么呢,请哪位分析一下。 我认为还是不要用系统中的序列,而采用“自定义“的序列号生成方式,这样可以比较灵活,而且有多种形式。如想要自定义序列号生成方式,请留MAIL。 sepuence如果设为cache20,将会在内存中存储下20个数据,如果此时关掉数据库,这20个序列数将丢失,下次启动数据库会从第21个开始,如果设为nocache,就不会有这种情况。 你可以建立一个sequence有cache的(20)然后select * from user_sequences; select 其中一个.nextval from dual; select 其中一个.currval from dual;你会发现当前值为1,而LAST_NUMBER为21 你中间可能使用了myseq.nextval做查询,把中间那段给空掉了 sql语句 麻烦大家帮我看看,到底哪里有问题,急急急!!! 根据名字和日期分组统计,求高手观望!!! 提问,支持数据库多帐套? 主键列排序 这个作业时间怎么写啊 急 大家帮帮忙 分时段统计+分组统计 请教如何查找默认表空间 oracle第三方工具,名字叫TOAD的工具在哪里有免费下载的? 请教各位有关数据查询的问题 请教!关于自定义类型导入导出的问题 oracle的like的统配符?
1 sequence可以被多表共享,其他表用了6-20
2 系统崩溃时cache中的sequence数据丢失,会出现GAP
3 当rollback时sequence不会rollback,会出现gap
4 也很可能是你自己“查数”没查对,重新检查一下sql
不知您能否受到启发。
不经义的一句话如:select ***.nextval from dual;
就会导致序列增加。
能把sql贴出来吗?
不知道这样有没有影响。
这个问题应该和cache没关系
cache默认为20,就是存20个sequence数在cache中,
如果cache为0则系统会从内存中取数。
我想楼主可以重新建一个表及序列再进行测试一下看,注意你所做的每一步操作,看一看是不是会有出问题的地方呢?
序列数将丢失,下次启动数据库会从第21个开始,如果设为nocache,就不会有这种情况。
然后select * from user_sequences;
select 其中一个.nextval from dual;
select 其中一个.currval from dual;
你会发现当前值为1,而LAST_NUMBER为21