LMT和DMT下存储参数的异同

假设当前数据库的DB_BLOCK_SIZE为D(K),建表的DDL设定了INITIAL为T,MINEXTENTS为S,PCTINCREASE为P,NEXT为N
本文的DB_BLOCK_SIZE=8K[@more@]假设当前数据库的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参数将不复存在(不能修改)

http://space6212.itpub.net/post/12157/230765

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/34329/viewspace-914978/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/34329/viewspace-914978/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值