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

Oracle 大表空間對象大小快速排查:按用戶分治突破 OEM 性能瓶頸

     編輯:Oracle 資料庫基礎

單表空間 2TB、使用率 85%,OEM 等圖形工具查詢超時。採用「按用戶分治」思路:各用戶登錄查詢自身在該表空間下的段大小,彙總定位大對象,實現秒級定位。

核心 SQL

SELECT segment_name, SUM(bytes)/1024/1024 AS size_mb
FROM user_segments
WHERE tablespace_name = 'TARGET_TBS'
GROUP BY segment_name
ORDER BY 2 DESC;

操作流程

  1. 獲取該表空間下所有擁有對象的用戶列表:SELECT DISTINCT owner FROM dba_segments WHERE tablespace_name='TARGET_TBS';
  2. 依次切換至各用戶執行上述 SQL,導出結果
  3. 彙總排序,鎖定 TOP N 大表/索引
  4. 針對性執行 ALTER TABLE ... MOVE、ALTER INDEX ... REBUILD、歸檔歷史數據、啟用壓縮等釋放動作

進階優化

  • 若用戶數極多,可編寫 PL/SQL 循環動態切換 CURRENT_SCHEMA 批量收集,插入臨時表彙總
  • 配合 DBA_SEGMENTS 直接查詢避免切換用戶(需 DBA 權限)
  • 定期收集段統計信息:DBMS_STATS.GATHER_SCHEMA_STATS 提升查詢計劃準確度

分治思想將單點大查詢拆解為多點小查詢,繞過工具性能瓶頸,是超大表空間運維的通用技巧。

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