oracle清除資料庫表空間

greenteazsh發表於2011-06-28
        在資料庫表空間滿後,直接執行drop,delete,truncate等刪除資料的操作,都不會釋放資料庫表空間,釋放os的空間,用df -lh 檢視都還是滿的。雖然oracle的表空間即便不被回收,也是可以利用的,但會引起問題,釋放os的空間是最放心的。
       在這種情況下,如果要釋放os的空間,解決辦法如下:
       1.exp
       2.drop tablespace
       3.create tablespace
       4.imp
1.exp 匯出表空間中所需的資料。
       在這之前,如果日誌資料不是很必要,非保留不可,可以先truncate table tablename;然後匯出資料已滿的表空間。cd $ORACLE_HOME/bin目錄下,
./exp name/pass@testdb file=/tmp/bak/tabelspace.dmp tablespaces=TBS_TEST
2.drop tablespace 刪除資料庫表空間
        命令drop tablespace TBS_TEST INCLUDING CONTENTS;然後進入到表空間的物理儲存目錄,執行rm -f *,這是空間利用率下來了。如果想直接刪除檔案,可以用drop tablespace TBS_TEST INCLUDING CONTENTS and datafiles;,這是會發現時間的物理資料檔案已經沒有了,但df -lh空間使用率並沒有變化,需要重啟資料庫。刪除表空間和刪除物理檔案的順序不能改變,如果反了,請參考上一篇文章。
3.create tablespace 重新建立資料庫表空間
         使用建立命令,直接建立即可。create bigfile tablespace tbs_test datafile '/usr/data/test/tbs_test.DBF' size 2000M autoextend on next 100M;
4.imp 匯入資料檔案
          ./imp name/pass@testdb file=/tmp/bakloginfo.dmp full=y tablespaces=TBS_TEST
       如果不想做匯入匯出,比如索引表空間,可以直接刪除表空間,刪除物理檔案,然後建立表空間,重建索引。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9521459/viewspace-700896/,如需轉載,請註明出處,否則將追究法律責任。

相關文章