使用sequence的cache特性時要注意的
我們在使用sequence時為了提升效能通常都會使用sequence的cache功能,但是潛在的危險就是例項crash或者由於shared pool碎片較多容易出現ora-04031錯誤時,此時我們都會想到alter system flush shared pool...flush之後cache的sequence值全部丟失從而造成序列不連續...
[@more@]--事先建立一個序列
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
1
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
2
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
3
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
4
--在flush shard poo之後很明顯被cache的sequence值全部丟失了
SQL> alter system flush shared_pool;
系統已更改。
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
21
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
22
--為了保證能不丟失被cache的sequence值,那麼在flush shared pool之前最好使序列暫時nocache
SQL> alter sequence seq_test nocache;
序列已更改。
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
23
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
24
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
25
SQL>
--如果既想使用序列的cache功能還想使flush shared pool使cached sequence值不丟失,此時可以把這個squence keep在shared pool中
SQL> alter sequence seq_test cache 20;
序列已更改。
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
26
SQL> alter system flush shared_pool;
系統已更改。
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
46
SQL> exec dbms_shared_pool.keep('seq_test','Q')
PL/SQL 過程已成功完成。
SQL> col name format a10
SQL> select name,kept from v$db_object_cache where name='SEQ_TEST';
NAME KEP
---------- ---
SEQ_TEST YES
SQL> alter sequence seq_test cache 30;
序列已更改。
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
47
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
48
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
49
SQL> alter system flush shared_pool;
系統已更改。
SQL> select seq_test.nextval from dual;
NEXTVAL
----------
50
SQL>
--顯然keep在shared pool裡面之後再flush shared pool被cache 的sequence值就不會丟失了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-1028567/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中sequence cache的測試Oracle
- Oracle 12c新特性之Sequence的Session特性OracleSession
- Oracle Sequence Cache 引數說明Oracle
- Oracle中Sequence的使用Oracle
- 建立Materialized view log時是否使用sequence clause的差別ZedView
- oracle中sequence使用的限制Oracle
- SQL Query Result Cache的使用和配置--Oracle 11G新特性SQLOracle
- Oracle中sequence的使用方法Oracle
- 關閉資料庫會導致cache的sequence值丟失嗎?資料庫
- Oracle Sequence不設定cache引數的幾個潛在問題Oracle
- 使用flashback database 特性時遇到的錯誤Database
- jQuery中使用$.each()遍歷陣列時要注意的地方jQuery陣列
- 三,ES6中需要注意的特性(重要)
- [轉載] 使用String.split方法時要注意的問題
- 在 jdon 框架中使用日期型別時要注意的問題框架型別
- 需要注意的unix命令使用
- 建設網站時需要注意的網站
- 租用伺服器時需要注意的伺服器
- 【11gR2新特性】result cache 的三種模式模式
- 11G result cache新特性的更多深入研究
- 使用blueZ進行藍芽程式設計時需要注意的問題藍芽程式設計
- 安裝rac時需要注意的問題
- link流程 建立時需要注意的地方
- 轉_Buffer Cache的原理及使用
- 兩個cache:CCTextureCache、CCSpriteFrameCache的使用
- 使用SequenceFile儲存BytesWritable型別時要注意型別
- 11gR2新特性之二 - Flash Cache 的SSD支援
- 在使用微軟提供的安全模版(安全策略)時需要注意的安全問題 (轉)微軟
- 除錯使用了函式模組的程式時需要注意的一個小問題除錯函式
- 在Hibernate中關於Oracle sequence的使用KHOracle
- sequence to sequence模型模型
- Oracle 11g新特性:Result CacheOracle
- oracle的scn及sequenceOracle
- margin-top使用需要注意的地方
- Python import 時要注意的幾個問題PythonImport
- 運用mysqldump 工具時需要注意的問題MySql
- springMVC的@ResponseBody、@RequestBody使用需要注意的地方SpringMVC
- 新的Oracle時間資訊特性Oracle