暂无图片
sequence 跳号异常
我来答
分享
LEE
2019-08-20
sequence 跳号异常

已排除sequence 跳号的 人为操作 如(异常关库,获取序列时回滚、中断事务)系统所有sequence 第二天使用默认从 cache 后100位开始

alter中无其他异常信息,无设置任何隐含参数

SQL> show parameter sga

 

NAME                                 TYPE        VALUE

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

lock_sga                             boolean     FALSE

pre_page_sga                         boolean     FALSE

sga_max_size                         big integer 2640M

sga_target                           big integer 0


怀疑 内存过小导致shared pool 分配不够 刷出cache导致 ,但系统晚上除了收集统计信息外无其他操作,求解分析原因


我来答
添加附件
收藏
分享
问题补充
8条回答
默认
最新
LEE

1.png

暂无图片 评论
暂无图片 有用 0
LEE

2.png

暂无图片 评论
暂无图片 有用 0
lastwinner
检查序列都使用在哪里了,检查二楼查询SQL的条件,检查数据库实例的重启时间(从dba_hist_database_instance中获取)
暂无图片 评论
暂无图片 有用 0
LEE

3.png

暂无图片 评论
暂无图片 有用 0
LEE

Insert 值中取 下一个序列
 select cnc_Sd挂号列表.nextval from dual

除了以上两个时间段重启后,其他为重启时间段仍有跳号

暂无图片 评论
暂无图片 有用 0
王文忠

做了个小测试:当sequence创建中指定NOORDER。从内存里被刷出,那么下次确实是跳一个cache的大小。


如果创建的sequence指定ORDER,则不会再出现问题。建议你可以将sequence改为ORDER顺序的。


暂无图片 评论
暂无图片 有用 0
LEE

附件中截图没截全,是勾选了排序的, 已经定位到问题,但存在疑问

数据库晚上是默认收集统计信息 ,关闭统计信息后业务未出现跳号

手工收集系统调用统计信息

exec dbms_stats.gather_database_stats_job_proc 做10046 发现关键问题

 内部会更新update seq$ 数据字典操作

select increment$,minvalue,maxvalue,cycle#,order$,cache,highwater,audit$,flags from seq$ where obj#=:1

SELECT ORA_TQ_BASE$.NEXTVAL FROM DUAL

update seq$ set increment$=:2,minvalue=:3,maxvalue=:4,cycle#=:5,order$=:6,cache=:7,highwater=:8,audit$=:9,flags=:10 where obj#=:1

同时收集后系统再次出现跳号


对另一台未出现跳号的库手工收集 发现并未出现update seq$ 数据字典操作

为啥两套库 内部更新数据字典有差异?

库均为windows 11.2.0.4.0 且未打任何补丁


暂无图片 评论
暂无图片 有用 0
豆宇斯
2024-09-04
最后问题解决了吗我们好像也遇到了类似的问题
LEE
上传附件:存在seq$的10046.rar
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
附件列表
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏