在oracle中释放USERS表空间的未使用空间

时间:2014-10-28 11:47:24

标签: oracle oracle11g tablespace

我在oracle 11g中有很多包含大量记录的表。 (超过20亿)在应用了一些查询并创建了一些索引后,我的磁盘空间不足。现在为执行每个查询出现USERS表空间的ORA-01652错误。由于磁盘空间不足,我无法再向USERS表空间添加更多数据文件。我确信这个表空间上有很多未使用的空间,这些空间无法以某种方式使用。 (我删除了一些表和索引没有发生)我的问题是我如何释放这个空间?非常感谢你。

1 个答案:

答案 0 :(得分:2)

我不知道你是否可以使用整个表空间,但对于单个表,命令是:

ALTER TABLE MY_TABLE ENABLE ROW MOVEMENT; -- By defaut ROW MOVEMENT is disabled when you create a table.
ALTER TABLE MY_TABLE SHRINK SPACE CASCADE;
ALTER TABLE MY_TABLE DEALLOCATE UNUSED;

也许您必须在模式中循环ALL_TABLES

然后,您可以通过重建索引来获得磁盘空间。

ALTER INDEX THE_INDEX REBUILD;