攻略1-18 使用DBMS_SPACE来检测位于高水位线之下的空间

问题描述

你已经通过追踪(攻略1-17)检测到在高水位线之下存在未使用的空间。你想通过DBMS_SPACE包来确认这一结果。

解决方案

下面是一段无名使用DBMS_SPACE包来检测高水位线之下的空闲空间的PL/SQL代码,可以从SQL*Plus中调用:

enter image description here enter image description here

在这个例子中,你想要检查EMP表是否存在位于高水位线之下的空闲空间。下面是相应的输出:

enter image description here

在上面的输出中,FS1参数表明有0个数据块具有0%到25%的空闲空间。FS2参数表明有0个数据块具有25%~50%的空闲空间。FS3参数表明有0个数据块具有50%~75%的空闲空间。FS4参数表明有3646个数据块具有75%~100%的空闲空间。最后,存在0个满的数据块。因为没有全满的数据块,并且大量数据块几乎是空的,就可以推断出在高水位线之下存在空闲空间。

工作原理

DBMS_SPACE包的SPACE_USAGE过程提供了另一种确认高水位线之下存在空闲空间的方法。这个过程只能用于通过自动段空间管理(详情请参见攻略1-2)建立起来的表空间下的表。关于如何使用这个过程的更多细节,请参考Oracle PL/SQL Packages and Types Reference。

目录