LMT下表儲存引數的使用
這裡主要討論在LMT和DMT下某些儲存引數的設定的異同。
假設當前資料庫的DB_BLOCK_SIZE為D(K),建表的DDL設定了INITIAL為T,MINEXTENTS為S,PCTINCREASE為P,NEXT為N
本文的DB_BLOCK_SIZE=8K
1、字典管理
MIN_EXTENT:可以是大於0的任意整數
PCT_INCREASE:
INITIAL:,則如果建表時設定的INITIAL設定的值大於2*D,則實際INITIAL=CEIL(T/D)*D;如果建表時設定的INITIAL設定的值小於等於2*D,則實際INITIAL值為2*D。
如:EXP-1
create table test1
(
a number
)
tablespace system--字典管理表空間
storage
(
initial 1k
next 1k
minextents 4
pctincrease 20
);
在這個例子中,實際INITIAL為16K;
EXP-2
create table test2
(
a number
)
tablespace system--字典管理表空間
storage
(
initial 100k
next 100k
minextents 4
pctincrease 20
);
在這個例子中,實際的INITIAL=CEIL(100/8)*8=104
NEXT:
如果S=1,則實際的NEXT=CEIL(INITIAL*(1+P/100)/N)*N,其中INITIAL為實際值,而不是設定值;
如果S>1,則NEXT的實際值為S=1的情況下的第S+1個extent的值
EXP-3
create table test1
(
a number
)
tablespace system--字典管理表空間
storage
(
initial 100k
next 100k
minextents 1
pctincrease 20
);
在本例中,實際的NEXT=CEIL(104*1.2/8)*8=128
EXP-4
create table test1
(
a number
)
tablespace system--字典管理表空間
storage
(
initial 100k
next 100k
minextents 4
pctincrease 20
);
在本例中,實際的NEXT=192。
第二個EXTENT=INITIAL=104
SQL> select ceil(104*1.2/8)*8 from dual;(第3個EXTENT)
CEIL(124.8/8)*8
---------------
128
SQL> select ceil(128*1.2/8)*8 from dual;(第4個EXTENT)
CEIL(128*1.2/8)*8
-----------------
160
SQL> c/128/160
1* select ceil(160*1.2/8)*8 from dual;(第5個EXTENT)
SQL> /
CEIL(160*1.2/8)*8
-----------------
192
在本例中,NEXT=192K
2、本地管理
在建立表空間和建立表時,都可以設定storage引數。其中表的storage引數的優先順序大於表空間的引數。如果建表時沒有指定storage,則oracle會繼承表所對應的表空間的儲存引數。
INITIAL
LMT下,oracle在表空間一級不能設定NEXT, PCTINCREASE, MINEXTENTS, MAXEXTENTS,但在段一級可以設定這幾個引數(如在建表、索引的時候)。如果在段一級設定了這幾個引數,則這幾個引數將用來計算段的INITIAL值,此時段的INITIAL值將不是設定值,而是透過計算得到。
如果LMT表空間不是UNIFORM,則:
EXP-5
create table test
(
a number
)
storage
(
initial 100k
next 100k
minextents 4
pctincrease 100
);
該表所在表空間為本地管理的,這個表的實際的INITIAL為832K。
在LMT下,extent都是以64K為基本單位的,其初始的extent一般為64K。在本例中,MINEXTENTS為4,則前四個extent的實際大小分別為:
104K-104K-208K-416K(PCTINCREASE 100,參考DICT下INITIAL的計算方法)
所以,本例中INITIAL=104+104+208+416=832K。由於LMT下的EXTENT最小單位是64K,832剛好是64的倍數,所以oracle分配13個extents給INITIAL;如果計算得到的INITIAL不是64K的整數倍,oracle會按一下方法計算並分配:
CEIL(INITIAL/64)*64
如果LMT是UNIFORM(UNIT SIZE=16K),則
EXP-6
create table test
(
a number
)
tablespace t_uniform
storage
(
initial 100k
next 100k
minextents 4
);
則INITIAL=104+104+104+104=416,建表時oracle分配了26個extent給test
LMT下,PCTINCREASE, NEXT引數將不復存在(不能修改)[
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63744/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LMT和DMT下儲存引數的異同
- LMT和DMT下儲存引數的異同(轉)
- AIX HACMP使用EMC儲存時的引數修改AIACM
- 使用帶有輸出引數的儲存過程儲存過程
- mysql儲存過程的引數MySql儲存過程
- PHP 編譯引數儲存PHP編譯
- Solarwinds部分引數儲存
- 儲存過程的引數可以使用sql的函式儲存過程SQL函式
- 【儲存】megacli 常用引數介紹
- 帶輸出引數的儲存過程儲存過程
- 動態呼叫帶引數的儲存過程儲存過程
- 當儲存引數使用結構體時必備的開發技巧方式結構體
- .NET用使用儲存過程獲取輸出引數的程式碼示例!儲存過程
- SQL Server-儲存過程(Procedure),帶入引數和出引數SQLServer儲存過程
- Oracle帶輸入輸出引數的儲存過程Oracle儲存過程
- SQLSERVER儲存過程如何寫帶引數的遊標SQLServer儲存過程
- dos下呼叫帶輸出引數的儲存過程儲存過程
- MySQL 儲存過程引數IN OUT INOUT對比MySql儲存過程
- Java呼叫儲存過程(帶輸出引數)Java儲存過程
- oracle儲存過程將引數字串分割sqlOracle儲存過程字串SQL
- oracle實驗記錄 (storage儲存引數(1))Oracle
- oracle實驗記錄 (storage儲存引數(2))Oracle
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- 使用JAVA呼叫配方單儲存介面更新資料失敗, 使用了SaveParam引數Java
- go 如何呼叫 sqlserver 帶傳出引數的儲存過程GoSQLServer儲存過程
- SQL Server系統儲存過程和引數示例SQLServer儲存過程
- jdbctemplate呼叫儲存過程傳遞陣列引數JDBC儲存過程陣列
- linux 下c/c++ 使用shell命令並加入引數、儲存結果LinuxC++
- MySQL儲存過程in、out、inout引數示例與總結MySql儲存過程
- SQL Server系統儲存過程和引數總結SQLServer儲存過程
- 加速全球數字化轉型,HPE智慧儲存平臺引領新時代儲存變革
- 儲存過程輸入引數型別定義引起的問題儲存過程型別
- 求助:DB2 V7儲存過程引數限制DB2儲存過程
- [20140820]顯示儲存過程的引數.txt儲存過程
- 使用SQL Server儲存ASP.NET Session變數SQLServerASP.NETSession變數
- 資訊的儲存及整數表示
- Tensorflow儲存神經網路引數有妙招:Saver和Restore神經網路REST
- Mysql 儲存過程的使用MySql儲存過程