从表中删除数据后的Oracle可用空间

Vic*_*tor 2 oracle11g

我最近从数据库中的一些表中删除了大量数据.现在我想释放那些数据占据的空间.之后我想重建索引.释放空间的最佳方法是什么?

Jus*_*ave 7

"释放空间"是什么意思?删除数据后,块中释放了空间.该空间现在可用于从中删除数据的表中的后续插入(或更新).这通常是足够的,因为该表通常会在将来再次增长.

如果要减小表段的大小并使空间可用于同一表空间中的其他段,则可以缩小表

ALTER TABLE table_name ENABLE ROW MOVEMENT;

ALTER TABLE table_name SHRINK SPACE CASCADE;
Run Code Online (Sandbox Code Playgroud)

此时通常不需要重建索引.

  • @Kaushik - 通常,Oracle中的索引不需要重建.通过在封面下进行一堆删除和插入,缩小表可以物理地重新组织表中的数据.`SHRINK SPACE`命令中的`CASCADE`选项将命令应用于索引等依赖对象.那时,你已经在索引上完成了相同的"COALESCE"和"SHRINK" - 没有必要重建. (4认同)