2014-10-28 114 views
0

我有很多oracle 11g中有很多記錄的表。 (超過20億)在應用了一些查詢並創建了一些索引後,我接近磁盤空間不足。現在執行每個查詢ORA-01652錯誤爲USERS表空間出現。由於磁盤空間不足,我無法再向USERS表空間添加更多數據文件。我確信這個表空間中有很多未使用的空間可用,但不可用。 (我刪除了一些表和索引什麼也沒有發生)我的問題是我怎麼能釋放這個空間?非常感謝你。在oracle中釋放USERS表空間的未使用空間

+0

確定最大的表格,發送威脅要刪除或截斷它們的電子郵件,並查看誰投訴。很有可能你能夠恢復一大塊空間;) – tbone 2014-10-28 13:14:14

回答

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;