DB2 - 回收已删除表使用的磁盘空间

时间:2014-12-23 11:08:23

标签: database db2 relational-database

我有一个记录到DB2数据库的应用程序。每个日志都存储在一个日常表中,这意味着我有几个表,每天一个。

由于应用程序运行了一段时间,我删除了一些较旧的日常表,但没有回收磁盘空间。

我理解这在DB2中是正常的,所以我发现并发现可以使用以下命令来回收空间:

db2 alter tablespace <table space> reduce max

由于存储每日日志表的表空间名为 USERSPACE1 ,因此我成功执行了以下命令:

db2 alter tablespace userspace1 reduce max

不幸的是,DB2实例使用的磁盘空间仍然相同......

我已经读过某个地方可以执行 REORG 命令,但是我看到它用于重新组织表。由于我放弃了表格,我如何使用 REORG

还有其他办法吗?

由于

2 个答案:

答案 0 :(得分:1)

减小表空间的大小非常复杂。表的扩展区(连续页的集合;表空间分配的单位)不是按顺序分布的。重新组织表时,行将按页组织,新页将正常写入表空间的末尾。有时,高水印会增加,而你的表空间会更大。

您需要从表空间重新编译所有表,以便对所有表进行“整理”。然后,您必须执行新的重组才能使用前一个空格,因为它应该是表空间中的空白区域。

但是,有许多标准会影响表空间中表的组织:创建新的扩展区(新行,由于更新而溢出的行);重组后可以激活压缩。

你可以做的是为每个表空间分配几个或只有一个表;但是,你会浪费很多空间(头顶,空页等)

您正在使用的命令是一种自动执行此操作的方法,但它并不总是按预期工作:http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.dbobj.doc/doc/c0055392.html

如果要查看表空间中表的分布,可以使用db2dart。然后,您可以了解要重组(移动)的表。

答案 1 :(得分:0)

对不起伙计们,

我在原帖上提到的命令毕竟是有效的,但是检索的空间非常慢。

感谢您的帮助