攻略1-17 追踪检测到的位于高水位线下的空间

问题描述

在执行攻略1-16中那些步骤之后,你相信在某张表中存在高水位线之下的未使用空间。你需要通过自动追踪工具的输出来进一步验证这个结果。

解决方案

可以运行下面的简单测试,来检测是否存在高水位线下有未使用空间的问题:

(1) SQL> set autotrace trace statistics;

(2) 运行一个进行全表扫描的查询;

(3) 将处理的数据行数目与从内存中读取的数据块数目相比较。

如果处理的数据行数目较低,而从内存中读取的数据块数目较高,则可能在高水位线之下存在空闲数据块。下面是一个说明这一方法的简单例子:

enter image description here enter image description here

工作原理

任何被授予PLUSTRACE角色的用户都可以使用自动追踪工具。这个工具可以通过SQL*Plus来调用,并提供详细的执行计划信息以及成功执行的SELECT、INSERT、UPDATE、DELETE语句的统计信息。这些统计信息记录在Oracle内部,包含了一条语句所消耗系统资源的详细信息。逻辑读取统计信息表示,对于给定的SQL语句,从内存中读取了多少数据块。如果逻辑读取的次数很高,但数据行数很少,则很有可能存在高水位线之下有空闲空间的问题。

目录