一、建立回滾段
CREATE [PUBLIC] ROLLBACK SEGMENT rbs01
TABLESPACE rbs
STORAGE (
INITIAL 100K NEXT 100K
MINEXTENTS 10
MAXEXTENTS 500
OPTIMAL 1000K
);
規則與建議
PUBLIC 供所有實例共用,PRIVATE(預設)僅限指定實例,建立後不可變更
MINEXTENTS >= 2、PCTINCREASE = 0(強制)
OPTIMAL >= INITIAL * MINEXTENTS,設定後 Oracle 自動收縮至該尺寸
- 建議
INITIAL = NEXT、避免 MAXEXTENTS UNLIMITED、專用表空間存放
二、上線/離線控制
-- 上線
ALTER ROLLBACK SEGMENT rbs01 ONLINE;
-- 參數檔自動上線
ROLLBACK_SEGMENTS = (rbs01, rbs02)
-- 離線(阻止新事務,等待活動事務結束)
ALTER ROLLBACK SEGMENT rbs01 OFFLINE;
-- 狀態轉換:ONLINE → PENDING OFFLINE → OFFLINE
三、修改儲存參數
ALTER ROLLBACK SEGMENT rbs01 STORAGE (MAXEXTENTS 1000);
ALTER ROLLBACK SEGMENT rbs01 STORAGE (OPTIMAL 2M);
可動態調整 NEXT、MINEXTENTS、MAXEXTENTS、OPTIMAL。
四、手動收縮
ALTER ROLLBACK SEGMENT rbs01 SHRINK; -- 收縮至 OPTIMAL
ALTER ROLLBACK SEGMENT rbs01 SHRINK TO 2M; -- 收縮至指定尺寸
五、刪除回滾段
-- 必須先 OFFLINE
ALTER ROLLBACK SEGMENT rbs01 OFFLINE;
DROP ROLLBACK SEGMENT rbs01;
六、監控視圖與查詢
| 視圖 | 用途 | 關鍵欄位 |
| DBA_ROLLBACK_SEGS | 靜態資訊 | SEGMENT_ID, SEGMENT_NAME, TABLESPACE_NAME, OWNER, STATUS |
| V$ROLLNAME + V$ROLLSTAT | 動態統計 | EXTENTS, RSSIZE, OPTSIZE, HWMSIZE, XACTS, STATUS |
| V$SESSION + V$TRANSACTION | 活動事務 | USERNAME, XIDUSN, UBAFIL, UBABLK, USED_UBLK |
常用查詢
-- 回滾段靜態
SELECT segment_name, tablespace_name, owner, status FROM dba_rollback_segs;
-- 回滾段動態統計
SELECT n.name, s.extents, s.rssize, s.optsize, s.hwmsize, s.xacts, s.status
FROM v$rollname n, v$rollstat s WHERE n.usn = s.usn;
-- 當前活動事務
SELECT s.username, t.xidusn, t.ubafil, t.ubablk, t.used_ublk
FROM v$session s, v$transaction t WHERE s.saddr = t.ses_addr;
七、數量規劃原則
| 負載類型 | 策略 | 比例 |
| OLTP (高併發小事務) | 多個小回滾段 | 4 事務 : 1 段,單段 < 10 事務 |
| Batch/DSS (大事務) | 少量大回滾段 | 1 事務 : 1 段 |
八、常見問題與對策
| 錯誤 | 現象 | 對策 |
| ORA-01560 / ORA-01628 | 表空間滿 / 擴展達 MAXEXTENTS | 添加資料檔、擴大檔案、增大 MAXEXTENTS |
| ORA-01555 SNAPSHOT TOO OLD | 讀一致性失敗,回滾段過小被覆蓋 | 增大 MINEXTENTS、增大 NEXT/INITIAL、設定高 OPTIMAL、指定大回滾段 (SET TRANSACTION) |
結語
回滾段是 Oracle 讀一致性與事務恢復的基石。從 建立參數規範化、上線自動化、動態調整 OPTIMAL、預防性監控 EXTENTS/HWM、負載型數量規劃 五個維度建立全生命週期管理體系,可徹底消除 ORA-01555/01628 等經典故障。
- 上一篇文章: 單機雙實例配置雙 Listener 實戰:IPC KEY 衝突解決與獨立啟動
- 下一篇文章: Oracle 回滾段管理核心概念與實務指南(上)
Copyright ©
程式碼之家 All Rights Reserved