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(+);
關鍵視圖說明
| 視圖 | 用途 |
dba_data_files | 永久表空間資料檔大小 |
dba_free_space | 永久表空間可用空間 |
dba_temp_files | 暫存表空間檔案大小 |
v$temp_space_header | 暫存表空間實際使用/可用 |
dba_segments | 段(表/索引等)實際佔用空間 |
自動化監控建議
- 建立排程 Job 每小時執行查詢 3,結果寫入監控表
- 設定閾值告警:使用率 > 85% 發送郵件/簡訊
- 結合
dba_extents 監控碎片程度,規劃整理
- 暫存表空間使用率長期高位 → 檢查大型排序/雜湊操作、調整
PGA_AGGREGATE_TARGET
- 上一篇文章: Delphi 7 + Crystal Reports 9.2 部署檔案清單與註冊指南
- 下一篇文章: Oracle 命名管道實現 exp/imp 零磁碟落地導入導出
Copyright ©
程式碼之家 All Rights Reserved