參考前文 (文章 125374) 執行 Undo 表空間縮減,成功建立 UNDOTBS2 並切換,但發現 DROP TABLESPACE undotbs1 INCLUDING CONTENTS; 未刪除實體資料檔,磁碟空間未釋放。本文記錄補救驗證與徹底清除過程。
DROP TABLESPACE undotbs1 INCLUDING CONTENTS; 後,DBA_TABLESPACES 已無 UNDOTBS1。undotbs1.dbf 仍存在,佔用 27GB 空間。V$DATAFILE 已不列出該檔案,證明資料字典已移除,但實體檔案殘留。INCLUDING CONTENTS 僅移除邏輯段 (Segments),不包含 作業系統/ASM 層面的實體檔案。需加上 AND DATAFILES 子句才會同步刪除實體檔。
SELECT name FROM v$datafile;
-- 結果中無 undotbs1.dbf,確認字典已清除
SQL> SHUTDOWN IMMEDIATE;
LSNRCTL> STOP
檔案系統:
mv /u01/app/oracle/oradata/undotbs1.dbf /backup/undotbs1.dbf.bak
ASM 環境:
asmcmd rm +ORADG/danaly/datafile/undotbs1.265.600173875
LSNRCTL> START
SQL> STARTUP
DROP TABLESPACE undotbs1 INCLUDING CONTENTS AND DATAFILES;
INCLUDING CONTENTS:刪除表空間內所有段 (Tables, Indexes, LOBs 等)AND DATAFILES:同時刪除實體資料檔 (適用檔案系統與 ASM)AND DATAFILES 可能無法刪除,需手動 rm。V$DATAFILE、V$CONTROLFILE、V$LOGFILE 均無該檔案引用。ORA-01157、ORA-01110 錯誤,需 ALTER DATABASE DATAFILE ... OFFLINE DROP 後再處理。AND DATAFILES:除非有備份保留需求,否則 Drop Tablespace 態度應為「連檔案一起刪」。df -h (檔案系統) 或 asmcmd du (ASM) 確認 Used 空間下降。DROP TABLESPACE 成功會寫入 Alert Log,包含刪除的檔案路徑,可作為稽核憑證。Undo 表空間縮減的關鍵在於「徹底」:不僅要切換邏輯表空間,更要確保實體檔案同步移除。DROP TABLESPACE ... INCLUDING CONTENTS AND DATAFILES 是最標準、最安全的單一指令完成方式。