1.

说明

在18c之前的版本中对于序列的使用,存在着对同一个序列争用的情况,特别是对于RAC这种高并发的环境中争用序列情况更是容易发生。针对这种情况,Oracle退出了可伸缩序列,大大减少了序列和所在索引的争用,并提供了更好的数据负载可伸缩性。而对于单实例也同样有用。

2.

创建可伸缩序列

l

语法

通过加SCALE关键字就可以创建可伸缩序列

CREATE | ALTER SEQUENCE sequence_name

...

https://www.cndba.cn/Expect-le/article/2922

SCALE [EXTEND | NOEXTEND] | NOSCALE

...

可伸缩序列=6位可伸缩序列偏移量数+正常的序列

6位可伸缩序列偏移量数=[(instance id % 100) + 100]+[会话ID % 1000]https://www.cndba.cn/Expect-le/article/2922

l

EXTEND

表示序列总长度=[X个数字+Y个数字],X默认值是6位数,Y是MAXVALUE指定的位数。

l

NOEXTEND

表示序列总长度不能超过MAXVALUE定义的长度,由于前面默认是6位数+正常的序列号,所以长度最少是7位数。

2.1.

实验

2.1.1.

创建EXTEND类型的可伸缩序列

l

查看会话ID和实例号

SQL> select sys_context('userenv','sid') from dual;

SYS_CONTEXT('USERENV','SID')

--------------------------------------------------------------------------------

69

https://www.cndba.cn/Expect-le/article/2922

SQL> select instance_number from v$instance;

INSTANCE_NUMBER

---------------

1

l

创建序列

SQL> create sequence lei_seq start with 1 increment by 1 minvalue 1 maxvalue 100 scale extend;https://www.cndba.cn/Expect-le/article/2922

Sequence created.

l

查看序列值

SQL> select lei_seq.nextval from dual;

NEXTVAL

101069001= 101+069+001

l

再开一个会话查看序列值

会话ID不同,生成的序列肯定不会相同,但是最后3位是依次增长的。

SQL>  select sys_context('userenv','sid') from dual;

SYS_CONTEXT('USERENV','SID')

--------------------------------------------------------------------------------

101

SQL> select lei_seq.nextval from dual;

https://www.cndba.cn/Expect-le/article/2922

NEXTVAL

----------

101101002

2.1.2.

创建NOEXTEND类型的可伸缩序列

SQL> create sequence lei_seq2 start with 1 increment by 1 minvalue 1 maxvalue 100 scale noextend;

Sequence created.

SQL> select lei_seq2.nextval from dual;https://www.cndba.cn/Expect-le/article/2922

select lei_seq2.nextval from dual

*

ERROR at line 1:

ORA-64603: NEXTVAL cannot be instantiated for LEI_SEQ2. Widen the sequence by 4

digits or alter sequence with SCALE EXTEND.

可以看到报错了序列无法实例化,提示要么去掉maxvalue参数,要么使用extend。

错误原因很简单,因为noextend的可伸缩序列最少要7位数。

修改可以修改maxvalue为1000000即可,也就是6位数+1,一直增长到9就无法增长了,因为增长到10就会超过7位数。证明如下:

SQL> alter sequence lei_seq2 maxvalue 1000000;

Sequence altered.

重复执行几次

SQL> select lei_seq2.nextval from dual;https://www.cndba.cn/Expect-le/article/2922

NEXTVAL

----------

1011011

SQL> /

NEXTVAL

----------

1011018

https://www.cndba.cn/Expect-le/article/2922

SQL> /

NEXTVAL

----------

1011019

SQL> /

select lei_seq2.nextval from dual

*

ERROR at line 1:--可以看到超过9就报错了,因为序列总长度超过了7位。

ORA-64603: NEXTVAL cannot be instantiated for LEI_SEQ2. Widen the sequence by 1

digits or alter sequence with SCALE EXTEND.

https://www.cndba.cn/Expect-le/article/2922

3.

总结

对于可伸缩序列来说EXTEND和NOEXTEND没有本质区别,MAXVALUE代表的含义有所不同。

l

对于EXTEND来说MAXVALUE代表的后面正常序列的长度,而不是可伸缩序列的总长度。

l

对于NOEXTED来说MAXVALUE代表的是可伸缩序列的总长度。

注:Oracle建议对于可伸缩序列不要使用排序,因为它本身就是无序的。

参考连接:

版权声明:本文为博主原创文章,未经博主允许不得转载。

Scalable Sequences

oracle18c默认sid,Oracle 18c-可伸缩序列(Scalable Sequence)相关推荐

  1. 极速体验:Oracle 18c下载和Scalable Sequence新特性

    Oracle 18c 如约已至,目前已经可以从 Oracle Edelivery 网站下载.该网站地址是:https://edelivery.oracle.com 搜索 Oracle Database ...

  2. 极速体验:Oracle 18c 下载和Scalable Sequence新特性

    Oracle 18c 已至,目前已经可以从Oracle Edelivery 网站下载. 该网站的网址是:https://edelivery.oracle.com . 搜索 Oracle Databas ...

  3. oracle18c升级19,Oracle 18C新特性测试之滚动升级

    原标题:Oracle 18C新特性测试之滚动升级 7月24日Oracle 18c通用版本正式对外发布后,三墩IT人在第一时间选取了Oracle 18c PDB在数据同步.迁移.切换方面的三项新功能的测 ...

  4. oracle两表链接序列跳序,Oracle学习之 序列(Sequence)

    Oracle学习之 序列(Sequence) [Oracle学习]之 序列(Sequence) oracle文档:https://docs.oracle.com/cd/B28359_01/server ...

  5. 快讯:Oracle 18c 通用版本 18.3 正式发布

    如同 Oracle 此前预告的那样,Oracle Database 18c 已经正式发布,初始发布的 Linux X86 版本,版本号 18.3 : Oracle Database 18c (18.3 ...

  6. 内核解密 | Oracle 18c 数据库安装ORA-12754的两种解决方案

    Oracle 率先在 Oracle Cloud 上发布了 18c 的数据库版本,也对外发布了针对 Exadata 的下载包.这些软件首先在 Edelivery 网站上提供了下载. 也可以参考公众号之前 ...

  7. oracle sql语句序列,Oracle SQL之 序列使用限制

    Restrictions on Sequence Values You cannot use CURRVAL and NEXTVAL in the following constructs: ■ A ...

  8. oracle查看表空间的序号,Oracle查询所有序列

    --查看当前用户的所有序列 select SEQUENCE_OWNER,SEQUENCE_NAME from dba_sequences where sequence_owner='用户名'; --查 ...

  9. oracle18c的rac启动,使用NFS与ASM配置Oracle 18c RAC

    对于没有共享存储的环境下,可以使用基于NFS的ASM来配置RAC.这里简单描述如何在Oracle 18c RAC环境下配置基于NFS的ASM服务. 1.环境介绍 所用到的主机信息如图中所示: 2.NF ...

最新文章

  1. php 访问类成员,PHP类成员的访问方式和权限_PHP教程
  2. 使用Python中的卷积神经网络进行恶意软件检测
  3. gdb debug memory address
  4. 光环大数据spark文档_推荐大数据Spark必读书目
  5. 根据ABAP BAdI definition名称找到SPRO里配置路径的办法
  6. Spring Boot 10:处理Json数据中的null值
  7. 南大用“推荐算法”分宿舍666,新生配好舍友美滋滋
  8. 吞噬星空怎么会有鸿蒙,论吞噬星空与鸿蒙的关系
  9. layui横向时间线_用打火机或烟头烧羽毛球拍线坏处多
  10. 通过调用外部exe的方法实现c#调用java
  11. python变量赋值方式_【Python入门学习】详谈python变量和变量赋值语句
  12. in作为介词的用法_思维导图:为孩子收藏——常出错的英语用法集锦
  13. hidl 原理分析_普通高等教育“十五”规划教材 电机学-胡虔生, 胡敏强.pdf
  14. 什么是Redis?什么是nosql?NoSQL数据库的四大分类
  15. 射频识别技术漫谈(1)——概念、分类
  16. EXICOM/STAHL触摸屏维修MT-577-SX-TFT-T-AC-AL故障概述
  17. React 事件处理
  18. 墨菲定律|马太效应|破窗理论|蝴蝶效应
  19. MOS管工作动画原理图详解
  20. php开发框架symfony,symfony

热门文章

  1. 浅谈Java对接阿里IOT
  2. 物联网项目开发实战案例
  3. python控制qq添加好友_QQ增粉秘籍:QQ添加好友被限制 突破规则日增粉1000+
  4. 《辛雷学习方法》读书笔记——第二章 心态
  5. linux非yum安装svn,linux安装svn(yum安装)
  6. SPI FLASH的dummy指的是什么?
  7. 自动驾驶测试中的场景构建
  8. 焊接大师给您支招——10种焊接堵漏方法供你选
  9. 从java代码到网络编程
  10. python在输出中间加空行_python输出空行