1. INITIAL
对于字典管理表空间来说,INITIAL用于指定段所分配的第一个区的尺寸。对于本地管理表空间来说,如果MINEXTENTS等于1,数据库会使用INITIAL和区尺寸确定段的初始尺寸。假定本地管理表空间的区尺寸为5M,如果INITIAl为1M,那么会分配一个5M的区。如果INITIAL为7M,则分配两个5M的区。INITIAL只能在建立对象时设置,不能使用ALTER语句进行修改。
CREATE TABLE t1(cola INT) TABLESPACE user01
STORAGE(INITIAL 500k);
说明:使用user01表空间,假定user01创建时使用UNIFORM选项,并且区尺寸为128K.则t1表的段初始尺寸为500K。
2. NEXT
对于本地管理表空间来说,因为数据库可以自动管理区,所以该参数没有太大意义。对于字典管理表空间来说,NEXT用于指定为段所分配的第二个区的尺寸。
3. PCTINCREASE
对于本地管理表空间来说,因为数据库可以自动管理区,所以该参数没有太大意义。对于字典管理表空间来说,该参数可以指定从第三个区开始,每个区比前一个区所增长的百分比。
4. MINEXTENTS
对于本地管理表空间来说,因为数据库可以自动管理区,所以该参数没有太大意义。对于字典管理表空间来说,MINEXTENTS用于指定为段所分配的初始区个数。
5. MAXEXTENTS
对于本地管理表空间来说,因为数据库可以自动管理区,所以该参数没有太大意义。对于字典管理表空间来说,MINEXTENTS用于指定段可包含的最大区个数。
6. FREELIST GROUPS
FREELIST GROUPS用于指定对象的空闲列表组个数,每个空闲列表组会占用一个数据块。Oracle建议为Oracle Real Application Cluster的每个例程指定一个空闲列表组。需要注意,FREELIST GROUPS只能在段级指定。
7. FREELISTS
FREELISTS用于指定每个空闲列表组上的空闲列表个数,空闲列表用于维护可插入数据的数据块。需要注意,FREELISTS只能在段级指定。
8. 假定建立字典管理表空间user02时,指定默认存储参数INITIAL和NEXT均为10K,PCTINCREASE为50.下面以建立表t2为例,说明在字典管理表空间上这些存储参数的作用。
CREATE TABLE t2(cola int) TABLESPACE user02
STORAGE(NEXT 20K MINEXTENTS 4);
执行以上语句后,Oracle会建立表T1,并且为其分配尺寸为110K的表段t2。因为MINEXTENTS为4,所以段T1包含四个区;因为建表时未指定INITIAL,所以第一个区会使用表空间的默认存储参数:10K。第二个区区20K,第三区:30K,第四区:50K。
9. 显示已分配区
建立数据对象时,Oracle会为数据对象分配相应的段。段是由一个或多个区组成的,并且一个区只能存放在一个数据文件上,而同一个段的不同区可以放在不同数据文件上。通过查询数据字典视图dba_extents,可以取得已分配区的详细信息。
SELECT extent_id,file_id,block_id,bytes
FROM dba_extents
WHERE owner=’SYS’ AND segment_name=’T1’;
10. 显示空闲区
当在表空间上建立数据对象时,Oracle会在表空间的剩余空间中位相应段分配空间。当段不足以容纳更多数据时,Oracle会通过分配去来扩展段。随着时间的推移,将导致表空间的剩余空间越来越少。
SELECT sum(bytes)FROM dba_free_space
WHERE tablespace_name=’USER01’;