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

Oracle、DB2、SQL Server 三大資料庫表空間大小查詢實戰指南

     編輯:DB2 教學

為什麼要監控表大小?

Oracle 官方建議:超過 2 GB 的資料表應採用分區表技術。掌握各資料庫查詢表/表空間大小的方法,是容量規劃與效能調優的基礎功夫。

Oracle 10g/11g/12c/19c 通用查詢腳本

1. 當前使用者所有表大小(含索引、LOB),按大小降序

SELECT segment_name,
       ROUND(SUM(bytes)/1024/1024, 2) AS size_mb
FROM   user_extents
GROUP  BY segment_name
ORDER  BY size_mb DESC;

2. 所有表空間大小統計(需 SYSDBA 或 DBA 權限)

SELECT tablespace_name,
       ROUND(SUM(bytes)/1024/1024, 2) AS size_mb
FROM   dba_segments
GROUP  BY tablespace_name
ORDER  BY size_mb DESC;

提示:若安裝 OEM Cloud Control,圖形介面同樣可視化呈現;無圖形環境時 SQL 腳本最便攜。

DB2 (LUW) 查詢方式

圖形介面:控制中心

右鍵點選資料表 → 「顯示詳細資料」→ 「儲存空間」分頁,即可看到資料、索引、LOB 佔用頁數與大小。

命令列 / SQL 快速查詢 (DB2 9.7+)

-- 查詢特定表大小 (KB)
CALL SYSPROC.ADMIN_GET_TAB_INFO('SCHEMA', 'TABLE_NAME');

-- 或使用表函數 (需 SYSTOOLSPACE)
SELECT TABSCHEMA, TABNAME,
       DATA_OBJECT_P_SIZE + INDEX_OBJECT_P_SIZE + LONG_OBJECT_P_SIZE + LOB_OBJECT_P_SIZE + XML_OBJECT_P_SIZE AS TOTAL_KB
FROM TABLE(SYSPROC.ADMIN_GET_TAB_INFO('SCHEMA', 'TABLE_NAME')) AS T;

SQL Server (2008~2022) 查詢方式

單一表大小 (含索引)

EXEC sp_spaceused 'SchemaName.TableName', @updateusage = 'TRUE';

所有表大小排序腳本

SELECT 
    t.NAME AS TableName,
    s.Name AS SchemaName,
    p.rows AS RowCounts,
    SUM(a.total_pages) * 8 AS TotalSpaceKB,
    SUM(a.used_pages) * 8 AS UsedSpaceKB,
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM sys.tables t
INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id
WHERE t.is_ms_shipped = 0
GROUP BY t.Name, s.Name, p.Rows
ORDER BY TotalSpaceKB DESC;

跨平台比較速查表

資料庫核心系統表/視圖單位權限需求
OracleUSER_EXTENTS / DBA_SEGMENTSBytes → MBDBA 權限查全庫
DB2SYSCAT.TABLES / ADMIN_GET_TAB_INFOPages / KBEXPLAIN 權限或 SYSMON
SQL Serversys.allocation_units / sp_spaceusedPages (8KB) → KBVIEW DEFINITION / db_owner

最佳實務建議

  • 將查詢腳本納入每日巡檢作業,記錄歷史趨勢。
  • 超過閾值 (如 2 GB) 自動發送警報,觸發分區表評估流程。
  • DB2 環境建議啟用 AUTO_RUNSTATS,確保統計資訊即時,避免查詢計劃偏差。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved