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

DB2 DMS 表空間自動擴展(AUTORESIZE)完整配置與監控指南

     編輯:DB2 教學

自動調整大小核心機制

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 與 INCREASESIZE

最大大小(MAXSIZE)

  • MAXSIZE 100 M:上限 100 MB(每分區),達到後不再擴展,回傳「空間不足」。
  • MAXSIZE NONE(預設):無上限,受限於檔案系統或 DB2 表空間上限(64TB/分區)。
  • 可動態調整:ALTER TABLESPACE DMS1 MAXSIZE 1 G / MAXSIZE NONE。

注意:DB2 為保持容器大小一致,實際上限可能略小於指定值。

增量大小(INCREASESIZE)

  • 固定值:INCREASESIZE 5 M 每次增 5 MB。
  • 百分比:INCREASESIZE 50 PERCENT 每次按當前大小增 50%(首次 20M→30M,再 30M→45M...)。
  • 未指定時由 DB2 自動決定,值可能隨時間調整。
  • 同樣受容器一致性約束,實際增量可能微調。

擴展演算法與條帶集策略

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 傾斜。

檔案系統滿載應對方案

  1. 擴充該檔案系統可用空間。
  2. 新增條帶集: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(檔案系統滿等)

定期擷取快照建立基線,配合告警機制,實現「零驚訝」容量管理。

版本相容性與限制提醒

  • 啟用 AUTORESIZE 的資料庫無法在 DB2 8.2.1 或更早版本開啟(SQL0980C/0902C),需先關閉功能移除元資料。
  • 關閉再啟用會丟失 MAXSIZE/INCREASESIZE 歷史設定。
  • 不可對含原始裝置容器的表空間啟用,亦不可向已啟用表空間新增原始裝置(SQL0109N)。
  • 重導向還原不可將容器改為原始裝置。
  • MAXSIZE 同時限制手動 ALTER TABLESPACE ADD/EXTEND/RESIZE/BEGIN NEW STRIPE SET 操作。

善用 AUTORESIZE,讓 DBA 從「半夜擴容」解脫,專注於架構優化與價值創造。

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