表空间的两种管理机制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表空间区的管理方式
LMT & DMT
LMT有两种方式控制区的大小:
autoallocate # 自动分配
uniform # 由DBA指定每个区的大小
区的分配机制
存储参数(storage parameters):用于控制段的空间分配,即如何给段分配空间。有两个级别的存储参数,表空间级别和表级别。表空间级别的存储参数是在创建表空间的时候指定的,用于定义该表空间中的表(段)的空间分配原则。表级别的存储参数是在创建表的时候定义表(段)的空间分配原则。
create tablespace sto1 datafile 'xxxx' size 10m default storage (initial 128k next 128k pctincrease 40 minextents 1 maxextents 999);
create table tbsto (
id number not null,
name varchar2(10) not null
) tablespace sto1
storage (initial 1m next 2m pctincrease 60 minextents 2 maxextents unlimited);
若建表时不指定存储参数,表将继承表空间的存储参数。
存储参数有:
initial # 表示分配给表(段)的初始区的大小
next # 指定第二个区的大小
pctincrease # 指定第三个及后续分配区的增长百分百
minextents # 指定创建表时,至少要分配多少个区给这个表(段)
maxextents # 指定可以给这个表(段)区的最大数量
如果表空间是LMT,可以指定区有统一的大小,也可以让Oracle决定后续的区大小。在创建表空间时,可以在extent management local中指定使用autoallocate和uniform来指定使用哪种分配方式。
autoallocate
createtablespacelmtbsbdatafile 'xxx' size 10m extent management local autoallocate;
用户不指定区的大小,区的大小由Oracle决定。与block_size和已分配的大小有关。uniform
createtablespacelmtbsbdatafile 'xxxx' size 10m extent management local uniform size 128k;
Oracle会自动分配大小相同的区(128k),所有区的大小相同。
区空间的释放
truncate table ... drop storage # 回收分配给一个段的区
alter table ... deallocate unused # 回收已经分配给一个段,但还未使用的区