4

我需要压缩一张桌子。我用来alter table tablename compress压缩表。这样做之后,表格大小保持不变。

我应该如何压缩表格?

4

2 回答 2

6

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

alter table table_name move compress;

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

于 2013-01-04T06:48:31.320 回答
-1

压缩不会影响已存储的行。请查看官方文档

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

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

  • 创建新表
  • 从原始(旧)表中插入数据
  • 丢弃旧表
  • 将新表重命名为旧表名

于 2013-01-04T06:40:26.807 回答