在Oracle数据库中,用户在创建表、表空间、回滚段、索引、分区、快照和快照日志时都可以指定相应的Storage参数,其具体形式和含义如下:
STORAGE ( INITIAL integer [K/M]
NEXT integer [K/M]
MINEXTENTS integer
MAXEXTENTS integer/UNLIMITED
PCTINCREASE integer
FREELISTS integer
FREELIST GROUPS integer
OPTIMAL [integer K/M | NULL]
BUFFER_POOL [ KEEP | RECYCLE | DEFAULT ]
)

1.INITIAL:为Segment分配的第一个Extent的大小,以字节为单位,这个参数不能在alter语句中改变,如果指定的值小于最小值,则按最小值创建(DEFAULT:5/MIN:2)。


2.NEXT:为Segment分配的第二个Extent的大小等于NEXT的初值,之后的NEXT值的变化规律为:NEXT[n]=NEXT[n-1]*(1+PCTINCREASE/100)如果指定的值小于最小值,则按最小值创建。如果在alter语句中改变NEXT的值,则下一个分配的Extent将具有指定的大小,而不管上一次分配的Extent大小和PCTINCREASE参数值(DEFAULT:5/MIN:1)。


3.MINEXTENTS:在Segment第一次创建时分配的Extent数量(DEFAULT:1/MIN:1 | UNDO·DEFAULT:2/MIN:2)。


4.MAXEXTENTS随着Segment中数据量的增长,最多可分配的Extent的数量(MIN:1 | UNDO·MIN:2)。


5.PCTINCREASE:每次为Segment分配的Extent大小所增加的百分比(Initial,Next,[3]),如果PCTINCREASE为0,则Segment中所有新增加的Extent的大小都相同,等于NEXT的值;如果PCTINCREASE大于0,则每次计算NEXT的值(用上面的公式),并且PCTINCREASE不能为负数。在创建回滚段时,不可以指定此参数,回滚段中此参数固定为0(DEFAULT:50%/MIN:0%)。


6.FREELISTS:只能在CREATE TABLECLUSTERINDEX时指定FREELISTS和FREELIST GROUPS参数。用来指定对象存储管理属性中每一个FREELIST GROUPS中FREELISTS的数量



  7. FREELIST GROUPS 用户创建的数据库对象的FREELIST  GROUPS的数量,只有用OPS并行服务器/RAC选项时才可以使用这一参数,一个INSTANCE对应一个FREELIST  GROUPS


8.BUFFER_POOL:为数据库对象定义的缺省缓冲池(高速缓存),该对象的所有块都存储在指定的高速缓存中,对于表空间或回滚段无效


  9.OPTIMAL:用来指定回滚段的最优大小,当回滚段因为增长、扩展而超过此参数的设定值时,Oracle系统会根据情况动态地重新分配Extents,回收多分配的Extent。


   #  Oracle建议将PCTINCREASE参数设置为0,可使碎片最小化,使每一个Extent都相同(等于NEXT值)。另外,一旦创建了某个对象后,其INITIAL和MINEXTENTS参数是不能被修改的。  


   用户可以通过数据字典表DBA_TABLESALL_TABLESUSER_TABLES查看具体参数的设置情况,如:
   SQL> CREATE TABLE USERINFO(name  varchar2(8)) STORAGE( INITIAL 100K NEXT 100K MINEXTENTS 2 MAXEXTENTS 100 PCTINCREASE 100);  
  SQL>  select table_name,initial_extent,next_extent,min_extents,max_extents,pct_increase from user_tables;
  TABLE_NAME INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE
  ---------- -------------- ----------- ----------- ----------- ------------
  USERINFO   106496         212992       2           100         100