ORACLE SEQUENCE跳號總結

来源:http://www.cnblogs.com/kerrycode/archive/2017/09/01/7461180.html
-Advertisement-
Play Games

在ORACLE資料庫中,序列(SEQUENCE)是使用非常頻繁的一個資料庫對象,但是有時候會遇到序列(SEQUECNE)跳號(skip sequence numbers)的情形,那麼在哪些情形下會遇到跳號呢? 事務回滾引起的跳號 不管序列有沒有CACHE、事務回滾這種情況下,都會引起序列的跳號。如下... ...


 

    在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.
 
SQLcreate 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> 

clip_image001

 

 

併發訪問序列引起的跳號

 

 

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

 

會話視窗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; 

 

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

 

 

clip_image002

 

 

 

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

 

 

clip_image003

 

 

資料庫實例異常關閉導致跳號

 

 

如下實驗所示,當資料庫使用shutdown abort命令關閉後,重新啟動實例,序列緩存在shared pool裡面沒有用過的值都沒有了。一下子從17045跳到17085

 

SQL> select test.my_sequence.currval from dual;
	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 引言:交互的概念是很難用語言描述的,怎樣才能讓一個抽象的想法得到充分溝通和測試呢?一個原型工具就能回答這個問題。 原型是一個想法成為App或者網頁的旅途上的伴侶。一個建築師不會從一開始就去挖地下室,他會在繪製完草圖後,一步一步地設計電腦上的和真實的模型,並且反覆地測試和修訂。同樣平面設計師也會在UI ...
  • 最近在做一個Toolbar,setNavigationIcon()這個方法一直無效,說什麼的都有,什麼getSupportActionBar().setNavigationIcon()的,說設置style的,說放到setSupportActionBar()之後的。 其實沒有說全,還應該放到Drawe ...
  • 1. RNN迴圈神經網路 1.1 結構 迴圈神經網路(recurrent neural network,RNN)源自於1982年由Saratha Sathasivam 提出的霍普菲爾德網路。RNN的主要用途是處理和預測序列數據。全連接的前饋神經網路和捲積神經網路模型中,網路結構都是從輸入層到隱藏層再 ...
  • 1. Iris data set Iris數據集是常用的分類實驗數據集,由Fisher, 1936收集整理。Iris也稱鳶尾花卉數據集,是一類多重變數分析的數據集。數據集包含150個數據集,分為3類,每類50個數據,每個數據包含4個屬性。可通過花萼長度,花萼寬度,花瓣長度,花瓣寬度4個屬性預測鳶尾花 ...
  • 摘要: http://www.cloudera.com/content/cloudera-content/cloudera-docs/Impala/latest/Installing-and-Using-Impala/ciiu_langref_sql.html Impala SQL 語言元素(Ele ...
  • 記錄自己在開發中只用一次,但是容易忘記的問題,PL/SQL-ORACLE配置遠程資料庫訪問: 1,下載PL/SQL連接工具,鏈接: https://pan.baidu.com/s/1kVeeLNp 密碼: u2hi 2,解壓壓縮包,配置instantclient_11_2里的tnsnames.ora ...
  • Greenplum(GP)採用了MPP架構,基於開源的資料庫 PostgreSQL(PG)。 1.首先什麼是MPP架構? GreenPlum的架構採用了MPP(大規模並行處理)。在 MPP 系統中,每個 Segment 節點也可以運行自己的操作系統、資料庫等。換言之,每個節點內的 CPU 不能訪問另 ...
  • 一、HBase介紹 1、基本概念 HBase是一種Hadoop資料庫,經常被描述為一種稀疏的,分散式的,持久化的,多維有序映射,它基於行鍵、列鍵和時間戳建立索引,是一個可以隨機訪問的存儲和檢索數據的平臺。HBase不限制存儲的數據的種類,允許動態的、靈活的數據模型,不用SQL語言,也不強調數據之間的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...