Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
释放oracle中用户表空间的未使用空间_Oracle_Oracle11g_Tablespace - Fatal编程技术网

释放oracle中用户表空间的未使用空间

释放oracle中用户表空间的未使用空间,oracle,oracle11g,tablespace,Oracle,Oracle11g,Tablespace,我在Oracle11g中有很多表和很多记录。(超过20亿)在应用了一些查询并创建了一些索引之后,我几乎没有足够的磁盘空间了。此时将显示用于执行每个查询的ORA-01652 error for USERS表空间。由于磁盘空间不足,我无法再向用户表空间添加更多数据文件。我确信这个表空间中有很多未使用的空间是不可用的。(我删除了一些表和索引,什么都没发生)我的问题是如何释放这个空间?多谢各位 我不知道是否可以对整个表空间使用它,但对于单个表,命令是: ALTER TABLE MY_TABLE ENAB

我在Oracle11g中有很多表和很多记录。(超过20亿)在应用了一些查询并创建了一些索引之后,我几乎没有足够的磁盘空间了。此时将显示用于执行每个查询的ORA-01652 error for USERS表空间。由于磁盘空间不足,我无法再向用户表空间添加更多数据文件。我确信这个表空间中有很多未使用的空间是不可用的。(我删除了一些表和索引,什么都没发生)我的问题是如何释放这个空间?多谢各位

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

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;
也许您必须循环模式中的所有表

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

ALTER INDEX THE_INDEX REBUILD;

确定最大的表,发送电子邮件威胁删除或截断它们,并查看谁投诉。很有可能您将能够恢复一大块空间;)