Extents 概述

Extents

扩展区是数据库存储空间分配的逻辑单位,由多个连续数据块组成。在一个扩展区中的数据块在逻辑上是连续的,但在物理上可能由于 RAID 条带化和文件系统的实施方式而在磁盘上分散分布。

Allocation of Extents分配扩展区

在默认情况下,在数据段被创建时,数据库会为数据段分配一个初始扩展区。一个扩展区总是包含在一个数据文件中。

虽然还没有数据被添加到段中,在初始扩展区中的数据块被专门为段保留起来。每个段的第一个数据块包含该段中的扩展区目录。

如果初始扩展区满了,并需要更多空间时,则数据库自动为该段分配一个增量扩展区。一个增量扩展区是为该段创建的后续扩展区。

在新分配扩展区中的块,虽然他们是可用的,但可能并未清空旧数据。在 ASSM中,对新分配扩展区中的块,只有当Oracle 数据库开始使用它们时,才会根据需要将其格式化。

Deallocation of Extents 释放扩展区

通常,用户段的扩展区不会返回给表空间,除非您使用 DROP 命令删除该对象。在Oracle数据库 11g 第 2 版中 (11.2.0.2)也可以使用 DBMS_SPACE_ADMIN 软件包删除段。例如,如果你删除了表中的所有行,但数据库不会回收数据块以供表空间中的其他对象使用。

在一个撤消段中, 如果指定了OPTIMAL 大小参数,或数据库处于自动撤消管理模式,则Oracle 数据库会周期性地释放一个或多个扩展区

在某些情况下,可以手动释放空间。基于对象中的碎片级别,Oracle 数据段顾问工具可帮助确定一个对象是否有空间可回收。以下技术可以释放扩展区:

你可以使用在线段收缩来回收在段中的零碎空间。段收缩是一种在线、 就地的操作。通常,紧凑的数据会获得更好的缓存利用率,且在全表扫描中只需读取更少的块。

您可以将非分区表或表分区的数据移动到一个新的段,或可选地移入另一个你在其中具有配额的表空间。

您可以重建或合并索引

您可以截断表或表簇,这将删除所有行。默认情况下,除了留下由MINEXTENTS存储参数所指定的扩展区数之外,Oracle 数据库将释放已删除行所使用的所有空间。在数据库 11g 第 2 版 (11.2.0.2) 中,您还可以用带有DROP ALL STORAGE选项的TRUNCATE语句来删除整个段。

您可以释放未使用的空间,即释放数据库段的高水位端的未使用空间,以便供表空间中的其他段使用

当扩展区被释放时,Oracle 数据库将修改本地管理表空间的数据文件中的位图,以反映重新获得作为可用空间的扩展区。被释放扩展区的数据块中的任何数据变得不可访问。

Storage Parameters for Extents

每一个段是由扩展区表示的存储参数来定义的。这些参数控制 Oracle 数据库如何为段分配可用空间。

存储设置按如下的优先级顺序确定,列表中较高的设置会覆盖较低的设置:

1. 段存储子句

2. 表空间存储子句

3. Oracle数据库缺省值

本地管理表空间可以具有统一的扩展区大小,或由系统自动确定可变的扩展区大小:

对统一的扩展区,可以指定扩展区的大小,或使用默认的大小 1 MB。表空间中的所有扩展区都是一样大小。本地管理的临时表空间只能使用这种分配类型。

对于自动分配的扩展区由Oracle 数据库确定新分配扩展区的最佳大小。

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

转载于:http://blog.itpub.net/25427762/viewspace-1061092/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值