首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle UNDO 表空間暴增解決方案:重建法

     編輯:Oracle 資料庫相關知識

問題

UNDO 表空間(undotbs)空間持續增長無法自動回收,影響磁碟空間。

解決方案:建立新 UNDO 表空間切換後移除舊表空間

-- 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 檔案。
  • 過程需兩次重啟,建議在維護時段執行。
  • 10g+ 可考慮啟用 UNDO RETENTION 保證與 RETENTION GUARANTEE 避免過度增長。

小結

UNDO 表空間無法縮小時,重建切換是最徹底的解法。平時應監控 V$UNDOSTAT 與 DBA_UNDO_EXTENTS,合理設定保留時間避免異常膨脹。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved