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

DB2 查詢剩餘資料庫空間實戰:表空間使用率、快照與 GET_DBSIZE_INFO 全攻略

     編輯:DB2 教學

前言

掌握資料庫空間使用情況是 DBA 核心職責。DB2 提供多層次查詢方式:從表空間級細粒度到資料庫級總覽,本文整理三大主流查詢腳本並解析關鍵輸出參數。

1. 表空間級使用率查詢 (SNAPSHOT_TBS_CFG)

適用單分區或需逐節點檢視的環境,回傳每個表空間的總/已用/可用空間 (MB):

SELECT 
  SUBSTR(TABLESPACE_NAME,1,20) AS TBSPC_NAME,
  BIGINT(TOTAL_PAGES * PAGE_SIZE)/1024/1024 AS "TOTAL(MB)",
  USED_PAGES * PAGE_SIZE/1024/1024 AS "USED(MB)",
  FREE_PAGES * PAGE_SIZE/1024/1024 AS "FREE(MB)"
FROM TABLE(SNAPSHOT_TBS_CFG('DB_NAME', -2)) AS SNAPSHOT_TBS_CFG;
  • -2 代表所有資料庫分區節點。
  • 需啟用 BUFFERPOOL 監控開關 (UPDATE MONITOR SWITCHES USING BUFFERPOOL ON)。

2. 表空間彙總視圖 (SYSIBMADM.TBSP_UTILIZATION)

DB2 9.7+ 推薦使用管理視圖,自動跨分區彙總,語法更簡潔:

SELECT 
  SUBSTR(TBSP_NAME,1,20) AS TABLESPACE_NAME,
  SUBSTR(TBSP_CONTENT_TYPE,1,10) AS TABLESPACE_TYPE,
  SUM(TBSP_TOTAL_SIZE_KB)/1024 AS TOTAL_MB,
  SUM(TBSP_USED_SIZE_KB)/1024 AS USED_MB,
  SUM(TBSP_FREE_SIZE_KB)/1024 AS FREE_MB,
  TBSP_PAGE_SIZE AS PAGE_SIZE
FROM SYSIBMADM.TBSP_UTILIZATION
GROUP BY TBSP_NAME, TBSP_CONTENT_TYPE, TBSP_PAGE_SIZE
ORDER BY 1;

優點:無需開啟監控開關、自動處理 DPF 環境彙總、效能優於快照。

3. 資料庫級總容量與已用空間 (GET_DBSIZE_INFO)

DB2 9.5+ 內建預存程序,一呼即得資料庫大小、容量上限與時間戳:

CALL GET_DBSIZE_INFO(?, ?, ?, 0);

輸出參數說明 (單位:Bytes):

參數名含義換算範例
SNAPSHOTTIMESTAMP統計時間點2008-05-26-10.53.06.421000
DATABASESIZE目前實際佔用磁碟大小1,203,863,552 B ≈ 1,148 MB
DATABASECAPACITY資料庫最大可擴展容量 (受授權/檔案系統限制)4,281,493,504 B ≈ 4,083 MB

快速換算:MB = Bytes / 1024 / 1024。

DPF 環境特別注意

在多節點 (DPF) 環境下,GET_DBSIZE_INFO 僅回傳協調節點的資料庫大小,無法反映全叢集總容量。此時必須搭配 SYSIBMADM.TBSP_UTILIZATION 跨分區彙總才準確。

實務建議腳本整合

#!/bin/bash
# daily_space_check.sh
db2 "CALL GET_DBSIZE_INFO(?, ?, ?, 0)" | grep -E 'DATABASESIZE|DATABASECAPACITY'
db2 -x "SELECT TBSP_NAME, 
  DEC(SUM(TBSP_USED_SIZE_KB)/1024/1024,10,2) AS USED_GB,
  DEC(SUM(TBSP_TOTAL_SIZE_KB)/1024/1024,10,2) AS TOTAL_GB
  FROM SYSIBMADM.TBSP_UTILIZATION GROUP BY TBSP_NAME ORDER BY USED_GB DESC"
# 設定閾值告警 (如 USED_GB/TOTAL_GB > 85%)

DB2 表空間使用率查詢結果範例

總結

  • 細粒度逐表空間:SNAPSHOT_TBS_CFG (舊版相容) 或 SYSIBMADM.TBSP_UTILIZATION (推薦)。
  • 資料庫總覽快速檢查:CALL GET_DBSIZE_INFO。
  • DPF 環境務必用管理視圖彙總,勿信單節點結果。
  • 納入每日巡檢自動化,設定 80%/90% 雙閾值預警。

靈活組合這三種查詢,即可全方位掌控 DB2 空間健康狀態。

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