UNDO 表空間(undotbs)空間持續增長無法自動回收,影響磁碟空間。
-- 1. 建立備用 UNDO 表空間
CREATE UNDO TABLESPACE newundotbs
DATAFILE '$ORA_DATA/newundotbs01.dbf' SIZE 1000M;
-- 2. 切換至新 UNDO 表空間
ALTER SYSTEM SET undo_tablespace = newundotbs SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
-- 3. 移除舊 UNDO 表空間
DROP TABLESPACE undotbs INCLUDING CONTENTS AND DATAFILES;
-- 4. 重建原名 UNDO 表空間(可選)
CREATE UNDO TABLESPACE undotbs
DATAFILE '$ORA_DATA/undotbs01.dbf' SIZE 1000M;
-- 5. 切回原 UNDO 表空間
ALTER SYSTEM SET undo_tablespace = undotbs SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
-- 6. 移除備用表空間
DROP TABLESPACE newundotbs INCLUDING CONTENTS AND DATAFILES;
SCOPE=SPFILE 確保參數持久化,重啟後生效。INCLUDING CONTENTS AND DATAFILES 徹底清除資料與 OS 檔案。UNDO RETENTION 保證與 RETENTION GUARANTEE 避免過度增長。UNDO 表空間無法縮小時,重建切換是最徹底的解法。平時應監控 V$UNDOSTAT 與 DBA_UNDO_EXTENTS,合理設定保留時間避免異常膨脹。