oracle數據庫刪除無用表空間及數據文件過程

應用場景:html

數據庫服務器A下的一張數據庫表重建過,而且數據已經遷移到新表空間下,現遺留了一些原有的表空間數據文件在服務器上,耗費資源,如圖所示:
圖片描述linux

原數據庫表對應的數據文件:sql

圖片描述

遷移後數據文件:
圖片描述數據庫

咱們的目的是,將這些沒用的dbf文件刪除,把/opt/oradata下的存儲釋放出來。
現說明一下處理的步驟:服務器

  • 查詢表空間和數據文件對應關係oracle

發現CLRDBS01-14是重建前的,CLRDB01-60是重建後的。spa

圖片描述

  • 執行語句,嘗試進行刪除,這塊Oracle報錯了。線程

drop tablespace CLRDBS14  INCLUDING CONTENTS AND DATAFILES;

oracle提示報錯:ORA-14404
圖片描述code

此錯誤說明,該表空間下有分區表在用此表空間的數據文件,因此不能直接刪除表空間htm

  • 既然報錯了,那咱們就看一下怎麼解決它。

查詢哪些表在佔用這個CLRDBS14:

SELECT x.table_name,x.partition_name,x.tablespace_name 表空間1, y.tablespace_name 表空間2
 FROM dba_tab_partitions x, dba_tab_partitions y
WHERE x.tablespace_name ='CLRDBS14' AND y.tablespace_name <> 'CLRDBS14' AND x.table_name=y.table_name;

圖片描述

經查詢,有5個表在使用,分別是:
TFA_ALARM_UNSTANDARD
TFA_ALARM_GCSS
TFA_ALARM_CLR_05061
TFA_ALARM_CLR_05062
TFA_ALARM_CLR_0506

  • 分別查看一下這些表

TFA_ALARM_UNSTANDARD TFA_ALARM_GCSS 這兩張下面沒數據,導出建表語句,刪除。
TFA_ALARM_CLR_05061 TFA_ALARM_CLR_05062 TFA_ALARM_CLR_0506 這三張是以前clr表的備份,刪除。

  • 再次執行刪除語句,刪除CLRDBS14

drop tablespace CLRDBS14  INCLUDING CONTENTS AND DATAFILES;

這次正常執行。

  • 依次刪除CLRDBS01-CLRDBS13

登錄數據庫服務器下/opt/oradata,查看以前的clrdbs數據文件,已經在服務器上找不到了
圖片描述

  • 執行bdf,觀察/opt/oradata大小

這塊特殊說明一下,空間不會立刻就釋放出來,由於linux OS系統bdf命令的機制是,只有當線程釋放完畢後,纔會釋放bdf命令內的空間。

參考文檔:http://www.cnblogs.com/mfryf/...

相關文章
相關標籤/搜索