婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

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

事務回滾引起的跳號 

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

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會導致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)閉導致跳號

如下實驗所示,當數(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導致跳躍的情況 

=====================
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導致序列跳號,但是這個無法避免數(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è)務允許,單號出現(xiàn)跳號也無所謂的情形最好,如果碰到業(yè)務要求絕對不能出現(xiàn)單號出現(xiàn)跳號的情況,那么就不能使用序列號了,就必須使用其它替代方案,此處不做展開說明!

總結(jié)

以上所述是小編給大家介紹的分享ORACLE SEQUENCE跳號總結(jié),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(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)絡通訊聲明:本文標題《分享ORACLE SEQUENCE跳號總結(jié)》,本文關(guān)鍵詞  分享,ORACLE,SEQUENCE,跳號,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《分享ORACLE SEQUENCE跳號總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于分享ORACLE SEQUENCE跳號總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产乱色国产精品免费视频| 91黄色免费观看| 91猫先生在线| 综合欧美亚洲日本| 成人国产电影网| 国产日产欧美一区二区视频| 国产又黄又大久久| 国产精品欧美久久久久无广告| 国产老肥熟一区二区三区| 久久综合久久鬼色| 波多野结衣中文一区| 一二三区精品视频| 欧美一区二区在线免费观看| 国产一本一道久久香蕉| 亚洲欧洲日本在线| 欧美精品xxxxbbbb| 韩国理伦片一区二区三区在线播放 | 日韩欧美一级精品久久| 蜜桃av一区二区三区电影| 久久综合成人精品亚洲另类欧美| 国产成人精品一区二| 亚洲精品国产无套在线观| 欧美老肥妇做.爰bbww| 麻豆国产91在线播放| 国产婷婷色一区二区三区四区| 99在线热播精品免费| 天天av天天翘天天综合网色鬼国产 | 在线观看一区不卡| 日本不卡一区二区三区高清视频| 精品福利一区二区三区免费视频| 成人蜜臀av电影| 免费成人美女在线观看| 国产精品久久免费看| 日韩视频免费直播| 色国产综合视频| 国产精品99久| 免费一级欧美片在线观看| 亚洲天堂av一区| 欧美mv日韩mv国产网站app| 99re成人精品视频| 国产高清不卡一区二区| 日韩高清在线一区| 亚洲男人的天堂在线观看| 精品少妇一区二区三区免费观看| 在线精品视频免费观看| 懂色一区二区三区免费观看| 日本在线播放一区二区三区| 亚洲精品一二三| 日本一区二区久久| 精品久久久久久久久久久院品网| 欧美日韩在线播放三区四区| 99久久精品国产网站| 国产一区视频导航| 国产在线精品一区在线观看麻豆| 亚洲bt欧美bt精品| 亚洲在线观看免费| 国产精品少妇自拍| 亚洲国产精品ⅴa在线观看| 精品毛片乱码1区2区3区| 日韩欧美中文一区二区| 欧美一区二区三区四区视频 | 日韩欧美的一区二区| 欧美日韩亚洲不卡| 欧美猛男超大videosgay| 欧美日韩在线播放三区四区| 91福利在线免费观看| 一本色道久久综合亚洲aⅴ蜜桃| 国产91丝袜在线播放0| 国产99久久久国产精品| 国产成人在线色| 成人精品电影在线观看| jizzjizzjizz欧美| 在线免费观看不卡av| 欧美在线视频不卡| 91精品国产乱码| 久久亚洲精华国产精华液| 久久久午夜精品| 日韩一区在线免费观看| 夜夜爽夜夜爽精品视频| 天堂精品中文字幕在线| 免费欧美在线视频| 国产成人综合在线观看| 色呦呦一区二区三区| 欧美曰成人黄网| 日韩区在线观看| 欧美国产日本韩| 亚洲国产精品欧美一二99| 免费观看久久久4p| 国产91清纯白嫩初高中在线观看| 91丝袜美女网| 日韩午夜在线观看| 国产精品嫩草影院com| 亚洲综合在线第一页| 日韩电影一区二区三区| 大美女一区二区三区| 欧美三级日韩在线| 欧美成人午夜电影| 一区二区三区美女视频| 久久国产精品免费| 99精品在线免费| 日韩三级精品电影久久久| 中文字幕在线一区| 日韩av中文字幕一区二区三区| 国产jizzjizz一区二区| 欧美日韩成人综合天天影院| 久久久午夜精品| 亚洲第一成人在线| av一本久道久久综合久久鬼色| 日韩一区二区在线观看视频| 亚洲欧美综合色| 国产精品中文字幕日韩精品 | 欧美一级片免费看| 中文字幕一区二区三区视频| 精品一区二区三区在线播放视频 | 91免费看视频| 欧美精品一区二区三区蜜桃| 亚洲综合色噜噜狠狠| 成人综合日日夜夜| 精品国产乱码久久久久久牛牛 | 色婷婷综合激情| 久久久久久久精| 久久er精品视频| 777久久久精品| 亚洲伊人伊色伊影伊综合网| 色综合久久久久综合| 亚洲天堂免费看| 成人av资源下载| 欧美国产日韩一二三区| 国产一区二区精品在线观看| 精品国产一区久久| 日韩精品乱码免费| 69精品人人人人| 日本亚洲三级在线| 欧美久久久一区| 午夜欧美在线一二页| 欧美综合欧美视频| 午夜精品久久久久久久蜜桃app| 欧美亚洲国产bt| 国产精品剧情在线亚洲| 懂色av一区二区夜夜嗨| 国产网站一区二区| 国产一区二区三区免费| 久久美女艺术照精彩视频福利播放| 免费成人结看片| 久久综合色之久久综合| 奇米四色…亚洲| 日韩欧美亚洲一区二区| 精品一区二区在线看| 国产欧美日韩另类一区| 风间由美性色一区二区三区| 国产视频在线观看一区二区三区 | 国产一区二区三区观看| 337p粉嫩大胆色噜噜噜噜亚洲| 久久国产精品72免费观看| 精品国产成人系列| 成人午夜免费电影| 性感美女极品91精品| 日韩无一区二区| 国产成人av福利| 一区二区激情小说| 欧美一级片免费看| 成人国产精品视频| 亚洲一二三区不卡| 欧美成人三级电影在线| 国产91清纯白嫩初高中在线观看| 亚洲免费观看高清在线观看| 色偷偷成人一区二区三区91| 亚洲bt欧美bt精品| xf在线a精品一区二区视频网站| 成人app软件下载大全免费| 一区二区欧美在线观看| 欧美一区三区二区| 9i看片成人免费高清| 日韩高清不卡一区二区三区| 国产三级欧美三级| 欧美三级韩国三级日本三斤| 狠狠色丁香婷婷综合| 一区二区三区波多野结衣在线观看| 欧美一区二区成人| gogogo免费视频观看亚洲一| 首页国产丝袜综合| 中文字幕不卡一区| 欧美mv日韩mv亚洲| 欧美日韩综合色| 99国产精品久久久久久久久久| 蜜臀av一区二区在线观看| 一区二区三区中文免费| 精品乱码亚洲一区二区不卡| 欧美性受极品xxxx喷水| 成人动漫一区二区| 国产在线视视频有精品| 午夜精品成人在线视频| 亚洲免费大片在线观看| 国产欧美日韩久久| 久久久青草青青国产亚洲免观| 884aa四虎影成人精品一区| 91啦中文在线观看| 成人动漫一区二区三区| 国产成人自拍高清视频在线免费播放| 日韩 欧美一区二区三区|