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

Oracle AWR 與 ASH 進階管理 (二):手動快照、基線、保留期與采樣設定

     編輯:Oracle 資料庫基礎

ASH 採樣資料量控制

ASH 每秒對作用中 Session 採樣,資料量龐大。寫入磁碟 (AWR) 時僅保留 約 10% 採樣,採用 DIRECT_PATH INSERT 減少 Redo 產生,最小化效能影響。

STATISTICS_LEVEL 參數影響

層級說明
BASIC關閉 AWR 統計計算與衍生值,僅收集極少量統計。
TYPICAL (預設)收集典型監控所需統計,平衡效能與可見度。
ALL捕獲所有可能統計含 OS 資訊,僅建議短期診斷使用。

DBMS_WORKLOAD_REPOSITORY 常用程序

1. 手動建立快照

BEGIN
  DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
END;
/
-- 驗證
SELECT COUNT(*) FROM WRH$_ACTIVE_SESSION_HISTORY;

2. 手動刪除快照區間

BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(
    LOW_SNAP_ID  => 96,
    HIGH_SNAP_ID => 96,
    DBID         => 1160732652);
END;
/

3. 修改採集間隔與保留期

-- 現況查詢
SELECT * FROM DBA_HIST_WR_CONTROL;

-- 修改:採集間隔 30 分鐘、保留 5 天 (單位:分鐘)
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
  INTERVAL => 30,
  RETENTION => 5*24*60);

-- 關鍵參數限制
-- INTERVAL: 0=關閉自動採集,最小 10 分鐘,典型 10/20/30/60/120
-- RETENTION: 0=關閉自動清除,最小 1 天 (1440 分鐘),預設 7 天 (10080 分鐘)
-- TOPNSQL: 每類 SQL 捕獲前 N 筆,DEFAULT 由系統決定

基線 (Baseline) 管理

基線標記重要時段的快照對 (單一對),受保護不被自動清除,便於前後對比。

建立基線

EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
  START_SNAP_ID => 95,
  END_SNAP_ID   => 98,
  BASELINE_NAME => 'apply_interest_1');

查詢現有基線

SELECT * FROM DBA_HIST_BASELINE;
SELECT * FROM WRM$_BASELINE;

刪除基線

-- 僅刪除基線標記,保留快照
EXEC DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(
  BASELINE_NAME => 'apply_interest_1',
  CASCADE => FALSE);

-- 連同快照一併刪除
EXEC DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(
  BASELINE_NAME => 'apply_interest_2',
  CASCADE => TRUE);

實務建議

  • 生產環境建議 RETENTION ≥ 30 天,配合足夠 SYSAUX 空間。
  • 關鍵批次作業時段 (如月結、報表) 主動 CREATE_SNAPSHOT 與 CREATE_BASELINE。
  • 效能調整前後建立兩組基線,使用 DBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT 自動產生差異報告。
  • STATISTICS_LEVEL = TYPICAL 為長期運行最佳平衡;排查疑難雜症臨時改 ALL 並事後改回。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved