关于sequence问题的紧急处理

简介: 今天早上收到邮件,说有一个很紧急的问题,是关于sequence的。 错误日志里面还有ORA的错误 -----         ... 7 more Caused by: java.sql.SQLException: ORA-08004: sequence TRX_1SQ.NEXTVAL exceeds MAXVALUE and cannot be instantiated 猛一看就是sequence的值越界了。
今天早上收到邮件,说有一个很紧急的问题,是关于sequence的。
错误日志里面还有ORA的错误
-----
        ... 7 more
Caused by: java.sql.SQLException: ORA-08004: sequence TRX _1SQ.NEXTVAL exceeds MAXVALUE and cannot be instantiated

猛一看就是sequence的值越界了。
导致这个问题的原因主要有两个:
1)设置的maxvalue值过小了。
2)sequence的cycle模式没有启用

从库里查看sequence的状态。

SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
------------------------------ ---------- ---------- ------------ - - ---------- -----------
   TRX_1SQ                             1  999999999            1 N N        100  1000000000


从上面的结果可以看出,sequence的cycle模式没有启用,sequence值越界了。
修复问题可以有两种思路。就是设置maxvalue,或者选择开启cycle模式。
先来看看设置maxvalue,问题就来了,需要设置多大,这个得找开发确认,而开发也不确定最大能设置多大。问题又跑到了dba这边,
关于maxvalue的值,官方文档是这么描述的。最大28位。
MAXVALUE Specify the maximum value the sequence can generate. This integer value can have 28 or fewer digits. MAXVALUE must be equal to or greater than START WITH and must be greater than MINVALUE.


有了这个思路,貌似问题简单了很多。从数据库层面来说似乎行得通了,设置一个最大值即可。从业务上是不是支持更大的数值呢,这个看似需要开发来确认,但是和dba也是有一些关联的,我找到sequence相关的表,大概有5张左右的表使用了那个sequence, 查看对应的表列,可以看到有些字段是支持的,有些字段却是 NUMBER(9) ,很明显设置maxvalue会带来更多的问题。

因为相关的几个表都是核心表,如果修改表的精度也是有潜在风险的。
这个时候就需要找开发确认,是不是应该开启cycle模式,对于现有数据是否有影响了。很快得到产品线的回馈,有同样一个问题在别的项目发生过,需要开启cycle模式。
对于dba来说,需要做的工作基本就是测试和验证了。
从生产备份库中使用dbms_metadata.get_ddl得到sequence的创建语句

SQL> CREATE SEQUENCE  "TRX_1SQ"  MINVALUE 1 MAXVALUE 999999999 INCREMENT BY 1 START WITH 1000000000 CACHE 100 NOORDER  NOCYCLE

    /

Sequence created.

--复现问题

SQL> select trx_1sq.nextval from dual;

select csm_trx_1sq.nextval from dual

       *

ERROR at line 1:

ORA-08004: sequence CSM_TRX_1SQ.NEXTVAL exceeds MAXVALUE and cannot be

instantiated

 

--修复问题

SQL> alter sequence CSM_TRX_1SQ cycle;

Sequence altered.

 --验证问题

SQL> select csm_trx_1sq.nextval from dual;

   NEXTVAL

----------

         1

SQL> /

   NEXTVAL

----------

         2

 

SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER

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

    TRX_1SQ                             1  999999999            1 Y N        100         101

当然了,如果要设置maxvalue的话。有一个细节需要注意的。
如果设置为28位,最高位是没有问题的。
SQL> alter sequence csm_trx_1sq maxvalue 9999999999999999999999999999;
Sequence altered.

SQL> select *from user_sequences where sequence_name='TRX_1SQ';
SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
------------------------------ ---------- ---------- ------------ - - ---------- -----------
    TRX_1SQ                             1 1.0000E+28            1 Y N        100           3


但是如果你设置了30位,也是不会报错的,提示运行成功。但是查看sequence的最大长度,却还是28位。
SQL> alter sequence csm_trx_1sq maxvalue 999999999999999999999999999999;
Sequence altered.

SQL> select *from user_sequences where sequence_name='CSM_TRX_1SQ';
SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
------------------------------ ---------- ---------- ------------ - - ---------- -----------
    TRX_1SQ                             1 1.0000E+ 28            1 Y N        100           3


目录
相关文章
|
6月前
|
监控 负载均衡 安全
静态IP代理与动态IP代理:提升速度与保障隐私的技术解析
本文探讨了静态IP代理和动态IP代理的特性和应用场景。静态IP代理通过高质量服务提供商、网络设置优化、定期更换IP与负载均衡及性能监控提升网络访问速度;动态IP代理则通过隐藏真实IP、增强安全性、绕过封锁和提供独立IP保障用户隐私。结合实际案例与代码示例,展示了两者在不同场景下的优势,帮助用户根据需求选择合适的代理服务以实现高效、安全的网络访问。
208 1
|
9月前
|
域名解析 缓存 网络协议
Web基础与HTTP协议
通过掌握这些基础知识和技术,开发者可以更加高效地构建和优化Web应用,提供更好的用户体验和系统性能。
188 15
|
10月前
|
机器学习/深度学习 自然语言处理 算法
智能语音助手的未来:从技术到伦理的探索
【10月更文挑战第21天】 本文探讨了智能语音助手的发展历程、当前技术现状以及面临的伦理挑战。通过对现有技术的深入分析,文章揭示了智能语音识别和自然语言处理技术的进步对日常生活的影响,同时指出了数据隐私、算法偏见和人机交互等方面的伦理问题。最后,文章提出了对未来智能语音助手发展的展望,强调了在技术创新的同时,必须考虑到伦理和社会影响的重要性。
562 0
西门子S7-200 SMART全局变量和局部变量如何使用,编写带参数子程序并调用
上篇文章中我们学习了西门子S7-200 SMART项目的编译、下载、运行调试及上传,本篇我们来介绍西门子S7-200 SMART的全局变量和局部变量如何使用,以及如何在编程软件STEP7-Micro/WIN SMART中编写带参数子程序并调用。我们先来介绍一下什么是全局变量和局部变量。符号表中定义的变量又称为全局变量,在所有的POU中都有效,在变量表中定义的变量称为局部变量,只在创建它的POU内部有效。
西门子S7-200 SMART全局变量和局部变量如何使用,编写带参数子程序并调用
|
存储 Linux 应用服务中间件
非985、211,C/C++校招学到啥程度才能进鹅厂、阿里、百度等大厂
非985、211,C/C++校招学到啥程度才能进鹅厂、阿里、百度等大厂
|
定位技术
高分、环境等国产遥感卫星影像的获取方法
本文介绍高分(GF)与环境(HJ)等主要国产卫星遥感数据的免费下载(包括批量下载)方法~
1022 2
高分、环境等国产遥感卫星影像的获取方法
|
数据采集 搜索推荐 机器人
|
机器学习/深度学习 缓存 架构师
十年技术进阶路,让我明白了三件要事(8000字长文)
8000字长文,大概花费您10分钟的阅读时间,我将以十年成长道路与八年写博经历分享与你,希望能给予各位读者或多或少的建议与提醒
686 1
十年技术进阶路,让我明白了三件要事(8000字长文)
|
弹性计算 固态存储 Linux
【ECS测评拓展】横向对比其他服务器 unixbench测试
一时兴起用手头上不同的三种云/虚拟服务器简单跑个分数,纯当娱乐大师了哈!
1836 2
【ECS测评拓展】横向对比其他服务器 unixbench测试
|
数据安全/隐私保护 UED
无影云桌面,yyds!!!
无影云桌面,带来的不仅仅是方便,更是云桌面的里程碑。
34836 2
无影云桌面,yyds!!!

热门文章

最新文章