Oracle中已经废弃和可能废弃的参数 – 存贮管理
Kaya 发表于 os2ora.com
Oracle总在不停的前进,于是,新的管理方式出现了,旧的管理方式慢慢地退出了历史舞台,与之相联系的参数也就慢慢的销声匿迹了。
这里要说的是空间管理方面。首当其冲的是Dictionary Managed Tablespaces。
在10g里,SYSTEM表空间默认是locally managed的,在这种情况下,dictionary managed tablespaces是不能被创建的。
所以,下面假定所有的叙述基于Locally Managed Tablespace。
对于Locally Managed Tablespace,有两个子选项:
EXTENT MANAGEMENT LOCAL
AUTOALLOCATE
UNIFORM SIZE 1M
AUTOALLOCATE指定让Oracle负责决定Extent的大小。一般的规则是先创建的extent比较小,后面创建的extent比较大。
UNIFORM指定让所有的Extent一样的大小。大小由后面的Size子句决定。
在SEGMENT SPACE MANAGEMENT方面,也有两种方式
SEGMENT SPACE MANAGEMENT
AUTO
MANUAL
AUTO指定用bitmap的方式管理free space。
Manual指定用freelists的方式管理free space。
于是,在创建表时, 根据这个表所在的表空间的类型,有些参数就显得过时了。
INITIAL, NEXT, PCTINCREASE, 和 MINEXTENTS这四个参数只是用来决定当一个对象创建时,要分配的extent的数量。之后,这些参数都被忽略。分配空间的大小等于INITIAL * MINEXTENTS。而MINEXTENTS的值默认为1,所以一般只用INITIAL就可以了。
MAXEXTENTS 不管在什么情况下都被忽略。
如果是采用SEGMENT SPACE MANAGEMENT AUTO,那么PCTUSED, FREELIST 和 FREELIST GROUPS都被忽略。
总结一下,
1. 对于ASSM, 只有两个参数可以/值得配置:PCTFREE, INITIAL
2. 对于MSSM,除了PCTFREE, INITIAL之外, PCTUSED, FREELIST 和 FREELIST GROUPS也可以配置。
从dictionary managed 到locally managed, 从MSSM再到ASSM,整个世界一下子清静下来了,或许从8i及以前版本升级上来的DBA会有更深的体会 ……

描述的很清楚,之前一直没有好好理解ASSM,MSSM 的区别,Ba主的解释就是点睛之笔,让人看完很容易理解。非常感谢。