关于oracle序列的问题
我创建了一个序列,比如seq_no,我初始值设置的是1,增量是1,缓冲是2。 我希望的是这个序列能一直从1往上增加,1、2、3、4等等。但是我发现有的时候会出现中间的序列号断开的情况,比如1完了之后,下次就到3了,2没有。我在产生1之后,重新启动过数据库,不知道是否和这个有关呢?虽然少一两个序列值影响不大,但是还是希望有什么办法能够让序列值自动连续下来,不丢失最好。 请问大家有什么好的办法吗?谢谢了先~
是的,和你重启数据库有关。 重启时CACHE的序列号会丢失。 另外,回滚也会导致序列号不连续。 这两种序列机制本身无法解决,呵呵。 还有这种说法啊 学习了 序列不能满足你要求的话,用触发器吧引用 如果指定CACHE值,oracle就可以预先在内存里面放置一些sequence,这样存取的快些。 cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。 学习 呵呵,原来是这么回事啊。nocache是不是就是把缓冲设置为0啊?这样的话我想序列应该是能连续起来了,只是不用缓冲的话是不是对性能会有一定影响呢?当然我现在对性能还没有什么要求,因为并不是有多大的数据并发执行的。 to java3344520:我刚接触数据库不久,懂的只是还不多,还不了解什么是触发器啊?⊙﹏⊙b汗,我得赶快学学其他的知识了。呵呵 NOCACHE肯定有性能影响。 如果不是多实例集群环境,可以考虑。但ORACLE强烈推荐cache之。 另外,只要存在ro
相关问答:
安装了Oracle 10g,默认安装了orcl数据库,这个数据库能不能删除啊,还有我如果新建了其他数据库,怎么知道在web中登陆不同数据库的地址啊? 1 可以删除 2 在WEB地址栏中输入地址的时候指定新创建的数据库的IP ......
各位大哥,帮个忙。 下个Oracle for vista 版本的安装试试 10G和11G的 http://www.oracle.com/technology/software/products/database/index.html ------------------------------------------- ......
在系统运行的时候总是有一块磁盘始终闪红灯,进入系统后 #topas查看总是有一块磁盘%BUSY为90%以上, 数据库版本:oracle 9.2.0.7 数据文件挂载的节点:/oradata/pcs/ 逻辑卷号lv04 #lslv -l lv04
......
select sum(a.t)from ta a group by ta.a,这条语句将表ta中的数据按照a字段分组汇总t字段。 结果比如: 3 30 4 50 我想得到这个结果: 1 0 2 0 3 30 4 50 5 0 这个结果,请问sql语句怎么写?多谢 nobody ......