我需要压缩一张桌子。我用来alter table tablename compress
压缩表。这样做之后,表格大小保持不变。
我应该如何压缩表格?
要压缩表的旧块,请使用:
alter table table_name move compress;
这将在另一个块中重新插入记录,压缩并丢弃旧块,因此您将获得空间。并使 indexex 无效,因此您需要重建它们。
压缩不会影响已存储的行。请查看官方文档:
" 您可以使用 CREATE TABLE 语句的 COMPRESS 子句指定表压缩。您可以通过在 ALTER TABLE 语句中使用此子句为现有表启用压缩。在这种情况下,唯一被压缩的数据是压缩后插入或更新的数据已启用..."
ALTER TABLE t MOVE COMPRESS 是一个有效的答案。但是,如果您使用不同的非默认选项,尤其是对于大数据量,请在使用 ALTER TABLE ... MOVE 之前进行回归测试。
从历史上看,它存在更多问题(性能下降和错误)。如果您有访问权限,请查看 Oracle 错误数据库以查看您使用的功能和版本是否存在已知问题。)
如果您: