校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 分享ORACLE SEQUENCE跳號總結(jié)

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

熱門標簽:區(qū)域地圖標注怎么設(shè)置 百度地圖標注飯店位置怎么 南通電銷外呼系統(tǒng)哪家強 外呼系統(tǒng)好點子 電話機器人那種好 上海網(wǎng)絡(luò)外呼系統(tǒng) 百度地圖標注注解 理財產(chǎn)品電銷機器人 地圖標注的坐標點

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

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

不管序列有沒有CACHE、事務(wù)回滾這種情況下,都會引起序列的跳號。如下實驗所示: 

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
----------
  3
SQL>

并發(fā)訪問序列引起的跳號 

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

會話窗口A: 

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

會話窗口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)造的實驗當中,你會看到序列的跳號情況。

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

實驗測試如下所示(序列的CACHE值必須大于0),當然正常情況下,很難遇到這種情況。 

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

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

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

SQL> select test.my_sequence.currval from dual;
 CURRVAL
----------
 17045
SQL> select object_id from dba_objects where object_name=upper('my_sequence');
 OBJECT_ID
----------
 97760
SQL> select increment$, minvalue, maxvalue,highwater, cache
 2 from seq$ where obj#=97760;
INCREMENT$ MINVALUE MAXVALUE HIGHWATER CACHE
---------- ---------- ---------- ---------- ----------
  1  1 99999 17085  40
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup;
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 1620115456 bytes
Fixed Size   2213816 bytes
Variable Size  1258293320 bytes
Database Buffers  352321536 bytes
Redo Buffers  7286784 bytes
Database 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 session
SQL> select test.my_sequence.nextval from dual;
 NEXTVAL
----------
 17085
SQL> 

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

SQL> select test.my_sequence.nextval from dual;
 NEXTVAL
----------
 17085
SQL> 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> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 1620115456 bytes
Fixed Size   2213816 bytes
Variable Size  1258293320 bytes
Database Buffers  352321536 bytes
Redo Buffers  7286784 bytes
Database 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 session
SQL> select test.my_sequence.nextval from dual;
 NEXTVAL
----------
 17086
SQL> 

Trace文件中有更新seq$數(shù)據(jù)字典表,如果你看過我這篇文章ORACLE中seq$表更新頻繁的分析,基本上就知道其實seq$中維護的是序列的一些信息。通過跟蹤文件,我們知道在數(shù)據(jù)庫正常關(guān)閉的情況下,會觸發(fā)一個update seq$的操作,把當前的sequence.nextval的值更新到seq$.highwater中,從而使得sequence在有cache的情況下,數(shù)據(jù)庫正常關(guān)閉未出現(xiàn)nextval跳躍(currval也同樣不跳躍);而在數(shù)據(jù)庫異常關(guān)閉之時,數(shù)據(jù)庫不能及時將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#=:1
END OF STMT
PARSE #25:c=0,e=21,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=1935744642,tim=1504236336294194
BINDS #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=97760
EXEC #9:c=999,e=709,p=0,cr=1,cu=2,mis=0,r=1,dep=1,og=4,plh=1935744642,tim=1504236336297033
CLOSE #9:c=0,e=2,dep=1,type=3,tim=1504236336297058
mealink上提到了使用dbms_shared_pool.keep將對象在鎖定在shared pool 中,永遠不釋放。這樣可以防止FLUSH SHARED POOL導(dǎo)致序列跳號,但是這個無法避免數(shù)據(jù)庫異常關(guān)閉或CRASH引起的跳號
SQL> select test.my_sequence.currval from dual;
 CURRVAL
----------
 17086
SQL> 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
----------
 17086
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 1620115456 bytes
Fixed Size   2213816 bytes
Variable Size  1258293320 bytes
Database Buffers  352321536 bytes
Redo Buffers  7286784 bytes
Database mounted.
Database opened.
SQL> select test.my_sequence.nextval from dual;
 NEXTVAL
----------
 17126

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

總結(jié)

以上所述是小編給大家介紹的分享ORACLE SEQUENCE跳號總結(jié),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • 詳解ORACLE SEQUENCE用法
  • Oracle中使用觸發(fā)器(trigger)和序列(sequence)模擬實現(xiàn)自增列實例
  • sqlserver實現(xiàn)oracle的sequence方法
  • Oracle創(chuàng)建自增字段--ORACLE SEQUENCE的簡單使用介紹
  • oracle sequence語句重置方介紹
  • Hibernate Oracle sequence的使用技巧
  • 通過實例了解Oracle序列Sequence使用方法

標簽:自貢 遼源 紹興 寧波 昭通 百色 中衛(wèi) 海東

巨人網(wǎng)絡(luò)通訊聲明:本文標題《分享ORACLE SEQUENCE跳號總結(jié)》,本文關(guān)鍵詞  分享,ORACLE,SEQUENCE,跳號,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《分享ORACLE SEQUENCE跳號總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于分享ORACLE SEQUENCE跳號總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    3751色影院一区二区三区| 不卡欧美aaaaa| 成人avav在线| 在线成人av网站| 自拍av一区二区三区| 国产一区二区久久| 欧美日韩精品欧美日韩精品一 | 在线成人免费视频| 国产欧美日韩亚州综合| 日本不卡高清视频| 欧美性受xxxx黑人xyx性爽| 国产日本欧洲亚洲| 久久精品国产久精国产| 欧美色综合网站| 亚洲女女做受ⅹxx高潮| 懂色av一区二区三区免费观看 | 久久91精品国产91久久小草| 国产福利电影一区二区三区| 日韩一区二区三区电影| 国产精品美女久久久久高潮| 黄一区二区三区| 在线不卡一区二区| 亚洲综合在线免费观看| 成人av在线观| 国产精品乱码久久久久久| 国产一区二区三区香蕉 | 久久综合狠狠综合久久综合88| 亚洲成av人在线观看| 91免费视频网| 亚洲一区欧美一区| 色欧美乱欧美15图片| 椎名由奈av一区二区三区| 91在线观看免费视频| 亚洲丝袜自拍清纯另类| 94色蜜桃网一区二区三区| 国产欧美精品一区| 国产一区二区在线观看视频| 日本一区二区三区高清不卡| 国产精品一区2区| 中文字幕第一区二区| 国产宾馆实践打屁股91| 欧美经典一区二区三区| 成人va在线观看| 国产精品毛片久久久久久久| thepron国产精品| 亚洲美女免费在线| 91精品国产综合久久香蕉麻豆| 欧美一区二区在线播放| 老色鬼精品视频在线观看播放| 欧美大度的电影原声| 国产毛片精品国产一区二区三区| 久久看人人爽人人| 国产三级精品三级| 久久精品在线免费观看| 久久久久久久久久久电影| 天堂资源在线中文精品| www.成人在线| 国产女主播在线一区二区| 国产婷婷色一区二区三区四区| 日韩中文字幕不卡| 99国产精品国产精品毛片| 精品国产乱码久久久久久闺蜜| 亚洲一区视频在线观看视频| 92精品国产成人观看免费| 欧美国产乱子伦| 中文字幕一区不卡| 国产精品综合久久| 麻豆中文一区二区| 亚洲在线免费播放| 奇米亚洲午夜久久精品| 一区二区在线观看不卡| 波多野结衣中文一区| 99re热视频精品| 国产精品日日摸夜夜摸av| 欧美日韩中文一区| 国产精品影视在线| 亚洲一区视频在线观看视频| 精品国产凹凸成av人网站| 97精品国产露脸对白| 天天影视涩香欲综合网| 国产午夜久久久久| 欧美日韩免费观看一区三区| 久久99精品国产| 一区二区免费视频| 国产丝袜在线精品| 欧美一区二区三区免费在线看| 成人黄页毛片网站| 免费成人结看片| 一区二区在线看| 国产精品理论片在线观看| 91精品国产一区二区三区| 99视频精品免费视频| 久久99久久久久| 午夜私人影院久久久久| 国产精品久久网站| 久久久一区二区| 欧美精品一区二区在线观看| 欧美日韩激情一区二区| 99久久久久久| 不卡电影一区二区三区| 国产mv日韩mv欧美| 激情深爱一区二区| av在线综合网| 国产成人av福利| 久久国内精品视频| 三级欧美在线一区| 亚洲国产精品一区二区www | 成人小视频在线观看| 久久国产尿小便嘘嘘尿| 国产香蕉久久精品综合网| 91精品在线麻豆| 欧美日韩国产成人在线免费| 色偷偷88欧美精品久久久| 91蜜桃在线免费视频| 91丨九色丨黑人外教| 91色|porny| 在线观看成人小视频| 91免费小视频| 欧美影院一区二区三区| 欧美午夜片在线看| 欧美久久久久久久久| 在线播放国产精品二区一二区四区| 在线观看成人小视频| 久久久亚洲精品石原莉奈| 国产黄色成人av| 亚洲一区国产视频| 国产精品婷婷午夜在线观看| 成人免费不卡视频| 中文字幕va一区二区三区| 欧美日韩高清一区二区三区| 天天综合日日夜夜精品| 色综合久久中文字幕| 精品一区二区三区免费视频| 亚洲激情男女视频| 日韩精品专区在线影院观看| 欧美日韩精品高清| 色老头久久综合| 99这里只有久久精品视频| 亚洲一区二区三区小说| 久久男人中文字幕资源站| 捆绑紧缚一区二区三区视频| 国产精品女人毛片| 久久精品国内一区二区三区| 国产精品久久二区二区| 国产一区在线观看视频| 欧美一区二区成人| 国产精品一卡二卡在线观看| 亚洲国产人成综合网站| 国产精品短视频| 国产精品久久久久久久蜜臀| 久久日韩粉嫩一区二区三区| 欧美一卡在线观看| 91精品免费在线| 4hu四虎永久在线影院成人| 91小视频免费观看| 国产在线精品一区二区三区不卡 | 欧美日韩国产一级| 99久久精品国产毛片| 成人国产亚洲欧美成人综合网| 成人免费视频caoporn| 国产激情91久久精品导航| 风间由美一区二区三区在线观看 | 欧美国产成人在线| 久久久精品中文字幕麻豆发布| 亚洲精品一区在线观看| 欧美日韩高清一区二区三区| 3atv在线一区二区三区| 欧美日韩一区二区在线视频| 欧美另类久久久品| 欧美一区二区三区男人的天堂| 日韩无一区二区| 精品成人在线观看| 精品播放一区二区| 中文字幕精品—区二区四季| 国产精品久久久久久妇女6080| 国产精品久久久久久久久图文区| 中文字幕一区三区| 亚洲一区二区3| 日本在线不卡视频一二三区| 亚洲成av人综合在线观看| 久久99久久精品欧美| 粉嫩aⅴ一区二区三区四区五区| 91色综合久久久久婷婷| 欧美日韩卡一卡二| 久久综合狠狠综合| 国产精品国产a| 亚洲大片一区二区三区| 国内精品久久久久影院色| 99精品国产91久久久久久| 91精品视频网| 国产精品国产精品国产专区不蜜 | 7777精品伊人久久久大香线蕉超级流畅| 7777精品伊人久久久大香线蕉| 日本一区二区免费在线| 亚洲第一二三四区| 国产麻豆视频一区| 欧美日韩精品一区二区天天拍小说 | 亚洲国产精品视频| 国产成人亚洲综合a∨婷婷| 一本色道久久综合狠狠躁的推荐|