压缩Oracle表

时间:2013-01-04 06:33:32

标签: oracle

我需要压缩表格。我使用alter table tablename compress压缩表。在这样做之后,表格大小保持不变。

我应该如何压缩桌子?

2 个答案:

答案 0 :(得分:6)

要压缩表的旧块,请使用:

alter table table_name move compress;

这会将记录重新插入另一个块中,压缩并丢弃旧块,这样您就可以获得空间。并使indexex无效,因此您需要重建它们。

答案 1 :(得分:-1)

压缩不会影响已存储的行。请检查official documentation

  

“您使用COMPRESS子句指定表压缩   CREATE TABLE语句。您可以为现有压缩启用压缩   表在ALTER TABLE语句中使用此子句。在这种情况下,   压缩的唯一数据是之后插入或更新的数据   压缩已启用......“

ALTER TABLE t MOVE COMPRESS是一个有效的答案。但是如果使用不同的非默认选项,尤其是大数据量,请在使用ALTER TABLE ... MOVE之前进行回归测试。
历史上有更多的问题(性能下降和错误)。如果您有权访问,请查看Oracle错误数据库,以查看您使用的功能和版本是否存在已知问题。)
如果您:

  • 创建新表
  • 从原始(旧)表中插入数据
  • 删除旧表
  • ,您处于更安全的一面
  • 将新表重命名为旧表名