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

Oracle 表空間使用率監控 SQL 全集

     編輯:關於SqlServer

1. 按表空間查看整體使用率

SELECT 
    a.tablespace_name 表空間名稱,
    ROUND(total_space/1024/1024, 2) 總量_MB,
    ROUND(free_space/1024/1024, 2) 剩餘_MB,
    ROUND((free_space/total_space)*100, 2) || '%' 剩餘比例
FROM 
    (SELECT tablespace_name, SUM(bytes) free_space 
     FROM dba_free_space 
     GROUP BY tablespace_name) a,
    (SELECT tablespace_name, SUM(bytes) total_space 
     FROM dba_data_files 
     GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name
ORDER BY (free_space/total_space);

2. 查詢特定用戶 (Schema) 物件佔用空間

SELECT 
    segment_name 物件名稱,
    segment_type 類型,
    tablespace_name 表空間,
    ROUND(bytes/1024/1024, 2) 大小_MB,
    initial_extent,
    next_extent
FROM dba_segments 
WHERE owner = 'CAL'  -- 替換為目標用戶
ORDER BY bytes DESC;

3. 綜合監控:永久 + 暫存表空間統一視圖

SELECT 
    d.tablespace_name,
    d.Space "總量_MB",
    d.Blocks 總區塊數,
    (d.Space - NVL(f.free_space,0)) "已用_MB",
    ROUND((1 - NVL(f.free_space,0)/d.Space)*100, 2) "使用率_%",
    NVL(f.free_space,0) "可用_MB"
FROM 
    (SELECT tablespace_name, 
            ROUND(SUM(bytes)/1024/1024,2) Space, 
            SUM(blocks) Blocks 
     FROM dba_data_files 
     GROUP BY tablespace_name) d,
    (SELECT tablespace_name, 
            ROUND(SUM(bytes)/1024/1024,2) free_space 
     FROM dba_free_space 
     GROUP BY tablespace_name) f
WHERE d.tablespace_name = f.tablespace_name(+)

UNION ALL

SELECT 
    d.tablespace_name,
    d.Space "總量_MB",
    d.blocks 總區塊數,
    NVL(u.used_space,0) "已用_MB",
    ROUND(NVL(u.used_space,0)/d.Space*100, 2) "使用率_%",
    NVL(u.free_space,0) "可用_MB"
FROM 
    (SELECT tablespace_name, 
            ROUND(SUM(bytes)/1024/1024,2) Space, 
            SUM(blocks) blocks 
     FROM dba_temp_files 
     GROUP BY tablespace_name) d,
    (SELECT tablespace_name, 
            ROUND(SUM(bytes_used)/1024/1024,2) used_space,
            ROUND(SUM(bytes_free)/1024/1024,2) free_space
     FROM v$temp_space_header 
     GROUP BY tablespace_name) u
WHERE d.tablespace_name = u.tablespace_name(+);

關鍵視圖說明

自動化監控建議

  • 建立排程 Job 每小時執行查詢 3,結果寫入監控表
  • 設定閾值告警:使用率 > 85% 發送郵件/簡訊
  • 結合 dba_extents 監控碎片程度,規劃整理
  • 暫存表空間使用率長期高位 → 檢查大型排序/雜湊操作、調整 PGA_AGGREGATE_TARGET
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
視圖用途
dba_data_files永久表空間資料檔大小
dba_free_space永久表空間可用空間
dba_temp_files暫存表空間檔案大小
v$temp_space_header暫存表空間實際使用/可用
dba_segments段(表/索引等)實際佔用空間