47-Oracle ASH報告解讀

上一期生成了ASH報告后,就需要解讀報告關鍵信息。ASH的使用可以快速定位瞬時性能問題。生產環境的場景時間緊、任務重,但是必須要結合具體業務分析,同時借助其他工具做報告做趨勢分析。

一、ASH 技術原理?

?1. 核心機制?
  • ?采樣原理?:ASH 每秒采樣一次活動會話(狀態為 ACTIVE,非空閑等待),由后臺進程 ?MMNL?(Memory Monitor Light)執行
  • ?數據存儲?:
    • ?內存?:采樣數據存儲在 SGA 的循環緩沖區(V$ACTIVE_SESSION_HISTORY),緩沖區大小由隱含參數 _ash_size 控制(默認約 1MB~30MB)
    • ?持久化?:MMNL 定期將內存數據寫入 AWR 表 WRH$_ACTIVE_SESSION_HISTORY(視圖為 DBA_HIST_ACTIVE_SESS_HISTORY),持久化比例由 _ash_disk_filter_ratio 控制(默認 1/10)
? 采樣偏差?:ASH 偏向捕獲長時間等待事件(例如 100ms 事件被采樣的概率是 10ms 事件的 10 倍)
2. 核心術語?

?術語?

?解釋?

?分析意義?

?DB Time?

所有活動會話消耗的總時間(CPU + 等待時間)

衡量系統負載強度,高 DB Time 表明性能瓶頸

?Top Events?

排名前幾的等待事件(如db file sequential read,

enq: TX - row lock contention)

定位系統級瓶頸(事件占比 >30% 需優先處理)

?Load Profile?

活動會話數、邏輯讀/秒、物理讀/秒等負載指標

判斷資源壓力(如物理讀 >500/秒需優化 I/O)

?SQL ID?

消耗資源最多的 SQL 唯一標識

關聯高負載 SQL 與等待事件

?Blocking Session?

阻塞其他會話的源頭會話 ID

診斷鎖爭用問題(如行鎖阻塞鏈)

?3. 關鍵隱含參數?

?參數名?

?默認值?

?作用?

_ash_sampling_interval

1000ms

采樣間隔(毫秒)

_ash_enable

TRUE

啟用/禁用 ASH 采樣

_ash_sample_all

FALSE

是否采樣空閑等待會話(通常僅ACTIVE會話)

_ash_disk_write_enable

TRUE

控制是否持久化到磁盤

4. ?頂級等待事件(Top User Events)??

識別系統級瓶頸的核心區域

關鍵閾值?:
  • ?單事件占比 > 30%??:需要立即處理
  • ?累計等待時間 > 50%??:系統級瓶頸
5. ?高負載SQL(Top SQL with Top Events)??
資源消耗最大的SQL語句分析

?字段?

?診斷意義?

?優化閾值?

SQL ID

SQL唯一標識

-

% Activity

SQL影響范圍

>5%需優先優化

Executions

執行頻率

>100/分鐘需關注

Buffer Gets

邏輯讀消耗

單次>10,000需優化

Scan Type

掃描方式

FTS(全表掃描)需建索引

關聯等待事件

SQL瓶頸類型

關聯Top Events分析

典型優化場景?:
  • 高頻全表掃描 → 創建缺失索引
  • 高邏輯讀SQL → SQL重寫/綁定變量
  • 長時鎖等待SQL → 業務邏輯優化
6. ?活動會話時間分布(Activity Over Time)??
10等分時間片的負載趨勢分析
? 診斷要點?:
  • ?時段突增?:關聯具體SQL/事件(如時段3的db file sequential read)
  • ?持續高峰?:系統容量不足
  • ?周期性波動?:定時任務影響
7. ?阻塞會話分析(Blocking Sessions)??
鎖爭用問題診斷的核心區域
? 關鍵字段?:
  • BLOCKING_SESSION:阻塞源會話ID
  • WAIT_TIME:等待時間(>1秒需關注)
  • EVENT:等待事件類型
  • SQL_ID:阻塞源SQL

二、ASH報告診斷四步法

分析流程?

定位核心瓶頸?:

  • 查看?Top Events,篩選占比 >30% 的等待事件(如行鎖、I/O 等待)
  • 檢查?Load Profile 中的活動會話數:若持續超過 CPU 核數 × 1.5,表明資源爭用

關聯資源消耗?:

  • 在?Top SQL with Top Events 中,找到高 % Activity(>5%)的 SQL,分析其執行計劃與資源消耗
  • 示例 SQL(查找高邏輯讀 SQL):
    --注意參數
    SELECT sql_id, SUM(buffer_gets) total_gets
    FROM dba_hist_active_sess_history
    WHERE sample_time BETWEEN :start AND :end
    GROUP BY sql_id ORDER BY total_gets DESC;

追溯阻塞鏈?:

  • 通過?Blocking Sessions 定位鎖源頭會話,結合 DBA_HIST_ACTIVE_SESS_HISTORY 分析鎖類型(如 enq: TX - row lock contention)

時段負載分析?:

  • 使用?Activity Over Time 圖表定位突增時段(如 10:05-10:08),關聯該時段內的 SQL 與事件

?三、關鍵性能問題速查表

?現象?

?可能原因?

?驗證方法?

?log file sync > 30%?

redo寫入延遲

檢查redo日志文件性能

?enq: TX - row lock contention?

行鎖爭用

分析阻塞會話鏈

?db file sequential read?

索引掃描I/O慢

檢查磁盤IOPS/延遲

?buffer busy waits?

熱塊爭用

檢查對象訪問模式

?CPU used when call started?

SQL效率低下

分析Top SQL邏輯讀

四、案例解析?

?案例 1:Oracle 11g 行鎖阻塞(enq: TX - row lock contention)??
  • ?問題現象?:ASH 報告中 enq: TX - row lock contention 占比 87.62%
? 分析過程?:
  • 在 Top Events 中確認行鎖為頂級事件。
  • 通過關聯的 SQL_ID 找到UPDATE 卡事務的 SQL:
    --更新業務側,等待很久
    UPDATE HIS.FEI_ACCOUNT SET SHYUEDU = SHYUEDU - 1000 
    WHERE HUANGZHE_ID = 9028;
  • 溯源 BLOCKING_SESSION,發現未提交的事務持有行鎖
  • 解決方案?:
    • 優化事務提交邏輯,避免長事務。
    • 添加索引減少行鎖競爭范圍

?

案例 2:Oracle 19c RAC 全局 I/O 瓶頸?
  • ?問題現象?:gc buffer busy 和 db file sequential read 等待事件在多個實例同時出現。
  • ?分析過程?:
  1. a.RAC ASH 報告顯示跨實例的高 gc buffer busy。
  2. 關聯 SQL 發現全表掃描頻繁,導致全局緩存爭用。
  3. 檢查?Buffer Activity 部分,Consistent Gets 異常高
  • ?解決方案?:
    • 為高頻查詢字段添加索引,減少全表掃描。
    • 調整?db_cache_size 和 inmemory_size,優化緩沖區命中率
案例 3:短時 CPU 高負載(11g 單機)??
  • ?問題現象?:用戶反饋系統在 14:00-14:05 卡頓,但 AWR 未捕獲異常。
  • ?分析過程?:
  1. 生成精確時段的 ASH 報告(14:00-14:05)。
  2. 發現?CPU used when call started 占比 95%,關聯 SQL 為低效聚合查詢。
  3. 該 SQL 執行計劃使用全表掃描而非索引
  • ?解決方案?:
    • 優化 SQL,添加復合索引。
    • 調整?cursor_sharing 減少硬解析

五、ASH 的局限和最佳實踐?

1. ?數據覆蓋風險?:

  • 內存緩沖區僅保留約 1 小時數據,高并發時可能被覆蓋,需及時捕獲

2. ?RAC 環境要點?:

  • 使用?ashrpti.sql 生成全局報告,分析跨實例等待事件(如 gc buffer busy)
ASH報告分析最佳實踐

采樣時間選擇?:

  • 問題發生期精確分析:5-15分鐘
  • 趨勢分析:30-60分鐘

對比分析?:

-- 比如工作日 vs 周末,注意時間參數
SELECT event, COUNT(*) 
FROM dba_hist_active_sess_history
WHERE sample_time BETWEEN <高負載期間> AND <低負載期間>
GROUP BY event;

關聯工具使用?:

  • 瞬時問題:ASH + SQL Monitor
  • 歷史分析:ASH + AWR
  • 實時監控:ASH + OEM

保存策略優化?:

-- 延長ASH保留時間(單位:分鐘)
EXEC DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings(retention => 4320    -- 3天保留期(默認=4320分鐘)
);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85328.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85328.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85328.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

“本地化思維+模塊化體驗”:一款輕量數據中心監控系統的真實測評

“本地化思維模塊化體驗”&#xff1a;一款輕量數據中心監控系統的真實測評 在數據中心運維逐步精細化的今天&#xff0c;一款真正貼合本地用戶習慣、設計有溫度的系統并不多見。近期體驗了一款功能全面、邏輯清晰的監控平臺&#xff0c;給人留下了深刻印象。并不是廣。今天就從…

詞編碼模型有哪些

詞編碼模型有哪些 詞編碼模型在高維向量空間的關系解析與實例說明 如Word2Vec、BERT、Qwen等 一、高維向量空間的基礎概念 詞編碼模型(如Word2Vec、BERT、Qwen等)的核心是將自然語言符號映射為稠密的高維向量,使語義相近的詞匯在向量空間中位置接近。以Qwen模型為例,其…

elementui el-select 獲取value和label 以及 對象的方法

獲取 el-select 的 value 和 label 值 在 Element UI 的 el-select 組件中&#xff0c;可以通過以下方法獲取選項的 value 和 label 值。 1、綁定 v-model 獲取 value el-select 通常通過 v-model 綁定 value 值&#xff0c;直接訪問綁定的變量即可獲取當前選中的 value。…

樹莓派與嵌入式系統實驗報告

一、Linux 系統編譯工具鏈實踐&#xff1a;mininim 源碼編譯 虛擬機 Ubuntu 編譯流程 環境配置問題 編譯時遇到虛擬機無法聯網的情況&#xff0c;通過連接個人熱點解決&#xff08;校園網限制導致無法訪問外部資源&#xff09;。 執行 ./bootstrap 時報錯 gnulib-tool: command…

IDEA部署redis測試

新建springboot&#xff0c;項目改為&#xff1a;testredis E:\ideaproject\testredis\src\main\java\org\example\testredis\TestredisApplication.java 代碼為&#xff1a; package org.example.testredis;import org.springframework.boot.SpringApplication; import org.…

旅游服務禮儀實訓室:從歷史演進到未來創新的實踐探索

一、旅游服務禮儀實訓室的歷史演進&#xff1a;從禮制規范到職業化培養 旅游服務禮儀實訓室的建設并非一蹴而就&#xff0c;其發展歷程與人類對禮儀認知的深化及職業教育體系的完善密切相關。 1. 古代禮儀教育的萌芽 禮儀作為社會行為規范&#xff0c;最早可追溯至中國夏商周…

Could not find a declaration file for module ‘..XX‘.

1. 添加 Vue 聲明文件 如果您還沒有為 .vue 文件創建類型聲明&#xff0c;可以通過創建一個新的類型聲明文件來解決該問題。 步驟&#xff1a; 在您的項目根目錄下創建一個名為 shims-vue.d.ts 的文件&#xff08;您可以選擇其他名稱&#xff0c;但建議使用常見名稱以便于識…

OpenCV CUDA模塊設備層-----反正切(arctangent)函數atan()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 對輸入的 uchar1 像素值&#xff08;范圍 [0, 255]&#xff09;&#xff0c;先歸一化到 [0.0, 1.0] 浮點區間&#xff0c;然后計算其反正切值 at…

java中常見的排序算法設計介紹

排序算法 復雜度原地排序冒泡排序算法邏輯時間復雜度&#xff1a;最好O(n)&#xff0c;最壞和平均O(n^2)冒泡排序:穩定性算法 選擇排序算法邏輯時間復雜度&#xff1a;最好&#xff0c;最壞和平均都是O(n^2)選擇排序:不穩定性算法 插入排序算法邏輯時間復雜度&#xff1a;最好O…

深度學習系列81:MCP快速上手

MCP 是一種開放協議&#xff0c;通過標準化的服務器實現&#xff0c;使 AI 模型能夠安全地與本地和遠程資源進行交互。MCP 可幫助你在 LLM 之上構建智能代理和復雜的工作流。MCP 采用客戶端-服務器架構&#xff0c;主機應用程序可以連接到多個服務器。 這里用個demo展示一下如何…

【Python機器學習(一)】NumPy/Pandas手搓決策樹+使用Graphviz可視化(以西瓜書數據集為例)

下題來源于筆者學校的《模式識別與機器學習》課程的作業題,本文將通過使用NumPy處理數學運算,Pandas處理數據集,Graphviz實現決策樹可視化等Python庫來實現決策樹算法及其格式化。 導入用到的Python庫: import numpy as np import pandas as pd from graphviz import Digr…

react-activation 組件級緩存解決方案

文章目錄 一、KeepAlive 組件二、AliveScope 容器三、useAliveController Hook四、生命周期五、完整示例 react-activation 主要解決 React 項目中的「頁面緩存」需求(是第三方庫&#xff0c;非React 官方)&#xff0c;類似于 Vue 中的 <KeepAlive>&#xff1a; 功能說明…

CentOS 7內核升級方案

關于升級 CentOS 7 系統內核至 4.19 版本的可執行升級方案,可根據實際情況進行調整和完善,希望能對大家有所幫助: 一、升級背景與目的 隨著業務的發展和系統穩定性的要求,當前 CentOS 7 系統所使用的內核版本 3.10.0-1160.el7.x86_64 已經無法滿足部分新功能需求以及面臨…

樹莓派實驗實踐記錄與技術分析

一、內核驅動開發&#xff1a;hello 模塊實現 驅動程序代碼 #include <linux/init.h> #include <linux/module.h> static int __init hello_init(void) { printk(KERN_INFO "hello kernel\n"); return 0; } module_init(hello_init); static void …

【秦九紹算法】小紅的 gcd

題目 牛客網&#xff1a;小紅的 gcd 題目分析 我們知道&#xff0c;求gcd就用歐幾里得算法&#xff08;輾轉相除法&#xff09;&#xff1a;gcd(a,b)gcd(b,a mod b)。但是這題的a非常大&#xff0c;最大是一個1e6位數&#xff0c;無法使用任何數據類型存儲。如果使用高精度…

AWS服務監控之EC2內存監控

首先在IAM里找到角色&#xff0c;創建角色&#xff0c;選擇EC2 然后在被監控的機器上安裝cloudwatch-agent 官方鏈接在本地服務器上安裝 CloudWatch 代理 - Amazon CloudWatch wget https://s3.amazonaws.com/amazoncloudwatch-agent/redhat/amd64/latest/amazon-cloudwatch-a…

鴻蒙 ArkWeb 和 H5混編開發

ArkWeb Web 相關標準技術(HTML/CSS/JS)&#xff0c;是業內支持性最廣泛的技術&#xff0c;可以在最廣泛的平臺下實現“一次編寫到處運行”&#xff1b;大部分對性能無需極致要求的應用頁面&#xff0c;都可以使用 Web 技術來實現。 鴻蒙 ArkWeb Kit&#xff08;方舟 Web&…

設計模式-迪米特法則(Law of Demeter, LoD)

迪米特法則&#xff08;Law of Demeter, LoD&#xff09; 別名&#xff1a;最少知識原則&#xff08;Least Knowledge Principle&#xff09; 核心思想&#xff1a;一個對象應盡可能少地與其他對象發生交互&#xff0c;只與直接的朋友&#xff08;成員變量、方法參數、方法返回…

python獲取AB直線間任意一點經緯度

獲取AB直線間任意一點經緯度 1、目標 已知A點經緯度,距離;B點經緯度,距離,如果C點在AB之間,且知道C點距離,求C點的經緯度信息。 目標:在AB這條直線上,根據給定的距離(從A點開始沿直線到某點的距離)來求該點的經緯度。 2、方法 首先計算AB的總長度(大圓距離),…

Android實戰——系統字體庫加載流程

Android 系統字體庫指的是在Android設備上用于顯示文本的字體集合。隨著Android系統的更新,其對字體的支持也日益增強,允許開發者和用戶更靈活地定制界面文字顯示。 一、字體庫介紹 1、字體庫文件 字體庫文件是指存儲字體數據的文件,這些文件包含了創建文本字符所需的所有…