【发布时间】:2011-09-28 03:01:15
【问题描述】:
我最近从数据库中的一些表中删除了一大块数据。现在我希望释放该数据所占用的空间。之后我想重建索引。 释放空间的最佳方法是什么?
【问题讨论】:
标签: oracle11g
我最近从数据库中的一些表中删除了一大块数据。现在我希望释放该数据所占用的空间。之后我想重建索引。 释放空间的最佳方法是什么?
【问题讨论】:
标签: oracle11g
“释放空间”是什么意思?当您删除数据时,块中的空间被释放。该空间现在可用于您从中删除数据的表中的后续插入(或更新)。这通常就足够了,因为该表通常会在未来再次增长。
如果您想减小表段的大小并使空间可用于同一表空间中的其他段,则可以缩小表
ALTER TABLE table_name ENABLE ROW MOVEMENT;
ALTER TABLE table_name SHRINK SPACE CASCADE;
此时通常不需要重建索引。
【讨论】:
SHRINK SPACE 命令中的CASCADE 选项将该命令应用于索引等依赖对象。那时,您已经在索引上完成了相当于 COALESCE 和 SHRINK 的操作 - 没有必要重新构建。