Tablespace Manager
第一、字典管理表空间(Dictionary-Managed Tablespace简称DMT)
将Oracle的区管理信息存放在表空间的字典中进行管理,所有区的分配与释放,都会使字典的记录的增减变动。也就是在字典的记录中会执行更新、插入、删 除操作,在执行上述操作时,都会生成重做日志,对字典的管理,将影响正常操作的效率,并且在区分配、回收的过程中,产生磁盘碎片,如果磁盘碎片增加到一定的程度,会浪费空间,严重影响效率,同时,Oracle 在管理表空间的管理中,会产生递归SQL。
Oracle使用两个字典来记录Extents的使用情况:SYS.FET$记录空闲的Extents,SYS.UET$记录使用的Extents。在分配和释放分区时,都要修改者两个字典。属于DML操作,存在竞争,每个动作都是一个事务,会产生UNDO记录。需要周期性进行合并操作。效率低下。
如果要用字典的方式管理表空间,可以在创建表空间时,使用: EXTENT MANAGEMENT DICTIONARY 选项。
第二、本地管理表空间
本地管理是以位图的方式,将区的分配信息保存在数据文件本身,所有区的分配等操作都只是位图的算,位图中的每一位对应数据文件中的一个区或几个连续的区,这样在进行区管理时,生成的重做日志将非常少,并且运行的效率很高。并且产生磁盘碎片很少。
如果要用本地管理表空间,可以在创建表空间时,使用: EXTENT MANAGEMENT LOCAL 选项。
在表空间的管理中,Oracle8I中可以采用字典管理,也可以采用本地管理,如果不指定,将采用字典管理方式。
在 Oracle9I中,推荐采用本地管理的方式,如果不指定,将采用本地管理的方式。
从Oracle 10g开如,要求采用本地管理的方式。
转载于:https://blog.51cto.com/zekoo/1742762