分类: Oracle
2008-03-13 18:40:39
Oracle 9i对于表空间管理一个明显的变化是改数据字典管理(extent management dictionary)为表空间本地管理(extent management local),还可以根据建立的数据对象对空间的要求自动确定扩展块的大小(autoallocate),最小为64K,这两项都是创建表空间的缺省选项。
create tablespace tbsdata datafile '…' [ extent management local ] [ autoallocate ];
而对于指定每个扩展块大小的创建策略,设立了新选项:统一扩展块大小(uniform [size xxx[K|M]]),可覆盖autoallocate选项,如果不加上具体的size xxx[K|M],缺省为1M,这样就不必考虑Oracle 8i中的如initial,next,pctincrease,maxextents等default storage参数应如何组合,事实上Oracle 8i的这些设置原本就没有什么意义。
不能够同时指定extent management local和default storage,换言之,default storage只能和extent management dictionary一起显式指定。
如果未指定extent management的类型,Oracle 9i缺省使用local方式,如果又同时使用default storage选项,就有以下的判断:
如果使用minimun extent,Oracle检查是否minumum extent=initial=next且pctincrease=0,如是,Oracle使用uniform选项,size=initial;如不是,Oracle忽略指定选项,使用autoallocate。
如果未指定minimum extent,Oracle检查是否initial=next且pctincrease=0,如是Oracle使用uniform选项,size=initial;如不是Oracle忽略指定选项,使用autoallocate。
为了避免与Oracle 8i的习惯做法混淆,建议只使用Oracle 9i较简洁的方法。
对于存储少量静态数据的表空间来说,如配置信息等,可简单地写为:
create tablespace tbsdata datafile '…';
对于必须关心其扩展块大小的表空间,如大批量的记录或索引,可简单地写为:
create tablespace tbsdata datafile '…' uniform size 10M;