计算机专业教材-第21章管理数据库存储.pdf
文本预览下载声明
下载
第五部分 管理Oracle数据库
第21章 管理数据库存储
本章要点:
管理数据库对象
理解数据库碎片
管理回滚段
鉴别存储问题
管理增长的数据库
故障检查
方案:监控数据库增长
21.1 管理数据库对象
一个O r a c l e数据库有许多消耗磁盘和系统资源的组件。正如你所看到的,每个资源有唯一
的存储特性并需要独特的处理和维护。在下面的部分中,你将看到数据库段及它们的唯一存
储关系。我要讨论段本身,例如表、簇、索引、回滚段和临时段,以及 O r a c l e数据库存储它们
时所使用的内部方法。
21.1.1 管理Oracle块
O r a c l e服务器可寻址的最小存储单元是 O r a c l e块。所有的数据库段都由 O r a c l e块组成,无
论段是一个表、索引、簇或者其他对象,块结构是相同的。设计一个性能最优的数据库要从
对O r a c l e块适当的配置和管理开始。
每个O r a c l e块都是由下面三部分组成的:
■ 块头。
■ 数据存储区。
■ 自由空间区。
块头包含有关块的信息─什么类型的段数据存储在块中,什么段在块中有数据,块地
址以及指向存储在其中的实际行的指针。块头由一个固定部分和一个可变部分组成,在块中
块头通常使用8 5到1 0 0字节。
在O r a c l e块中,管理数据存储区和自由空间区域是彼此直接相关的。数据区域是块中实际
存储行的地方。保留的自由空间区是一个区域,被定义为总的可用空间的百分数,被保留用
于存储有关在块中的行将来更新的信息。管理数据和保留的块区域是 O r a c l e块管理所主要关注
232计计第五部分 管理Oracle数据库
下载
的,这将在本章的后面讨论。
21.1.2 理解PCTFREE与PCTUSED
P C T F R E E 和P C T U S E D 是应用于段的两个存储参数,它们经常被误解,但是概念实际上
非常简单。当O r a c l e 向数据库中写信息时,它必须首先在一个段的分配区中找到一个或更多块
来存储信息。O r a c l e保留了块的一个列表,这些块对每个段来说都是自由的(这也被称为自由
表)。O r a c l e使用P C T F R E E和P C T U S E D参数的组合确定块何时有何时没有足够的空间接受新
信息。
提示 在许多情况中,Oracle对PCTFREE和PCTUSED参数的缺省值设置工作得非常好。
因此,一直注意并牢记缺省设置的含义就非常重要,特别是要定期地注意行转移。
如果在块中自由空间的百分数比 P C T F R E E参数大得多,它就要被添加到段的自由表中以
便它可以用来存储新信息(例如,在表中的新行或者索引段的新索引节点)。当自由空间的
百分数低于P C T F R E E 时,块就被认为是“满的”,O r a c l e就把它从段的自由表中移出来。当
块中使用空间的百分数低于 P C T U S E D 时,O r a c l e就把该块加到段的自由表中,这样它就可以
再次被用来存储新信息。这种方法允许 O r a c l e保持足够的额外空间用于行增长,而不需要跨
过超过一个块的空间。保持行被限制在一个单独的块中有助于使你的数据库以最高性能运
行。
P C T F R E E 和P C T U S E D 的值永远都不能等于 1 0 0 % 。如果一个段被这样配置,块很可
能将被连续地从自由表中取出,并且在每个数据子处理中又被放置到自由表中。由数据
库引擎处理引起的系统开销可以通过在 P C T F R E E 和P C T U S E D 之间留至少 2 0 % 的裕量而
很容易地得到解决。 Oracle 为P C T F R E E 预置了 1 0 ,为PCTUSED 预置了 4 0 说明这个裕
量。
P C T F R E E和P C T U S E D在数据库段的存储子句中被指定。你可以用d b a _ t a b l e s 、d b a _ c l u s t e r s
或者d b a _ i n d e x e s数据
显示全部