问题起因
某日应用侧反馈说程序报错了,获取的序列值插入不到表里去,超出了字段长度限制。我当时就想,这序列长度能有多长嘛,字段长度得设置的多小?随后应用就提出了要求,要求统计全网程序账号的序列名,最小值、最大值、当前值,使用率,是否循环,长度,长度位数是否会增加等。为了避免类似情况再次发生,我想了一个省事的办法,写一个循环,每个库生成一个序列信息的文件,再取关键信息,对比一下序列的最大值和最小值的长度,给个判断结果,完成。

解决思路
查看序列视图,我们所需要的信息基本都有,但是无法获取序列的当前值,没有当前值,使用率也无法计算。而且如果使用正常的sequence_name.CURRVAL去获取当前值,还可能碰到序列没有被初始化,获取会报错的问题。于是考虑以取序列定义的方式来实现,取出定义,格式统一,想要的值都有,又不会对序列本身造成影响。
实现方法
通过序列定义,可以直接得出账号,序列名,最小值、最大值、当前值,是否循环,而通过简单处理,就可以得到序列使用率,长度以及长度是否增加等信息。最终,全网数据库的序列信息采集完毕。
注意:cache和nocache的序列定义有细微差别,批量处理的时候需要注意一下。
作者:小编小本本
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6321.html
