首先一个序列的定义如下
-- Create sequence
create sequence SEQ1
minvalue 1
maxvalue 999999999999999999999999999
start with 1000
increment by 1
cache 20;
你认为依次执行select SEQ1.nextval from dual获得的值一定是有序的吗?
你认为最晚执行select SEQ1.nextval from dual获得的值一定是最大的吗?
如果这个oracle是单机的,答案是肯定的。
但是在RAC多节点环境下,就不对了。
下面的内容摘自网上,是被人测试的数据:--------------------------------------------------------------------
create sequence TX_SEND_SEQ_ACC
minvalue 1
maxvalue 999999999999999999999999999
start with 673560
increment by 1
cache 20;
RAC1取序列
SQL> select tx_send_seq_acc.nextval from dual;
NEXTVAL
----------
673560
SQL> select tx_send_seq_acc.nextval from dual;
NEXTVAL
----------
673561
RAC2取序列
SQL> select tx_send_seq_acc.nextval from dual;
NEXTVAL
----------
673580
SQL> select tx_send_seq_acc.nextval from dual;
NEXTVAL
----------
673581
由此可见两个节点的序列的最后一个值确实会不同,每个节点会预先占用20个序号,分配完后再开始下一段编号,这样会存在跳号问题,经大量数据测试,序列并不会重复生成,不存在重号问题。
----------------------------------------------------------------------------------------------------
所以你order by某一列的时候,如果这个列是通过序列插入的,得到的顺序并不一定是插入的顺序哦。
分享到:
相关推荐
重置oracle序列从指定数字开始 代码如下: declare n number(10); v_startnum number(10):=10000001;–从多少开始 v_step number(10):=1;–步进 tsql varchar2(200); v_seqname varchar2(200):=’MIP_JF_SEQUENCE’;...
序列 序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列, 序列中的可以升序生成,也可以降序生成。创建序列的语法是: 语法结构:创建序列 CREATE SEQUENCE sequence_name [START ...
今天从oracle迁移数据到mysql碰到个需求:原先的主键字段需要改成mysql中的自增字段,而且原先数据的值不能变,以后新插入的值从原先数据最大的值开始自增。 解决办法: 构建环境: mysql> CREATE TABLE test -> ( ...
oracle中创建序列及序列补零实例详解 我们经常会在在DB中创建序列: -- Create sequence create sequence COMMON_SEQ minvalue 1 maxvalue 999999999 start with 1 increment by 1 cache 20 cycle; 我们的序列的...
创建序列demo_s: create sequence demo_s minvalue 1000 maxvalue 999999999999999999 start with 1000 increment by 1 cache 20; 解释: INCREMENT BY:指定序列增长步长。可以为正...
Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的; 但在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长、开始索引、是否循环等;若需要迁移数据库,...
全部分两部分打包上传,此为第一部分。 简介:初学oracle必须的学习手册,初学oracle必须的学习手册 《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle ...使用Oracle实时应用群集(RAC)优化可用性和可扩展性
一、创建序列 1.1、直接在PLSQL中设置 1.2、命令创建 create sequence seq_users ##创建序列seq_users increment by 1 ## 步长,每次加1 start with 1 ##从1开始 minvalue 1 ##最小值 maxvalue 9999999 ##最大值 ...
全部分两部分打包上传,此为第二部分。 简介:初学oracle必须的学习手册,初学oracle必须的学习手册 《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle ...使用Oracle实时应用群集(RAC)优化可用性和可扩展性
本方法为使用SEQUENCE(序列) 例如有表temp_test结构为: create table TEMP_TEST ( id number, nm varchar(10), primary key(id) //id为主键,下面的方法把它设为自增字段 ) 1、建立...
他还是各种技术会议的主讲人,包括COLLABORATE、Oracle OpenWorld和其他地方与区域会议。 Michael Abbey是公认的数据库管理、安装、开发、应用迁移、性能调优和实现方面的权威。在过去的14年中,他与IanAbramson和...
使用Oracle实时应用群集(RAC)优化可用性和可扩展性 内容提要 《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL...
使用Oracle实时应用群集(RAC)优化可用性和可扩展性 内容提要 《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL...
3.6 使用Oracle配置文件 3.7 使用管理工具 3.7.1 OEM/网格控件 3.7.2 Oracle网络管理器 3.7.3 OEM控制台 3.7.4 OEM组件 3.7.5 Oracle网络配置助手 3.7.6 Oracle网络目录配置助手 3.7.7 命令行实用程序 3.7.8 Oracle...
问题:在SQL Server数据库中,有自增列这个字段属性,使用起来也是很方便的。而在Oracle中却没有这个功能,该如何实现呢? 答:在Oracle中虽然没有自增列的说法,但却可以通过触发器(trigger)和序列(sequence)来模式...
文章目录问题背景时间序列连续数据准备完整的查询语句时间序列不完全连续数据准备具体实现时间序列存在重复样例结论使用开窗函数的方法利用rows子句的行方式进行限定;利用range子句的值方式进行限定.unbounded和...
Oracle9i之前,中文是按照二进制编码进行排序的。在oracle9i中新增了按照拼音、部首、笔画排序功能。 1、设置NLS_SORT参数值 SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序 SCHINESE_STROKE_M ...
在设计数据库表的时候发现Oracle没有自增主键的设置,Google了解到Oracle本身并不支持自增主键,需要通过序列(Sequence)和触发器(Trigger)实现。 创建表Student Create Table Student( id number(12) primary ...
因为两种方式都需要通过创建序列来实现,这里先给出序列的创建方式。 CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}]; ...
Oracle中没有sqlserver中那么方便的自增序列,如果想要达到sqlserver中那种效果,也不是很麻烦,需要创建一个自增序列SEQUENCE,然后建一个触发器即可。 CREATE SEQUENCE emp_sequence INCREMENT BY 1 — ...