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

Oracle 表空間監控全指南:使用率、物件大小與資料庫資訊一網打盡

     編輯:Oracle 資料庫基礎

表空間是 Oracle 儲存管理的邏輯單元,其使用率直接關係資料庫能否正常寫入。本文彙整多維度的表空間監控查詢,涵蓋剩餘空間、使用率統計、物件級大小分析,並補充資料庫版本、建立日期、歸檔模式等基礎資訊查詢,助您建立完整的容量管理視野。

表空間使用情況查詢

1. 簡易版:各表空間剩餘空間 (MB)

SELECT SUM(bytes)/(1024*1024) AS free_space_mb,
       tablespace_name
FROM   dba_free_space
GROUP  BY tablespace_name;

2. 進階版:總量/已用/剩餘/使用率完整視圖

透過 SYS.SM$TS_AVAIL、SYS.SM$TS_USED、SYS.SM$TS_FREE 三個內部視圖聯結:

SELECT A.tablespace_name,
       A.bytes AS total_bytes,
       B.bytes AS used_bytes,
       C.bytes AS free_bytes,
       ROUND((B.bytes*100)/A.bytes, 2) AS pct_used,
       ROUND((C.bytes*100)/A.bytes, 2) AS pct_free
FROM   sys.sm$ts_avail A,
       sys.sm$ts_used B,
       sys.sm$ts_free C
WHERE  A.tablespace_name = B.tablespace_name
AND    A.tablespace_name = C.tablespace_name;

說明:此查詢需 DBA 權限,且依賴內部統計視圖,準確度較高,適合納入定期巡檢報表。

資料庫物件與基礎資訊

1. 物件類型與狀態統計

SELECT owner, object_type, status, COUNT(*) AS cnt
FROM   all_objects
GROUP  BY owner, object_type, status;

2. 資料庫版本資訊

SELECT version
FROM   product_component_version
WHERE  SUBSTR(product, 1, 6) = 'Oracle';

3. 資料庫建立日期與歸檔模式

SELECT created, log_mode
FROM   v$database;

索引空間佔用深度分析

針對特定表空間與表名模式的索引大小排序:

SELECT a.segment_name,
       a.tablespace_name,
       b.table_name,
       a.bytes/1024/1024 AS mbytes,
       a.blocks
FROM   user_segments a, user_indexes b
WHERE  a.segment_name = b.index_name
AND    a.segment_type = 'INDEX'
AND    a.tablespace_name = 'APPINDEX'
AND    b.table_name LIKE '%PREP%'
ORDER  BY table_name, a.bytes/1024/1024 DESC;

管理建議

  • 設定表空間使用率閾值告警 (建議 80% 預警,90% 緊急)。
  • 啟用自動擴展 (AUTOEXTEND ON) 並設定 MAXSIZE 避免無限增長。
  • 定期執行 PURGE DBA_RECYCLEBIN 釋放回收站空間。
  • 結合 DBA_SEGMENTS 與 DBA_EXTENTS 分析碎片程度,評估是否需重組。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved