编辑: 5天午托 2013-05-07
下载 第21章 管理数据库存储 本章要点: 管理数据库对象 理解数据库碎片 管理回滚段 鉴别存储问题 管理增长的数据库 故障检查 方案:监控数据库增长 21.

1 管理数据库对象 一个Oracle数据库有许多消耗磁盘和系统资源的组件.正如你所看到的,每个资源有唯一 的存储特性并需要独特的处理和维护.在下面的部分中,你将看到数据库段及它们的唯一存 储关系.我要讨论段本身,例如表、簇、索引、回滚段和临时段,以及 Oracle数据库存储它们 时所使用的内部方法. 21.1.1 管理Oracle块Oracle服务器可寻址的最小存储单元是 Oracle块.所有的数据库段都由 Oracle块组成,无 论段是一个表、索引、簇或者其他对象,块结构是相同的.设计一个性能最优的数据库要从 对Oracle块适当的配置和管理开始. 每个Oracle块都是由下面三部分组成的: 块头. 数据存储区. 自由空间区. 块头包含有关块的信息什么类型的段数据存储在块中,什么段在块中有数据,块地 址以及指向存储在其中的实际行的指针.块头由一个固定部分和一个可变部分组成,在块中 块头通常使用85到100字节. 在Oracle块中,管理数据存储区和自由空间区域是彼此直接相关的.数据区域是块中实际 存储行的地方.保留的自由空间区是一个区域,被定义为总的可用空间的百分数,被保留用 于存储有关在块中的行将来更新的信息.管理数据和保留的块区域是 Oracle块管理所主要关注 第五部分 管理Oracle数据库 的,这将在本章的后面讨论. 21.1.2 理解PCTFREE与PCTUSED PCTFREE和PCTUSED是应用于段的两个存储参数,它们经常被误解,但是概念实际上 非常简单.当Oracle向数据库中写信息时,它必须首先在一个段的分配区中找到一个或更多块 来存储信息.Oracle保留了块的一个列表,这些块对每个段来说都是自由的(这也被称为自由 表) .Oracle使用PCTFREE和PCTUSED参数的组合确定块何时有何时没有足够的空间接受新 信息. 提示 在许多情况中,Oracle对PCTFREE和PCTUSED参数的缺省值设置工作得非常好. 因此,一直注意并牢记缺省设置的含义就非常重要,特别是要定期地注意行转移. 如果在块中自由空间的百分数比 PCTFREE参数大得多,它就要被添加到段的自由表中以 便它可以用来存储新信息(例如,在表中的新行或者索引段的新索引节点) .当自由空间的 百分数低于 PCTFREE时,块就被认为是 满的 ,Oracle就把它从段的自由表中移出来.当 块中使用空间的百分数低于 PCTUSED时,Oracle就把该块加到段的自由表中,这样它就可以 再次被用来存储新信息.这种方法允许 Oracle保持足够的额外空间用于行增长,而不需要跨 过超过一个块的空间.保持行被限制在一个单独的块中有助于使你的数据库以最高性能运 行. PCTFREE和PCTUSED的值永远都不能等于 100%.如果一个段被这样配置,块很可 能将被连续地从自由表中取出,并且在每个数据子处理中又被放置到自由表中.由数据 库引擎处理引起的系统开销可以通过在 PCTFREE和PCTUSED之间留至少 20%的裕量而 很容易地得到解决. Oracle 为PCTFREE预置了 10,为PCTUSED 预置了 40说明这个裕 量. PCTFREE和PCTUSED在数据库段的存储子句中被指定.你可以用dba_tables、dba_clusters 或者dba_indexes数据字典视图查询它们目前的值.用PCTFREE和PCTUSED,你可以微调单 个段的存储特性以满足它们特殊的存储需要.例如,一个永远都不会被修改的表可以安全地 把PCTFREE设为 0.这在每个块中都节约了空间 对一个 4KB的块以及设置为 10的PCTFREE来说,每个块中大约有 800个字节可用于已被保存的数据.对一个 500MB的表,执 行这个较小的改变,你会节约大约 50MB的空间.另一方面,如果一个表包含了将来肯定要被 改变的列,那么就可以用高一点的 PCTFREE设置以避免行链接或者转移.行链接和转移在本 章的21.2节中详细讨论. 图21-1显示了PCTFREE和PCTUSED如何在一起控制块内部的空间使用.在这个例子中假 定PCTFREE被设为10%,PCTUSED被设为40%.编号1显示了新数据可以被加到此块中直到 剩余的自由空间不到 20%.这是因为在块总开销后空间的 20%是留着为以后借助于 PCTFREE 参数进行修改用的.编号 2显示当达到 PCTFREE的限制时,剩余的自由空间只能用于对现存 数据的修改在这个块中不允许新的插入.编号 3显示了由于删除或者修改而被重新放回自 由表中的块,并且块中已用的空间下降到 40%以下.编号4显示当已用空间低于 PCTUSED时, 在块中新的插入又是可能的了.当在块中进行插入时,已用空间开始增加,再一次接近上限, 循环又开始了. 232计计第五部分 管理Oracle数据库 下载 图21-1 PCTFREE和PCTUSED之间的关系 21.1.3 索引与PCTUSED/PCTFREE 索引是值得注意的,因为它们的结构性质,使用 PCTFREE和PCTUSED与表相比稍微有 点不同.只有当一个索引最初建立时这些参数适用,在以后的修改期间没有更多的用处.因此,PCTFREE的设置应让索引结构最初在叶块中建立时就有足够的空间,这样就可以增加辅 助关键字,而不必重复地拆分已存在的叶块提供给新关键字.由于在索引的建立期间不会删 除行,因此索引就不能从任何 PCTUSED设置中获益. 提示 当为一个已存在的表建立新索引时,如果预料到表在近期将大量增长,就要考虑 在建立索引时指定一个低的PCTFREE值. 21.1.4 管理表存储区 表容量(是行长*行数的函数)可能是确定存储需求的最好尺度.表的空间需求大致是 平均行长与行数的乘积.当数据库管理员讨论他们所关心的数据库的近似容量时,行数经常 被用做尺度.尽管它不会为计划长期存储需求提供许多信息,但它确实会使你了解某些有关 数据库容量值的知识. 表通常是大多数存储管理的起始点;

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题