亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 數(shù)據(jù)庫(kù) > Oracle > 正文

分享ORACLE SEQUENCE跳號(hào)總結(jié)

2024-08-29 14:00:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在ORACLE數(shù)據(jù)庫(kù)中,序列(SEQUENCE)是使用非常頻繁的一個(gè)數(shù)據(jù)庫(kù)對(duì)象,但是有時(shí)候會(huì)遇到序列(SEQUECNE)跳號(hào)(skip sequence numbers)的情形,那么在哪些情形下會(huì)遇到跳號(hào)呢? 

事務(wù)回滾引起的跳號(hào) 

不管序列有沒(méi)有CACHE、事務(wù)回滾這種情況下,都會(huì)引起序列的跳號(hào)。如下實(shí)驗(yàn)所示: 

SQL> create sequence my_sequence 2 start with 1 3 increment by 1 4 maxvalue 99999 5 nocache;Sequence created.SQL> create table test(id number(10), name varchar2(32));Table created.SQL> insert into test 2 select my_sequence.nextval , 'kerry' from dual;1 row created.SQL> SQL> rollback;Rollback complete.SQL> select my_sequence.nextval from dual; NEXTVAL----------  3SQL>

oracle,sequence,跳號(hào)

并發(fā)訪問(wèn)序列引起的跳號(hào) 

并發(fā)訪問(wèn)序列引起的跳號(hào),其實(shí)不算真正的跳號(hào),而只是邏輯跳號(hào),只是序列值被其它并發(fā)會(huì)話使用了。我們來(lái)構(gòu)造一起并發(fā)訪問(wèn)序列引起的跳號(hào),我們開(kāi)啟兩個(gè)會(huì)話窗口,循環(huán)獲取序列的值,模擬并發(fā)出現(xiàn)的場(chǎng)景。 

會(huì)話窗口A: 

exec dbms_lock.sleep(2); --延遲2秒執(zhí)行,根據(jù)你實(shí)驗(yàn)情況調(diào)整/begin for i in 1 .. 2000 loop dbms_output.put_line(my_sequence.nextval); end loop;end;/

會(huì)話窗口B: 

spool test.txt;begin waitfor delay '00:00:10'; for i in 1 .. 2000 loop dbms_output.put_line(my_sequence.nextval); end loop;end;/spool off; 

 如下所示,我構(gòu)造的實(shí)驗(yàn)當(dāng)中,你會(huì)看到序列的跳號(hào)情況。

oracle,sequence,跳號(hào)

FLUSH SHARED_POOL會(huì)導(dǎo)致CACHE的序列跳號(hào) 

實(shí)驗(yàn)測(cè)試如下所示(序列的CACHE值必須大于0),當(dāng)然正常情況下,很難遇到這種情況。 

SQL> select test.my_sequence.nextval from dual; NEXTVAL---------- 17004SQL> alter sequence test.my_sequence cache 40;Sequence altered.SQL> select test.my_sequence.nextval from dual; NEXTVAL---------- 17005SQL> alter system flush share_pool;alter system flush share_pool*ERROR at line 1:ORA-02000: missing SHARED_POOL/BUFFER_CACHE/GLOBAL CONTEXT keywordSQL> alter system flush shared_pool;System altered.SQL> select test.my_sequence.nextval from dual; NEXTVAL---------- 17045

oracle,sequence,跳號(hào)

數(shù)據(jù)庫(kù)實(shí)例異常關(guān)閉導(dǎo)致跳號(hào)

如下實(shí)驗(yàn)所示,當(dāng)數(shù)據(jù)庫(kù)使用shutdown abort命令關(guān)閉后,重新啟動(dòng)實(shí)例,序列緩存在shared pool里面沒(méi)有用過(guò)的值都沒(méi)有了。一下子從17045跳到17085 

SQL> select test.my_sequence.currval from dual; CURRVAL---------- 17045SQL> select object_id from dba_objects where object_name=upper('my_sequence'); OBJECT_ID---------- 97760SQL> select increment$, minvalue, maxvalue,highwater, cache 2 from seq$ where obj#=97760;INCREMENT$ MINVALUE MAXVALUE HIGHWATER CACHE---------- ---------- ---------- ---------- ----------  1  1 99999 17085  40SQL> shutdown abort;ORACLE instance shut down.SQL> startup;ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instanceORACLE instance started.Total System Global Area 1620115456 bytesFixed Size   2213816 bytesVariable Size  1258293320 bytesDatabase Buffers  352321536 bytesRedo Buffers  7286784 bytesDatabase mounted.Database opened.SQL> select test.my_sequence.currval from dual;select test.my_sequence.currval from dual  *ERROR at line 1:ORA-08002: sequence MY_SEQUENCE.CURRVAL is not yet defined in this sessionSQL> select test.my_sequence.nextval from dual; NEXTVAL---------- 17085SQL> 

另外,我們也來(lái)看看正常關(guān)閉數(shù)據(jù)庫(kù)的情況下,序列會(huì)不會(huì)出現(xiàn)跳號(hào),我們采用10046跟蹤事件,看看正常數(shù)據(jù)庫(kù)關(guān)閉情況下,會(huì)對(duì)序列做一些啥操作 

SQL> select test.my_sequence.nextval from dual; NEXTVAL---------- 17085SQL> alter session set events '10046 trace name context forever, level 4';Session altered.SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startupORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instanceORACLE instance started.Total System Global Area 1620115456 bytesFixed Size   2213816 bytesVariable Size  1258293320 bytesDatabase Buffers  352321536 bytesRedo Buffers  7286784 bytesDatabase mounted.Database opened.SQL> select test.my_sequence.currval from dual;select test.my_sequence.currval from dual  *ERROR at line 1:ORA-08002: sequence MY_SEQUENCE.CURRVAL is not yet defined in this sessionSQL> select test.my_sequence.nextval from dual; NEXTVAL---------- 17086SQL> 

Trace文件中有更新seq$數(shù)據(jù)字典表,如果你看過(guò)我這篇文章ORACLE中seq$表更新頻繁的分析,基本上就知道其實(shí)seq$中維護(hù)的是序列的一些信息。通過(guò)跟蹤文件,我們知道在數(shù)據(jù)庫(kù)正常關(guān)閉的情況下,會(huì)觸發(fā)一個(gè)update seq$的操作,把當(dāng)前的sequence.nextval的值更新到seq$.highwater中,從而使得sequence在有cache的情況下,數(shù)據(jù)庫(kù)正常關(guān)閉未出現(xiàn)nextval跳躍(currval也同樣不跳躍);而在數(shù)據(jù)庫(kù)異常關(guān)閉之時(shí),數(shù)據(jù)庫(kù)不能及時(shí)將sequence.nextval更新到eq$.highwater從而引起sequence cache中的值丟失,從而可能出現(xiàn)了sequence使用cache導(dǎo)致跳躍的情況 

=====================PARSING IN CURSOR #25 len=129 dep=1 uid=0 oct=6 lid=0 tim=1504236336294194 hv=2635489469 ad='bf780410' sqlid='4m7m0t6fjcs5x'update seq$ set increment$=:2,minvalue=:3,maxvalue=:4,cycle#=:5,order$=:6,cache=:7,highwater=:8,audit$=:9,flags=:10 where obj#=:1END OF STMTPARSE #25:c=0,e=21,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=1935744642,tim=1504236336294194BINDS #25: Bind#0 oacdty=02 mxl=22(02) mxlc=00 mal=00 scl=00 pre=00 oacflg=18 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=bf45ca48 bln=24 avl=02 flg=09 value=1 Bind#1 oacdty=02 mxl=22(02) mxlc=00 mal=00 scl=00 pre=00 oacflg=18 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=bf45ca5a bln=24 avl=02 flg=09:/17086                      Bind#3 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=2b7d80f57350 bln=24 avl=01 flg=05 value=0 Bind#4 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=2b7d80f57320 bln=24 avl=01 flg=05 value=0 Bind#5 oacdty=02 mxl=22(02) mxlc=00 mal=00 scl=00 pre=00 oacflg=18 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=bf47b85e bln=24 avl=02 flg=09 value=40 Bind#6 oacdty=02 mxl=22(04) mxlc=00 mal=00 scl=00 pre=00 oacflg=18 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=bf47b870 bln=24 avl=04 flg=09 value=17086 Bind#7 oacdty=01 mxl=32(32) mxlc=00 mal=00 scl=00 pre=00 oacflg=18 fl2=0001 frm=01 csi=873 siz=32 off=0 kxsbbbfp=bf47b882 bln=32 avl=32 flg=09 value="--------------------------------" Bind#8 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=2b7d80f572f0 bln=24 avl=02 flg=05 value=8 Bind#9 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=2b7d80f57380 bln=22 avl=04 flg=05 value=97760EXEC #9:c=999,e=709,p=0,cr=1,cu=2,mis=0,r=1,dep=1,og=4,plh=1935744642,tim=1504236336297033CLOSE #9:c=0,e=2,dep=1,type=3,tim=1504236336297058mealink上提到了使用dbms_shared_pool.keep將對(duì)象在鎖定在shared pool 中,永遠(yuǎn)不釋放。這樣可以防止FLUSH SHARED POOL導(dǎo)致序列跳號(hào),但是這個(gè)無(wú)法避免數(shù)據(jù)庫(kù)異常關(guān)閉或CRASH引起的跳號(hào)SQL> select test.my_sequence.currval from dual; CURRVAL---------- 17086SQL> exec dbms_shared_pool.keep('test.my_sequence','q');PL/SQL procedure successfully completed.SQL> alter system flush shared_pool;System altered.SQL> select test.my_sequence.currval from dual; CURRVAL---------- 17086SQL> shutdown abortORACLE instance shut down.SQL> startupORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instanceORACLE instance started.Total System Global Area 1620115456 bytesFixed Size   2213816 bytesVariable Size  1258293320 bytesDatabase Buffers  352321536 bytesRedo Buffers  7286784 bytesDatabase mounted.Database opened.SQL> select test.my_sequence.nextval from dual; NEXTVAL---------- 17126

oracle,sequence,跳號(hào)

其實(shí)如果業(yè)務(wù)允許,單號(hào)出現(xiàn)跳號(hào)也無(wú)所謂的情形最好,如果碰到業(yè)務(wù)要求絕對(duì)不能出現(xiàn)單號(hào)出現(xiàn)跳號(hào)的情況,那么就不能使用序列號(hào)了,就必須使用其它替代方案,此處不做展開(kāi)說(shuō)明!

總結(jié)

以上所述是小編給大家介紹的分享ORACLE SEQUENCE跳號(hào)總結(jié),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到oracle教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
av成人午夜| 精品免费久久久| 日本成人中文| 91精品国产全国免费观看| 99久久九九| 久久精品视频亚洲| 国内精品久久久久影院 日本资源| 最近中文字幕在线中文高清版| 成人h动漫精品一区二| 成人黄色777网| 久久久久亚洲av无码网站| 欧美人与性动交α欧美精品图片| 欧美一级淫片a免费视频| 青青草原一区二区| 亚洲丝袜美腿一区| 亚洲人成人无码网www国产| 亚洲aaa激情| 国产永久免费高清在线观看视频| 国产精品一区二区三区视频网站| 成年网站在线| 亚洲久草视频| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 国产传媒免费观看| 不卡一二三区首页| 日韩一区二区精品视频| 久久久精品一区二区三区| 国产精品一区二区你懂得| 国产精品亚洲人在线观看| 精品无码av无码免费专区| 欧美三级理伦电影| 日韩精品极品视频在线观看免费| 国产偷久久久精品专区| 午夜一级在线看亚洲| 91国内揄拍国内精品对白| 福利写真视频网站在线| 国产成人免费看| 91久久精品一区二区别| 精品欧美在线观看| 亚洲色图另类小说| 曰皮视频在线播放免费的| 男女日批视频在线观看| 国产精品入口芒果| 久久香蕉av| 第四色中文综合网| 黄色成人91| 在线成人中文字幕| 中文在线网在线中文| 国产精品久久久久久av| 日韩亚洲精品在线| 伊人久久大香线蕉综合热线| 中文字幕一区二区人妻在线不卡| 色播五月激情五月| 99视频都是精品热在线播放| 精品视频在线观看一区| 亚洲精品影院在线观看| 成人性生交大片免费看午夜| 国产日韩三区| 日韩成人动漫在线观看| 日韩免费观看高清| 男人的天堂va免费视频| 日韩欧美中文字幕不卡| 色爱综合区网| av美女网站| 欧美xxxx性猛交bbbb| 91干在线观看| 深夜日韩欧美| 成人影视免费观看| 99视频在线播放| 亚洲欧美久久久久一区二区三区| 啊灬啊灬啊灬啊灬高潮在线看| 亚洲国产日韩一区二区| 日本一二三区在线视频| 日韩免费av片在线观看| 国产精品美乳一区二区免费| 无码h黄肉3d动漫在线观看| 一本到在线视频| 亚洲亚洲精品三区日韩精品在线视频| 国产一区二区在线播放视频| 日本中文字幕在线观看视频| 亚洲人成自拍网站| 久久久久久久久久网站| 国产欧美一区二区精品性色超碰| 黄色在线免费观看| 国产精品成人**免费视频| 日韩大片在线播放| 久久久国产精品人人片| 国产欧美日韩久久| 成年人网站免费观看| 亚洲女与黑人做爰| 国产精品亚洲专一区二区三区| 欧美日韩一区二区三区| 爱福利在线视频| 欧美另类69xxx| 亚洲成av人影院在线观看| 成人黄色免费网址| 先锋成人影院| 狠狠入ady亚洲精品| 成人影院大全| 无码人妻aⅴ一区二区三区有奶水| 日本午夜在线亚洲.国产| 日本一区二区三区免费乱视频| 色噜噜噜噜噜噜| 国产一区二区三区四区| 一区二区三区在线视频免费观看| 亚洲欧洲午夜一线一品| 色悠久久久久综合欧美99| 色婷婷亚洲婷婷| 欧美视频一区二区三区四区| 欧美一卡二卡三卡四卡| 久久久免费高清电视剧观看| 日本中文字幕一区二区有限公司| 亚洲精品一区二区妖精| 黄视频网站免费看| 成人嫩草影院免费观看| 国产黄色免费电影| www.亚洲男人天堂| 青梅竹马是消防员在线| 欧洲毛片在线| 99国产精品一区| 日韩中文字幕91| 一级黄色免费网站| 精品欧美乱码久久久久久| 91人人爽人人爽人人精88v| 亚洲欧美成人网| 最近中文字幕第一页| 欧美在线播放高清精品| 精精国产xxxx视频在线动漫| 制服丝袜成人动漫| 精品国产一区二区三区在线观看| 国产在线不卡一区| 欧美激情一区在线| 久久久久网站| 在线免费观看av片| 五月天视频在线观看| 欧美一区二区公司| 免费电影网站在线视频观看福利| 国产欧美91| 亚洲高清视频在线播放| 亚洲成人免费网站| 亚洲高潮无码久久| 内射后入在线观看一区| 国产一区二区三区黄| 可播放的18gay1069| 国产九九精品| 精品国产黄色片| 国产成人av电影在线播放| 日本熟妇毛茸茸丰满| 激情成人亚洲| 国产免费中文字幕| 欧美狂野激情性xxxx在线观| 开心快乐六月丁香婷婷| 捆绑裸体绳奴bdsm亚洲| 精品欧美一区二区精品久久| 亚洲第一色av| 成人av网站大全| 国产69精品99久久久久久宅男| 成午夜精品一区二区三区软件| 欧洲国产伦久久久久久久| 精品国产欧美日韩| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲精品国产无天堂网2021| 爱豆国产剧免费观看大全剧苏畅| 欧美性大战久久| 亚洲午夜久久久久久久国产| 欧美日韩大陆在线| 亚洲码国产岛国毛片在线| 欧美日本在线视频中文字字幕| 亚洲狼人在线| h视频免费观看| 亚洲欧洲av一区二区三区久久| 性欧美性free| 色8久久人人97超碰香蕉987| av资源中文在线| 国产免费一区二区三区| 久久99久久精品| 欧美亚洲福利| 最新中文字幕视频| 欧美二区三区在线| 亚洲欧美卡通动漫| 国产精品3区| 波多野结衣中文一区| 精品久久久久久中文字幕动漫| 一本久久a久久精品亚洲| 丰满少妇一区二区三区| 国产精品女视频| 国产伦理一区| 国产91精品在线观看| 91 com成人网| 欧美香蕉视频| 精品电影在线观看| 日产精品99久久久久久| 激情五月***国产精品| 日韩三级不卡| 亚洲精品第一区二区三区| 免费看的黄色录像| 亚洲视频免费播放| 国产普通话bbwbbwbbw| 日本一级黄色录像| 日韩五码在线| 中文字幕日韩专区| 日韩精品在线视频| 男男视频在线观看网站| 欧美激情 亚洲| 久久要要av| 国产一区二区精品在线观看| 91在线视频精品| 亚洲色图13p| 国产精品视频在线播放| 国产91对白刺激露脸在线观看| 白白在线精品| 青青草这里只有精品| 黄色精品一区二区| 欧美最大成人综合网| 波多野结衣中文字幕一区二区三区| 久久国产精品免费观看| 精品人妻一区二区三区四区不卡| 果冻天美麻豆一区二区国产| 日本一级黄色大片| av片在线观看永久免费| 成人精品一区二区三区| 国产一区精品视频| 中文字幕成人动漫| 国产精品丝袜91| 欧美日韩不卡在线| 国产九九九九九| 日韩毛片视频在线看| 天海翼精品一区二区三区| 五月激情丁香一区二区三区| 亚洲字幕在线观看| 久久精视频免费在线久久完整在线看| 97超碰在线免费| 精品一区91| 国产欧美不卡| caoporn97免费视频公开| 国产经典视频一区| 欧美老女人bb| 日韩三级久久久| 少妇一区二区三区四区| 区二区三区在线| 激情五月五月婷婷| 成人黄色国产精品网站大全在线免费观看| 欧美日韩国产一区| 亚洲 高清 成人 动漫| 国产日韩欧美视频在线| 中文字幕免费高清在线| 婷婷五月综合激情| 日本91福利区| 四虎国产成人永久精品免费| 国产又粗又猛又爽| 九九九久久久| 日韩激情视频在线播放| 久久久久女教师免费一区| 理论片在线观看理伦片| 亚洲成在人线av| 国产成人在线视频免费观看| 色一情一乱一伦一区二区三区丨| 精品欧美国产一区二区三区不卡| 成人免费毛片嘿嘿连载视频…| 久久婷婷五月综合色国产香蕉| 日韩电影免费网站| 亚洲成人第一网站| 日韩亚洲一区中文字幕| 91看片淫黄大片91| 在线观看亚洲a| www.日本久久久久com.| 欧美综合在线播放| 精品人伦一区二区三区蜜桃免费| yy1111111| 欧美极品少妇无套实战| 日本免费一区二区六区| 精品综合久久久久久8888| 日韩av手机在线观看| 国产成人午夜精品影院观看视频| 国产精品乱码久久久久久| 欧美日韩不卡合集视频| 亚洲美女屁股眼交3| 91成人在线免费观看| 天堂tv亚洲tv日本tv欧美人tv| 亚洲国产欧美不卡在线观看| 大片在线观看网站免费收看| 精品成人自拍视频| 中文字幕在线观看成人| 四虎国产成人精品免费一女五男| 性感小视频在线看免费| 欧美大胆的人体xxxx| 日韩a级片在线观看| 五月婷婷在线观看视频| 欧美午夜精品理论片a级大开眼界| 视频一区二区三区在线看免费看| 亚洲女子a中天字幕| 成人性生交大片免费看视频r| 国产91porn| 韩日欧美一区二区三区| 亚洲综合图片网| 亚洲成人三级在线| 国产老妇另类xxxxx| 超薄丝袜一区二区| 欧美性受xxxx黑人xyx性爽| 欧美bbxxx| 成人欧美一区二区三区的电影| 天堂中文在线观看视频| 久久久久久久久久久国产精品| 影音先锋在线视频| 涩涩视频在线观看免费| 欧美丝袜丝交足nylons| 激情综合五月| 欧美成人精品欧美一级私黄| 欧美一二三不卡| 日本亚洲三级在线| 国产日韩欧美在线观看| 美女极度色诱视频www免费观看| 国内爆初菊对白视频| 一女二男3p波多野结衣| 九九九久久久| 在线电影一区二区三区| 精品在线不卡| 热门国产精品亚洲第一区在线| 欧美黑人极品猛少妇色xxxxx| 国产日韩精品久久| 亚洲一区精品在线观看| 国产一区二区在线影院| 欧美色图在线视频| 国产图片一区| 一区二区三区在线视频111| 热久久99这里有精品| 欧美激情国产在线| 亚洲国产精品一| 亚洲成av人片在线观看无码|