Oracle数据库表空间内存储空间分配的最小单位是区,区是由连续数据块组成的。默认情况下,在创建数据段时Oracle数据库为它分配初始区(initial extent)。随着数据段内数据的填充,当分配的初始区空间用尽之后,Oracle自动为该段分配增量区(incremental extent)。
Oracle数据库可以采用以下两种方法管理表空间内区的分配情况。
①字典管理:字典管理是指把表空间内的区分配信息集中记录在数据库的数据字典中。
②本地管理:本地管理是指在各个表空间自身内用位图记录其中所有区的分配信息。
与字典管理表空间把区分配信息集中记录在SYSTEM表空间的数据字典内相比,本地管理表空间的区分配信息分散记录在各个表空间的位图内,这样可以降低对SYSTEM表空间的并发访问,减少I/O争用,提高性能,并且不需要合并空闲区碎片。所以Oracle建议用户创建的表空间应尽量采用本地管理表空间。
CREATE TABLESPACE语句内区存储管理子句的语法格式如下:
EXTENT MANAGEMENT{DICTIONARY|
LOCAL[AUTOALLOCATE|UNIFORM[SIZE n[K|M|G|T|P|E]]](www.daowen.com)
DICTIONARY指出创建字典管理表空间,而LOCAL则说明创建本地管理表空间。对于本地管理表空间,区的分配类型有以下两种。
①AUTOALLOCATE:自动分配,让Oracle数据库自动管理每次分配的区大小,这是默认设置。采用这种分配类型时,每次所分配区的最小尺寸是64 KB。
②UNIFORM:每次所分配区的大小限制为SIZE子句指定的统一尺寸。如果省略SIZE子句,则其默认大小为1 MB。
选择正确的区分配类型有利于提高表空间内空间的利用效率。如果需要准确控制未用空间,并且能够准确预测需要分配给对象的空间,以及区的大小和数量,则可使用UNIFORM选项,这样可以保证表空间内空间的利用效率。否则请使用AUTOALLOCATE选项简化表空间管理。
例如,下面语句分别创建DEMOA和DEMOB两个本地管理表空间,它们各包含一个数据文件,前者让系统自动选择所分配的区大小,后者将每次分配的区大小统一限制为128 KB。
Oracle数据库内的所有表空间均可采用本地管理方式。但当SYSTEM表空间采用本地管理方式时,则不能在该数据库上创建字典管理表空间。然而,如果在调用CREATE DATABASE语句创建数据库时接收默认设置,没有指定SYSTEM表空间的区管理方式,那么它将采用字典管理方式,所以用户在调用CREATE DATABASE语句创建orcl数据库时,使用了EXTENT MANAGEMENT LOCAL子句,指出SYSTEM表空间采用本地管理方式。但在默认情况下,Oracle数据库把新创建的所有用户表空间均设置为本地管理表空间。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。