欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 分享ORACLE SEQUENCE跳號總結

分享ORACLE SEQUENCE跳號總結

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

在ORACLE數據庫中,序列(SEQUENCE)是使用非常頻繁的一個數據庫對象,但是有時候會遇到序列(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>

并發訪問序列引起的跳號 

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

會話窗口A: 

exec dbms_lock.sleep(2); --延遲2秒執行,根據你實驗情況調整
/
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; 

 如下所示,我構造的實驗當中,你會看到序列的跳號情況。

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

數據庫實例異常關閉導致跳號

如下實驗所示,當數據庫使用shutdown abort命令關閉后,重新啟動實例,序列緩存在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> 

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

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$數據字典表,如果你看過我這篇文章ORACLE中seq$表更新頻繁的分析,基本上就知道其實seq$中維護的是序列的一些信息。通過跟蹤文件,我們知道在數據庫正常關閉的情況下,會觸發一個update seq$的操作,把當前的sequence.nextval的值更新到seq$.highwater中,從而使得sequence在有cache的情況下,數據庫正常關閉未出現nextval跳躍(currval也同樣不跳躍);而在數據庫異常關閉之時,數據庫不能及時將sequence.nextval更新到eq$.highwater從而引起sequence cache中的值丟失,從而可能出現了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導致序列跳號,但是這個無法避免數據庫異常關閉或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

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

總結

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

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

標簽:自貢 遼源 紹興 寧波 昭通 百色 中衛 海東

巨人網絡通訊聲明:本文標題《分享ORACLE SEQUENCE跳號總結》,本文關鍵詞  分享,ORACLE,SEQUENCE,跳號,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《分享ORACLE SEQUENCE跳號總結》相關的同類信息!
  • 本頁收集關于分享ORACLE SEQUENCE跳號總結的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    熟女少妇一区二区三区| 91精品国产综合久久福利| 26uuu精品一区二区在线观看| 日韩写真欧美这视频| 亚洲一区二区三区四区在线免费观看 | 国产欧美精品区一区二区三区| 椎名由奈av一区二区三区| 国产精品一区二区在线观看网站 | 色婷婷av一区二区三区之一色屋| 337p亚洲精品色噜噜| 亚洲成人免费视频| 91精品国产高清91久久久久久| www色com| 久久久久97国产精华液好用吗| 一区二区久久久久久| 国产老头和老头xxxx×| 欧美日韩亚洲不卡| 天天影视色香欲综合网老头| 影音先锋黄色资源| 欧美大片一区二区三区| 精品一区二区三区免费毛片爱 | 色婷婷综合久久久中文字幕| **网站欧美大片在线观看| 99久久婷婷国产综合精品| 男的操女的网站| 一区二区三区小说| 日本不卡视频一区| 精品欧美久久久| 国产在线精品免费av| 娇小11一12╳yⅹ╳毛片| 中文字幕一区二区日韩精品绯色| 麻豆成人久久精品二区三区小说| 91蝌蚪国产九色| 欧美精三区欧美精三区| 蜜桃视频一区二区| 国产一区二区三区精品在线| 中文字幕乱码一区二区免费| 91视频com| 欧美一级搡bbbb搡bbbb| 国产在线播放一区二区三区| 黑鬼狂亚洲人videos| 一区二区三区高清在线| 日本japanese极品少妇| 久久久蜜桃精品| 97se狠狠狠综合亚洲狠狠| 在线91免费看| 国产一区二区美女| 欧美自拍偷拍午夜视频| 蜜桃视频免费观看一区| 四虎永久免费在线| 日韩综合小视频| 99热在线观看精品| 亚洲国产综合在线| 欧美激情 一区| 亚洲精品免费在线播放| 日本激情小视频| 中文字幕亚洲区| 一起草在线视频| 国产精品久久久久久久久图文区| 国产精品一品视频| 欧美无砖专区一中文字| 七七婷婷婷婷精品国产| 国产suv一区二区三区| 午夜精品久久久久久久久久| 蜜桃av.com| 午夜视频久久久久久| 中文字幕求饶的少妇| 香蕉影视欧美成人| 成人做爰视频网站| 日韩电影在线免费| 一本久道中文字幕精品亚洲嫩| 综合欧美一区二区三区| 成人无码www在线看免费| 国产精品初高中害羞小美女文| 高清视频一区二区| 日韩午夜在线观看视频| 99久久精品费精品国产一区二区| 色哟哟一区二区在线观看 | 国产伦理片在线观看| 亚洲精品福利视频网站| 国产成人免费观看网站| 亚洲精品国产a| 国产三级精品三级观看| 日韩成人精品在线| 欧美亚洲免费在线一区| 国产在线精品一区二区三区不卡 | 在线观看黄网址| 人人超碰91尤物精品国产| 色成人在线视频| 国产精品一区二区黑丝| 91精品国产综合久久久蜜臀图片| 久久精品国产亚洲a| 欧美日韩另类一区| 成人激情免费网站| 国产婷婷色一区二区三区四区| 99热精品一区二区| 久久精品一区二区三区四区| 欧美一区二区免费在线观看| 亚洲乱码国产乱码精品精98午夜| av电影在线播放| 亚洲欧美日韩电影| 狂野欧美性猛交| 久久爱另类一区二区小说| 欧美一区二区美女| 天天躁日日躁狠狠躁免费麻豆| 久久久久久夜精品精品免费| 欧美做受喷浆在线观看| 亚洲成人第一页| 欧美日韩国产天堂| 国产调教打屁股xxxx网站| 亚洲人成小说网站色在线| 五月天激情丁香| 国产aⅴ综合色| 国产人成亚洲第一网站在线播放 | 成人av影视在线观看| 国产亚洲va综合人人澡精品| 中文字幕在线看高清电影| 日本美女视频一区二区| 欧美一区二区三区视频在线观看 | 精品国产乱码久久久久久久| 97香蕉碰碰人妻国产欧美 | 精品久久五月天| 性活交片大全免费看| 亚洲综合区在线| 欧美日韩国产高清一区| 亚洲熟妇一区二区| 亚洲国产aⅴ成人精品无吗| 欧美日韩免费一区二区三区| 一级全黄裸体片| 五月开心婷婷久久| 日韩三级视频在线看| 黄色国产在线观看| 捆绑紧缚一区二区三区视频| 精品处破学生在线二十三| 夜夜春很很躁夜夜躁| 国内精品久久久久影院色| 国产亚洲婷婷免费| 成人在线观看高清| 波多野结衣亚洲| 一区二区三区不卡在线观看 | 美女被艹视频网站| 一个色综合av| 51久久夜色精品国产麻豆| 亚洲精品乱码久久| 久久成人精品无人区| 国产亚洲欧美中文| 九九热最新地址| 日本成人在线免费| 日本中文字幕一区二区视频| www成人在线观看| 中文字幕无码日韩专区免费| 成人a级免费电影| 亚洲主播在线播放| 欧美大片一区二区| 中文字幕乱码av| 男人操女人下面视频| 日韩综合一区二区| 国产亚洲精品久| 在线中文字幕一区| 中文字幕在线观看的网站| 国产在线视频不卡二| 亚洲视频香蕉人妖| 777久久久精品| 少妇太紧太爽又黄又硬又爽小说 | 国产ts人妖一区二区| 亚洲欧洲日产国码二区| 欧美日韩黄色影视| 精品无码在线观看| 99热精品国产| 日本不卡不码高清免费观看| 国产日韩av一区| 欧美日韩国产另类一区| 国产一二三四五区| 99精品国产91久久久久久| 肉色丝袜一区二区| 国产精品无圣光一区二区| 欧美性受xxxx| 色欲AV无码精品一区二区久久| 精品一区二区成人精品| 亚洲精品免费电影| 精品国产乱码久久久久久老虎 | 亚洲最新视频在线观看| 欧美一区二区精品| 91精品一区二区三区蜜桃| 亚洲啪av永久无码精品放毛片 | 在线一区二区三区四区五区 | 国产日韩视频一区| 韩国成人福利片在线播放| 亚洲欧美日韩国产另类专区| 日韩三区在线观看| 色婷婷av一区| 日本乱子伦xxxx| 成人三级做爰av| 国产伦精品一区二区三区在线观看| 欧美激情一区不卡| 欧美一区二区三区视频在线 | 亚洲一区成人在线| 国产日韩欧美高清在线| 91精品免费在线观看| 色综合天天性综合|