ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 本地管理表空间vs.字典管理表空间

本地管理表空间vs.字典管理表空间

原创 Linux操作系统 作者:beifushengzq 时间:2011-04-07 11:32:43 0 删除 编辑

Oracle的存储分为四个层次,BlockExtentSegmentTablespaceOracle分配空间到Segment时,是将一组连续的Block添加到Segment,这组连续的Block称作一个Extent

 

对于已经分配和还未分配的Extent的元数据可能存放在数据字典中(字典管理表空间),也可能存放在tablespace header中(本地管理表空间)。

 

可以通过以下语句来查看当前的表空间是本地管理还是字典管理:

select tablespace_name, extent_management, allocation_type from dba_tablespaces;

SYSTEM               LOCAL  SYSTEM

UNDOTBS1          LOCAL  SYSTEM

SYSAUX               LOCAL  SYSTEM

TEMP                  LOCAL    UNIFORM

USERS   LOCAL  SYSTEM

TEST                    LOCAL    UNIFORM

 

字典管理表空间(DMT

Oracle使用SYS.FET$表来记录空闲空间,使用SYS.UET$表来记录已经使用过的空间。当从表空间分配新的Extent时,必须先获得space transaction(ST) enqueue latch后才能插入或删除SYS.FET$SYS.UET$表。在特定的时间内,只有一个进程能获得ST enqueue,这通常会引起竞争和等待。

可以使用下列语句来创建一个DMT

CREATE TABLESPACE ts1 DATAFILE '/oradata/ts1_01.dbf' SIZE 50M

      EXTENT MANAGEMENT DICTIONARY

      DEFAULT STORAGE ( INITIAL 50K NEXT 50K MINEXTENTS 2 MAXEXTENTS 50 PCTINCREASE 0);

 

DEFAULT STROAGE:该选项只对DMT有效。使用它可以指定在该DMT中创建的所有对象是否压缩(COMPRESS/NOCOMPRESS)及其默认参数。

MINIMUM EXTENT:指定extent的最小大小。

TEMPORARY:创建临时表空间。创建临时表空间有两种语法:CREATE TEMPORARY TABLESPACES TEMPFILECREATE TABLESPACE TEMPORARY。最好CREATE TEMPORARY TABLESPACES TEMPFILE来创建临时表空间,使用此方法创建的表空间只能是LMT。如果你想创建DMT临时表空间可以使用CREATE TABLESPACE TEMPORARY。使用CREATE TEMPORARY TABLESPACES TEMPFILE创建临时表空间,不能使用AUTOALLOCATE,默认为UNIFORM

 

本地管理表空间(LMT

使用LMT,每个表空间使用表空间数据文件中的一个bitmap结构来管理空闲和已使用的空间的元数据信息。每一bit对应一个数据库block或一组blcok。可以通过下面任一语句建立一个LMT

CREATE TABLESPACE ts2 DATAFILE '/oradata/ts2_01.dbf' SIZE 50M

    EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TABLESPACE ts3 DATAFILE '/oradata/ts3_01.dbf' SIZE 50M

      EXTENT MANAGEMENT LOCAL UNIFORM. SIZE 128K;

AUTOALLOCATE:使用AUTOALLOCATE,则extent的大小是系统管理的,Oracle在分配下一个extent时,会选择一个最佳的extent大小。extent大小包含从64KB1MB8MB一直到64MB,随着segment的增长oracle会选择更大的extent

UNIFORM:使用UNIFORM指定extent大小,则Oracle会根据此数字创建下一个extent。默认值是1MLMT表空间中创建object时,不能覆盖该uniform. extent size

 

本地管理表空间的好处:

----不需要使用recursive sql访问UET$FET$

----消除了对于UET$FET$的竞争(single ST enqueue

----不用定期连接空闲空间,LMT会自动跟踪相邻的空闲空间。

----使用LMT时,分配extent只是改变segment header中的bitmap structure,不会产生回滚信息。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/804471/viewspace-691855/,如需转载,请注明出处,否则将追究法律责任。

上一篇: ARM处理器介绍
请登录后发表评论 登录
全部评论

注册时间:2011-03-21

  • 博文量
    12
  • 访问量
    11950