DMS 表空間預設固定大小,空間耗盡會報錯(SQL0289N)。自動調整大小(AUTORESIZE) 讓 DB2 在空間不足時自動擴展檔案容器,消除人工擴容干預,保障業務連續性。僅支援檔案容器,原始裝置容器不可用。
CREATE TABLESPACE DMS1
MANAGED BY DATABASE
USING (FILE '/db2files/DMS1' 10 M)
AUTORESIZE YES;
ALTER TABLESPACE DMS1 AUTORESIZE YES; -- 啟用
ALTER TABLESPACE DMS1 AUTORESIZE NO; -- 關閉
MAXSIZE 100 M:上限 100 MB(每分區),達到後不再擴展,回傳「空間不足」。MAXSIZE NONE(預設):無上限,受限於檔案系統或 DB2 表空間上限(64TB/分區)。ALTER TABLESPACE DMS1 MAXSIZE 1 G / MAXSIZE NONE。注意:DB2 為保持容器大小一致,實際上限可能略小於指定值。
INCREASESIZE 5 M 每次增 5 MB。INCREASESIZE 50 PERCENT 每次按當前大小增 50%(首次 20M→30M,再 30M→45M...)。DB2 僅擴展「表空間圖」中最後範圍的容器。範例:
CREATE TABLESPACE TS1
MANAGED BY DATABASE
USING (FILE 'C:\TS1CONT' 1000, FILE 'D:\TS1CONT' 1000,
FILE 'E:\TS1CONT' 2000, FILE 'F:\TS1CONT' 2000)
EXTENTSIZE 4
AUTORESIZE YES;
表空間圖顯示容器 2、3(E:、F:)位於最後範圍,僅這兩個會被自動擴展。最佳實踐:建立時所有容器大小相等,形成單一範圍,所有容器同步擴展,避免 I/O 傾斜。
ALTER TABLESPACE TS1 BEGIN NEW STRIPE SET (FILE 'G:\TS1CONT' 2000, FILE 'H:\TS1CONT' 2000)。新範圍成為擴展目標,舊容器凍結大小,問題容器脫離擴展路徑。自動儲存表空間若啟用 AUTORESIZE,DB2 會自動新增條帶集處理檔案系統滿載,無需人工介入。
| 指標 | 含義 |
|---|---|
| 啟用自動調整大小 | Yes/No |
| 當前表空間大小(位元組) | 即時使用量 |
| 最大表空間大小(位元組) | 上限或 NONE |
| 增加大小(位元組/百分比) | 擴展步長 |
| 上一次成功調整大小時間 | YYYY/MM/DD HH:MM:SS |
| 上一次調整大小嘗試失敗 | Yes/No(檔案系統滿等) |
定期擷取快照建立基線,配合告警機制,實現「零驚訝」容量管理。
MAXSIZE/INCREASESIZE 歷史設定。MAXSIZE 同時限制手動 ALTER TABLESPACE ADD/EXTEND/RESIZE/BEGIN NEW STRIPE SET 操作。善用 AUTORESIZE,讓 DBA 從「半夜擴容」解脫,專注於架構優化與價值創造。