首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

Oracle Undo 表空間線上切換操作指南:從 UNDOTBS1 遷移到 UNDOTBS3

     編輯:關於SqlServer

當 Undo 表空間空間不足、需調整大小或進行維護時,Oracle 支援動態切換 Undo 表空間,無需停機。本文詳述完整切換流程、關鍵檢查 SQL 及兩種場景(有/無作用中事務)的實操步驟。

切換前必查:確認舊表空間狀態

-- 檢查是否有 ACTIVE 範段(正在回滾/被查詢引用)
SELECT SUM(bytes) FROM dba_undo_extents
WHERE tablespace_name = 'UNDOTBS1' AND status = 'ACTIVE';

-- 若非 NULL,表示有未提交事務或長查詢依賴,切換後舊表空間進入 PENDING OFFLINE
-- 強制關機 SHUTDOWN IMMEDIATE 會失敗,SMON 重啟後仍需繼續回滾,影響效能

核心切換指令

-- 1. 建立新 Undo 表空間 (不可用 ASSM、UNIFORM SIZE,預設 LMT)
CREATE UNDO TABLESPACE undotbs3 DATAFILE '/dev/rlv_04_210' SIZE 500M AUTOEXTEND ON;
ALTER TABLESPACE undotbs3 ADD DATAFILE '/dev/rlv_04_211';
ALTER TABLESPACE undotbs3 ADD DATAFILE '/dev/rlv_04_212';
ALTER TABLESPACE undotbs3 ADD DATAFILE '/dev/rlv_04_213';
ALTER TABLESPACE undotbs3 ADD DATAFILE '/dev/rlv_04_214';

-- 2. 動態切換 (UNDO_TABLESPACE 為動態參數)
ALTER SYSTEM SET undo_tablespace = 'undotbs3' SCOPE = BOTH; -- 若 RAC 需指定 SID

-- 3. 離線並刪除舊表空間 (需確認無 ACTIVE 事務)
ALTER TABLESPACE undotbs1 OFFLINE;
DROP TABLESPACE undotbs1 INCLUDING CONTENTS AND DATAFILES;

場景一:舊表空間無作用中事務 (最理想)

SELECT COUNT(*) FROM v$transaction; -- 應為 0
CREATE UNDO TABLESPACE undotbs3 ...;
ALTER SYSTEM SET undo_tablespace = 'undotbs3';
ALTER TABLESPACE undotbs1 OFFLINE;
DROP TABLESPACE undotbs1;

場景二:舊表空間有作用中事務 (需額外處理)

-- 1. 找出阻塞事務的 Session/Process
SELECT s.sid, s.serial#, p.spid
FROM v$transaction t, v$session s, v$process p
WHERE t.addr = s.taddr AND s.paddr = p.addr;

-- 2. 業務低峰期 Kill 對應 OS Process (謹慎!會導致用戶報錯)
-- $ kill -9 

-- 3. 再次確認 v$transaction 為 0 後,執行場景一步驟

切換機制解析

  • 不等待舊事務提交:切換瞬間,新事務導向新表空間;舊表空間進入 PENDING OFFLINE,允許既存事務繼續使用,但不接受新事務。
  • SMON 背景回滾:舊表空間的 ACTIVE 範段由 SMON 異步清理,清理完成後自動 OFFLINE。
  • RAC 環境:需在各實例分別執行 ALTER SYSTEM SET undo_tablespace='undotbs3' SID='inst1';

最佳實務建議

  1. 切換前務必備份控制檔與參數檔
  2. 選業務閒忙時段,預先通知應用團隊
  3. 新表空間預留足夠空間並啟用自動擴展
  4. 切換後監控 V$UNDOSTAT 確認新表空間運作正常
  5. 保留舊表空間一段時間觀察,確無殘留事務再物理刪除

掌握動態 Undo 切換,讓 Oracle 維護操作更從容、業務零中斷。

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