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

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,不会产生回滚信息。

转载于:https://www.cnblogs.com/dataquality/articles/1601988.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值