【问题标题】:Oracle free space after deleting data from tables从表中删除数据后的 Oracle 可用空间
【发布时间】:2011-09-28 03:01:15
【问题描述】:

我最近从数据库中的一些表中删除了一大块数据。现在我希望释放该数据所占用的空间。之后我想重建索引。 释放空间的最佳方法是什么?

【问题讨论】:

    标签: oracle11g


    【解决方案1】:

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

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

    ALTER TABLE table_name ENABLE ROW MOVEMENT;
    
    ALTER TABLE table_name SHRINK SPACE CASCADE;
    

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

    【讨论】:

    • 谢谢。为什么重建索引没有好处?
    • @Kaushik - 通常,Oracle 中的索引不需要重建。收缩表通过在幕后进行一系列删除和插入来物理重组表中的数据。 SHRINK SPACE 命令中的CASCADE 选项将该命令应用于索引等依赖对象。那时,您已经在索引上完成了相当于 COALESCESHRINK 的操作 - 没有必要重新构建。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 2011-05-19
    • 1970-01-01
    相关资源
    最近更新 更多