我无论如何都不是数据库管理员,所以我在这里陈述一些事情可能是错误的。
在 SQL Server 中,当我们在数据库中添加大量数据然后删除它时,数据文件(.mdf 文件)或数据库(或其他任何名称)的大小不会减小到原始大小. 我们需要缩小它。
相同的基本原理在 Oracle 中是否有效?如果是,那么我应该如何缩小 Oracle 11g 数据库?
Oracle 文档的完整解释:回收浪费的空间。对于简短版本:
“您可以缩小表、索引组织表、索引、分区、子分区、物化视图或物化视图日志中的空间。您可以使用 ALTER TABLE、ALTER INDEX、ALTER MATERIALIZED VIEW 或 ALTER MATERIALIZED VIEW LOG 语句与SHRINK SPACE 子句。”
因此,在运行 Oracle Segment Advisor 以推荐要收缩的区域后,类似以下内容将收缩名为mytable
.
SQL> alter table mytable enable row movement;
Table altered
SQL> alter table mytable shrink space;
Table altered
我有一个类似的情况,表大小为 28 Gb,当我从中删除数据时,我发现没有发生任何变化。
在我从该表创建另一个表并删除第一个表后,大小缩小了 10 Gb,变为 18 Gb。
CREATE TABLE NEW_TBL AS SELECT * FROM OLD_TBL