从10g开始,对创建tablespace, Oracle强制使用locally management的管理方式,用dictionary 的管理方式只是用于针对向下兼容. 做个简单的测试如下 :
SQL> create tablespace test2
2 datafile size 10m
3 extent management dictionary;
create tablespace test2
*
ERROR at line 1:
ORA-12913: Cannot create dictionary managed tablespace
Dictionary-managed tablespace的管理方式是通过系统表来管理, 它相关的信息是存在data dictionary中的, 那就是说对于空间使用的变化情况都需要通过更新
data dictionary中相关的表来进行跟踪. 所以在更新用户使用表的时候, 还需要去更新系统表, 这会产生了递归SQL调用. 并且去更新这些系统表的操作是串行的, 在做更新前还需要获得相应的lock. 那么, 在系统繁忙的时候就会发生竞争和等待. 这就会降低系统整体的性能.
locally management引入了bitmap来管理tablespace中空间的使用情况,每一个bit就会对应一个或一组blocks. 用这种方式绕开了data dictionary来管理, 减少了竞争, 从而提高了性能.
在locally managed-tablespace的管理下, 又可以分为automatic和Uniform. Automatic就是指在tablespace中extent的大小分配是由oracle 系统自己管理的. Uniform就是指分配所有的extent的大小都是一样的, 默认是1M. Temporary tablespace 就是用的Uniform方式管理. 但, Undo tablespace不能用Uniform方式.
在locally managed-tablespace下, 对segment 的管理可以分为Automatic和Manual.
1. Automatic就是ASSM管理方式, oracle用bitmap的方式来管理segment中block的使用状态,引用一段oracle官方的描述
"The bitmap describes the status of each data block within a segment with respect to the amount of space in the block that is available for inserting rows".
2. Manual就是用free list 来管理, 受到 PCTFREE, PCTUSED, FRELISTS 等参数的影响. 简单说来就是当一个block中的free 空间减少到PCTFREE指定的值,就会从free list上取下来, 不会在有新数据能插入到这个block, 剩下的空间是留给block中可能存在的扩充操作, 如update了这个block中的一行, 使这一行所需要的存储空间增加, 那就会使用这个block中剩下的空闲空间. 如果对PCTFREE参数配置不当, 就可能产生过多的row migration, 就是所谓的行迁移. 当block中被使用的空间小于PCTUSED指定的值, block就会放回到free list上, 允许新数据插入到个block中.
通过下面语句查看现在系统中Tablespace的创建情况.
SQL> select TABLESPACE_NAME, EXTENT_MANAGEMENT, ALLOCATION_TYPE, SEGMENT_SPACE_MANAGEMENT from dba_tablespaces;
TABLESPACE_NAME EXTENT_MAN ALLOCATIO SEGMEN
------------------------------ ---------- --------- ------
SYSTEM LOCAL SYSTEM MANUAL
UNDOTBS1 LOCAL SYSTEM MANUAL
SYSAUX LOCAL SYSTEM AUTO
TEMP LOCAL UNIFORM. MANUAL
USERS LOCAL SYSTEM AUTO
TEST LOCAL SYSTEM AUTO
PROFSTAT LOCAL SYSTEM AUTO
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8797129/viewspace-692000/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8797129/viewspace-692000/