成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

數(shù)據(jù)庫(kù)序列信息采集的探究

IT那活兒 / 2658人閱讀
數(shù)據(jù)庫(kù)序列信息采集的探究
點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!

問(wèn)題起因

某日應(yīng)用側(cè)反饋說(shuō)程序報(bào)錯(cuò)了,獲取的序列值插入不到表里去,超出了字段長(zhǎng)度限制。我當(dāng)時(shí)就蚌埠住了,這序列長(zhǎng)度能有多長(zhǎng)嘛,字段長(zhǎng)度得設(shè)置的多?。?/span>
隨后應(yīng)用就提出了要求,為了避免類似情況再次發(fā)生,要求統(tǒng)計(jì)全網(wǎng)程序賬號(hào)的序列名,最小值、最大值、當(dāng)前值,使用率,是否循環(huán),長(zhǎng)度,長(zhǎng)度位數(shù)是否會(huì)增加等。我心想,行吧,那就統(tǒng)計(jì)吧。

解決思路

這么多庫(kù),不可能一個(gè)一個(gè)去,肯定要想點(diǎn)省事的辦法。
于是我想的是寫(xiě)個(gè)循環(huán),每個(gè)庫(kù)生成一個(gè)序列信息的文件,然后取關(guān)鍵信息,再對(duì)比一下序列的最大值和最小值的長(zhǎng)度,給個(gè)判斷結(jié)果,也就完成了。

問(wèn)  題

查看序列視圖,發(fā)現(xiàn)我們所需要的信息基本都有,但是唯獨(dú)無(wú)法獲取序列的當(dāng)前值,沒(méi)有當(dāng)前值,使用率也無(wú)法計(jì)算,難受,難道還要查完dba_sequence再去查一次序列當(dāng)前值?那就有點(diǎn)麻煩的感覺(jué)。
而且如果使用正常的sequence_name.CURRVAL去獲取當(dāng)前值,還可能碰到序列沒(méi)有被初始化,獲取會(huì)報(bào)錯(cuò)的問(wèn)題,如下:
就是如果序列沒(méi)有被使用過(guò)的話,需要先通過(guò)sequence_name.NEXTVAL獲取一次值,才能使用。
這樣看的話,如果存在序列未使用的情況,循環(huán)肯定會(huì)報(bào)錯(cuò),我又不可能先去nextval一下,這會(huì)改變序列的值,萬(wàn)一應(yīng)用哪天又要使用怎么辦。要不就遇到這個(gè)報(bào)錯(cuò)的時(shí)候,就以最小值來(lái)當(dāng)做序列的當(dāng)前值,感覺(jué)很不靠譜的樣子。
最后,我還是以取序列定義的方式來(lái)實(shí)現(xiàn)吧,取出定義,格式統(tǒng)一,想要的值都有,又不會(huì)對(duì)序列本身造成影響,豈不是美滋滋。

實(shí)  現(xiàn)

取出序列定義,剩下的就比較簡(jiǎn)單了,我們來(lái)看一個(gè)序列的定義通常是什么樣的:
sql>set lin 200 pagesize 0 longc 9999999 long 9999999

sql>exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,SQLTERMINATOR,TRUE);

sql>select dbms_metadata.get_ddl(SEQUENCE,SEQUENCE_NAME,SEQUENCE_OWNER) STR from  dba_SEQUENCES where SEQUENCE_NAME=INDEX_ID;

--DDL內(nèi)容:

CREATE SEQUENCE "SYS"."INDEX_ID"  MINVALUE 1 MAXVALUE 9999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ;

CREATE SEQUENCE "SYS"."INDEX_ID"  MINVALUE 1 MAXVALUE 9999 INCREMENT BY
1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ;
*唯一需要注意的地方就是:cache和nocache的序列定義有細(xì)微差別,cache的話后面會(huì)有數(shù)值,批量處理的時(shí)候需要注意一下。
通過(guò)序列定義,可以直接得出賬號(hào),序列名,最小值、最大值、當(dāng)前值,是否循環(huán),而通過(guò)簡(jiǎn)單處理,就可以得到序列使用率,長(zhǎng)度以及長(zhǎng)度是否增加等信息,于是,很快就把全網(wǎng)數(shù)據(jù)庫(kù)的序列信息采集完了,交差。
 

END





本文作者:許 珣

本文來(lái)源:IT那活兒(上海新炬王翦團(tuán)隊(duì))


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129531.html

相關(guān)文章

  • [譯] 存儲(chǔ)和處理時(shí)間序列數(shù)據(jù)(“Time Series Databases”第三章)

    摘要:并且這種格式?jīng)]有事先對(duì)時(shí)間序列的數(shù)量做任何限制。使用格式來(lái)存儲(chǔ)時(shí)間序列數(shù)據(jù)的兩種可能的。其中存放了時(shí)間列序列列和數(shù)值列三列。隨著數(shù)據(jù)規(guī)模的繼續(xù)增長(zhǎng),基于的應(yīng)用程序越來(lái)越不適合處理這樣規(guī)模的時(shí)間序列數(shù)據(jù)了。 就像我們?cè)谇耙徽绿岬降?,一個(gè)時(shí)間序列是一系列數(shù)值,每個(gè)數(shù)值都伴隨著一個(gè)時(shí)間值,代表數(shù)據(jù)被記錄時(shí)的時(shí)間。時(shí)間序列數(shù)據(jù)存入后就很少再需要修改了,查詢時(shí)經(jīng)常是查詢一個(gè)連續(xù)時(shí)間段的數(shù)據(jù),也可...

    EastWoodYang 評(píng)論0 收藏0
  • 容器監(jiān)控實(shí)踐—Prometheus基本架構(gòu)

    摘要:根據(jù)配置文件,對(duì)接收到的警報(bào)進(jìn)行處理,發(fā)出告警。在默認(rèn)情況下,用戶只需要部署多套,采集相同的即可實(shí)現(xiàn)基本的。通過(guò)將監(jiān)控與數(shù)據(jù)分離,能夠更好地進(jìn)行彈性擴(kuò)展。參考文檔本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn) 系統(tǒng)架構(gòu)圖 1.x版本的Prometheus的架構(gòu)圖為:showImg(https://segmentfault.com/img/remote/1460000018372350?w=14...

    gghyoo 評(píng)論0 收藏0
  • 容器監(jiān)控實(shí)踐—Prometheus基本架構(gòu)

    摘要:根據(jù)配置文件,對(duì)接收到的警報(bào)進(jìn)行處理,發(fā)出告警。在默認(rèn)情況下,用戶只需要部署多套,采集相同的即可實(shí)現(xiàn)基本的。通過(guò)將監(jiān)控與數(shù)據(jù)分離,能夠更好地進(jìn)行彈性擴(kuò)展。參考文檔本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn) 系統(tǒng)架構(gòu)圖 1.x版本的Prometheus的架構(gòu)圖為:showImg(https://segmentfault.com/img/remote/1460000018372350?w=14...

    elina 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<