目錄標題
- AWR 性能診斷與報告生成
- 1. 檢查 AWR 系統狀態
- 2. 查看數據庫中的所有表空間
- 3. 查看現有的 AWR 快照
- 4. 設置 AWR 快照的時間間隔
- 5. 創建 AWR 快照
- 6. 查看最新的 AWR 快照
- 7. 生成 AWR HTML 報告
- 8. 將 AWR 報告保存到指定文件
- 鏈接
- 總結
- 自動工作集負載信息庫 AWR 報告解析指南
- 一、AWR 概述
- 二、AWR 報告結構及各部分詳細解析
- (一)HEAD INFO(AWR 報告頭部信息)
- (二)Report Summary(AWR 報告摘要)
- (三)Main Report(AWR 報告主體部分)
- 三、總結
AWR 性能診斷與報告生成
AWR(自動工作負載倉庫)用于收集、處理和保存數據庫性能數據。通過 AWR,用戶可以生成數據庫性能報告,診斷潛在的性能瓶頸。
1. 檢查 AWR 系統狀態
首先,可以檢查 AWR 系統的狀態,確認是否啟用。
SELECT sf_check_awr_sys;
2. 查看數據庫中的所有表空間
如果需要分析數據庫中表空間的使用情況,可以先查詢數據庫的所有表空間信息。
SELECT tablespace_name FROM dba_tablespaces;
3. 查看現有的 AWR 快照
AWR 快照是數據庫性能數據的記錄,查看當前系統中已有的快照。
SELECT * FROM SYS.WRM$_SNAPSHOT;
4. 設置 AWR 快照的時間間隔
可以通過 DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL
來設置 AWR 快照的采集間隔。假設我們想設置為 10 分鐘。
DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(10);
此命令會設置快照生成的時間間隔為 10 分鐘。
5. 創建 AWR 快照
可以手動創建 AWR 快照,以便收集當前數據庫的性能數據。
DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
執行此命令后,AWR 快照將被創建并保存,方便后續查看和分析。
6. 查看最新的 AWR 快照
再次查詢 WRM$_SNAPSHOT
表,查看新生成的快照記錄。
SELECT * FROM SYS.WRM$_SNAPSHOT;
7. 生成 AWR HTML 報告
可以通過 DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML
函數生成 AWR 報告,以 HTML 格式展示。以下示例生成的是快照 6 和快照 7 之間的報告:
SELECT * FROM TABLE (DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(6, 7));
8. 將 AWR 報告保存到指定文件
如果希望將生成的 AWR 報告保存到指定的文件路徑,可以使用 SYS.AWR_REPORT_HTML
。以下命令將報告保存為 AWR6_7.HTML
文件,存儲路徑為 /home/dmdba/
。
SYS.AWR_REPORT_HTML(6, 7, '/home/dmdba/', 'AWR6_7.HTML');
這會將快照 6 和快照 7 之間的報告輸出為 HTML 文件,并保存到 /home/dmdba/
目錄。
鏈接
DBMS_WORKLOAD_REPOSITORY 包 - 創建、檢測、刪除語句
總結
通過上述步驟,你可以利用 AWR 進行數據庫性能診斷,設置快照采集間隔,手動創建快照,并生成 HTML 格式的 AWR 報告。生成的報告可以用于分析數據庫性能,發現潛在的瓶頸和優化點。
確保你有足夠的權限執行這些操作,特別是在使用 DBMS_WORKLOAD_REPOSITORY
包時。如果有任何問題,可以根據生成的報告進一步診斷數據庫性能。
ka cp dameng-753de107-0-0:/home/dmdba/AWR6_7.HTML ./AWR6_7.HTML
自動工作集負載信息庫 AWR 報告解析指南
AWR 報表解析說明
一、AWR 概述
自動工作集負載信息庫 AWR(Automatic Workload Repository)是數據庫性能監控和分析的重要工具,它能夠提供某一時間段內整個系統的報表數據。通過生成并解讀 AWR 報告,用戶可以深入了解指定時間段內數據庫系統的性能狀況,發現潛在的性能瓶頸和問題,從而采取相應的優化措施。
二、AWR 報告結構及各部分詳細解析
(一)HEAD INFO(AWR 報告頭部信息)
該部分包含數據庫基本信息(DB INFO)、實例運行環境基本信息(HOST INFO)、快照統計基本信息(SNAP INFO)三個關鍵子部分,為后續的性能分析提供基礎背景數據。
- DB INFO(數據庫基本信息)
- 字段名:數據庫名稱、數據庫版本、字符集等。
- 說明:這些信息有助于識別當前分析的數據庫的基本特征,不同版本的數據庫可能在性能表現和優化策略上存在差異,字符集也可能影響某些操作的性能。
- 計算方式:這些信息通常是數據庫系統在安裝和配置時確定的,直接從數據庫的元數據中獲取,無需計算。
- HOST INFO(實例運行環境基本信息)
- 字段名:主機名、操作系統類型、CPU 核心數、內存總量等。
- 說明:了解數據庫實例運行的硬件和軟件環境,對于判斷系統資源是否充足以及是否存在硬件瓶頸非常重要。例如,CPU 核心數不足可能導致高并發情況下的性能下降。
- 計算方式:主機名和操作系統類型從操作系統的配置信息中獲取,CPU 核心數和內存總量可以通過操作系統的系統調用或監控工具獲取。
- SNAP INFO(快照統計基本信息)
- 字段名:快照開始時間、快照結束時間、快照間隔、快照編號等。
- 說明:這些信息明確了 AWR 報告所涵蓋的時間段,有助于分析在特定時間段內數據庫的性能變化情況。例如,對比不同時間段的快照數據可以發現性能的波動規律。
- 計算方式:快照開始時間和結束時間由數據庫系統在生成快照時記錄,快照間隔為結束時間減去開始時間,快照編號是數據庫系統為每個快照分配的唯一標識符。
(二)Report Summary(AWR 報告摘要)
該部分提供了數據庫性能的關鍵摘要信息,涵蓋內存池信息報告、緩存池信息報告、兩次快照之間的數據庫負載概況、內存命中率及數據庫實例操作的效率報告、系統中最嚴重的 5 個等待等方面。
- Memory Pool(內存池信息報告)
- 字段名:內存池總大小、已使用內存池大小、空閑內存池大小、內存池使用率等。
- 說明:內存池是數據庫用于存儲各種數據結構和緩存的重要資源,了解內存池的使用情況可以判斷是否存在內存不足的問題,以及是否需要調整內存分配策略。
- 計算方式:內存池總大小在數據庫配置時確定,已使用內存池大小通過統計當前內存池中已分配的內存塊大小得到,空閑內存池大小為總大小減去已使用大小,內存池使用率 = 已使用內存池大小 / 內存池總大小 * 100%。
- Buffer Pool(緩存池信息報告)
- 字段名:緩存池總大小、緩存命中率、緩存未命中率、緩存讀次數、緩存寫次數等。
- 說明:緩存池用于緩存數據庫中的數據塊,提高數據訪問速度。緩存命中率是衡量緩存池性能的重要指標,命中率越高,說明緩存的效果越好,減少了磁盤 I/O 操作。
- 計算方式:緩存命中率 = 緩存命中次數 / (緩存命中次數 + 緩存未命中次數) * 100%,緩存未命中率 = 1 - 緩存命中率,緩存讀次數和緩存寫次數通過數據庫系統的計數器統計得到。
- Load Profile(兩次快照之間的數據庫負載概況)
- 字段名:每秒事務數(TPS)、每秒查詢數(QPS)、CPU 使用率、磁盤 I/O 速率等。
- 說明:這些指標反映了數據庫在指定時間段內的負載情況,有助于判斷數據庫是否處于高負載狀態,以及哪些資源成為了性能瓶頸。例如,高 TPS 和 QPS 可能導致 CPU 或磁盤 I/O 壓力過大。
- 計算方式:TPS = 事務總數 / 時間間隔(秒),QPS = 查詢總數 / 時間間隔(秒),CPU 使用率通過操作系統的監控工具獲取,磁盤 I/O 速率 = 磁盤讀寫總字節數 / 時間間隔(秒)。
- Instance Efficiency Percentages(內存命中率及數據庫實例操作的效率報告)
- 字段名:緩沖緩存命中率、庫緩存命中率、SQL 解析效率等。
- 說明:這些指標衡量了數據庫實例在不同方面的操作效率,高命中率和效率表明數據庫的性能較好。例如,高緩沖緩存命中率意味著大部分數據可以從緩存中獲取,減少了磁盤 I/O。
- 計算方式:緩沖緩存命中率 = 緩沖緩存命中次數 / (緩沖緩存命中次數 + 緩沖緩存未命中次數) * 100%,庫緩存命中率和 SQL 解析效率的計算方式類似,根據相應的命中和未命中次數統計得出。
- Top 5 Timed Foreground Events(系統中最嚴重的 5 個等待)
- 字段名:等待事件名稱、等待時間、等待次數等。
- 說明:等待事件是數據庫性能分析的重要關注點,這些事件表示數據庫在某些操作上需要等待資源或完成特定任務。了解最嚴重的等待事件可以定位性能瓶頸所在,例如,大量的鎖等待可能表示存在并發問題。
- 計算方式:等待時間通過數據庫系統的計時器統計每個等待事件的總時間,等待次數統計每個等待事件發生的次數。
(三)Main Report(AWR 報告主體部分)
該部分包含多個方面的詳細統計信息,是深入分析數據庫性能的核心內容。
- Wait Events Statistics(等待事件統計信息)
- 字段名:等待事件名稱、總等待時間、平均等待時間、等待次數、等待事件占比等。
- 說明:詳細記錄了各種等待事件的發生情況,通過分析這些數據可以了解數據庫在哪些方面存在性能瓶頸,例如,長時間的磁盤 I/O 等待可能表示磁盤性能不佳。
- 計算方式:總等待時間是該等待事件在指定時間段內的累計等待時間,平均等待時間 = 總等待時間 / 等待次數,等待事件占比 = 該等待事件總等待時間 / 所有等待事件總等待時間 * 100%。
- SQL Statistics(SQL 語句相關統計)
- 字段名:SQL 語句文本、執行次數、總執行時間、平均執行時間、CPU 時間、磁盤 I/O 時間等。
- 說明:分析 SQL 語句的執行情況有助于找出性能較差的 SQL 語句,進行針對性的優化。例如,執行次數多且執行時間長的 SQL 語句可能需要優化索引或查詢邏輯。
- 計算方式:總執行時間是該 SQL 語句在指定時間段內的累計執行時間,平均執行時間 = 總執行時間 / 執行次數,CPU 時間和磁盤 I/O 時間通過數據庫系統的性能計數器統計得到。
- Instance Activity Statistics(實例活動統計信息)
- 字段名:事務總數、查詢總數、插入總數、更新總數、刪除總數等。
- 說明:這些統計信息反映了數據庫實例在指定時間段內的活動情況,有助于了解數據庫的業務操作模式和負載分布。例如,大量的插入操作可能對數據庫的性能產生不同的影響。
- 計算方式:通過數據庫系統的事務和操作計數器分別統計事務、查詢、插入、更新和刪除操作的總數。
- IO Stats(IO 信息)
- 字段名:磁盤讀次數、磁盤寫次數、磁盤讀字節數、磁盤寫字節數、磁盤 I/O 響應時間等。
- 說明:磁盤 I/O 是數據庫性能的重要瓶頸之一,了解磁盤 I/O 的情況可以判斷磁盤設備是否滿足數據庫的需求,是否需要進行磁盤優化或升級。
- 計算方式:磁盤讀次數和寫次數通過磁盤設備的計數器統計,磁盤讀字節數和寫字節數是相應操作的總字節數,磁盤 I/O 響應時間通過測量每次 I/O 操作的開始和結束時間計算得出。
- Buffer Pool Statistics(緩存區統計信息)
- 字段名:緩存區大小、緩存區命中率、緩存區替換次數、緩存區老化時間等。
- 說明:進一步詳細分析緩存區的性能,緩存區替換次數過多可能表示緩存區大小設置不合理,需要調整。
- 計算方式:緩存區命中率的計算方式與前面提到的類似,緩存區替換次數通過數據庫系統的計數器統計,緩存區老化時間是指緩存塊在緩存區中停留的平均時間。
- Wait Statistics(等待統計信息)
- 字段名:等待類型、總等待時間、等待次數、等待資源等。
- 說明:與等待事件統計信息類似,但從不同的維度進行統計,有助于更全面地了解數據庫的等待情況。
- 計算方式:總等待時間和等待次數的計算方式與前面相同,等待資源明確了等待事件所涉及的具體資源。
- Undo Statistics(撤銷的統計信息)
- 字段名:撤銷段使用大小、撤銷段擴展次數、撤銷事務數等。
- 說明:撤銷段用于回滾事務和提供讀一致性,了解撤銷段的使用情況可以判斷是否存在撤銷段不足或過度使用的問題。
- 計算方式:撤銷段使用大小通過統計撤銷段中已分配的空間得到,撤銷段擴展次數通過數據庫系統的計數器統計,撤銷事務數是在指定時間段內執行撤銷操作的事務數量。
- Lock Statistics(鎖統計信息)
- 字段名:鎖類型、鎖等待時間、鎖等待次數、鎖持有時間等。
- 說明:鎖是保證數據庫并發操作一致性的重要機制,但過多的鎖等待會影響數據庫的性能。分析鎖統計信息可以找出鎖競爭的熱點,優化并發控制策略。
- 計算方式:鎖等待時間和鎖等待次數通過數據庫系統的鎖管理模塊統計,鎖持有時間是指事務持有鎖的平均時間。
- Dead Lock Statistics(死鎖統計信息)
- 字段名:死鎖發生次數、死鎖涉及的事務數、死鎖發生時間等。
- 說明:死鎖是數據庫并發操作中可能出現的嚴重問題,了解死鎖的發生情況有助于找出死鎖的原因,采取相應的預防措施。
- 計算方式:死鎖發生次數通過數據庫系統的死鎖檢測機制統計,死鎖涉及的事務數是每次死鎖事件中涉及的事務數量,死鎖發生時間由數據庫系統記錄。
- Seg Activity Statistics(隔離區活動統計信息)
- 字段名:隔離區使用大小、隔離區讀寫次數、隔離區清理次數等。
- 說明:隔離區用于存儲臨時數據和中間結果,了解隔離區的活動情況可以判斷是否存在隔離區資源使用不合理的問題。
- 計算方式:隔離區使用大小通過統計隔離區中已分配的空間得到,隔離區讀寫次數通過數據庫系統的計數器統計,隔離區清理次數是在指定時間段內對隔離區進行清理操作的次數。
- Dictionary Cache Statistics(數據庫緩存信息)
- 字段名:數據庫緩存大小、緩存命中率、緩存未命中率、緩存刷新次數等。
- 說明:數據庫緩存用于緩存數據庫的元數據信息,提高元數據訪問速度。分析數據庫緩存的性能可以優化數據庫的元數據管理。
- 計算方式:緩存命中率和未命中率的計算方式與前面類似,緩存刷新次數通過數據庫系統的緩存管理模塊統計。
- Library Cache Statistics(庫緩存統計信息)
- 字段名:庫緩存大小、庫緩存命中率、庫緩存加載次數、庫緩存失效次數等。
- 說明:庫緩存用于緩存 SQL 語句的執行計劃和其他相關信息,提高 SQL 執行效率。了解庫緩存的使用情況可以優化 SQL 執行計劃的管理。
- 計算方式:庫緩存命中率的計算方式與前面相同,庫緩存加載次數是將 SQL 語句的執行計劃加載到庫緩存中的次數,庫緩存失效次數是庫緩存中執行計劃失效的次數。
- Memory Statistics(內存池的統計信息)
- 字段名:內存池分配次數、內存池釋放次數、內存池碎片率等。
- 說明:進一步詳細分析內存池的使用情況,內存池碎片率過高可能影響內存的分配效率,需要進行內存整理。
- 計算方式:內存池分配次數和釋放次數通過數據庫系統的內存管理模塊統計,內存池碎片率 = 碎片內存大小 / 內存池總大小 * 100%。
- Sort Statistics(分類統計信息)
- 字段名:排序操作次數、排序內存使用量、排序磁盤使用量等。
- 說明:排序操作是數據庫中常見的操作之一,了解排序操作的資源使用情況可以優化排序算法和內存分配策略。
- 計算方式:排序操作次數通過數據庫系統的排序模塊統計,排序內存使用量和磁盤使用量分別是排序操作所使用的內存和磁盤空間大小。
- Resource Limit Statistics(空間限制信息)
- 字段名:各類資源的限制值、已使用量、剩余量等。
- 說明:明確數據庫系統中各種資源的使用限制和剩余情況,有助于及時發現資源即將耗盡的問題,進行資源調整。
- 計算方式:資源的限制值在數據庫配置時確定,已使用量通過數據庫系統的資源管理模塊統計,剩余量 = 限制值 - 已使用量。
- Mail Statistics(郵箱視圖信息)
- 字段名:郵箱視圖數量、郵箱視圖讀寫次數等。
- 說明:郵箱視圖可能用于數據庫系統內部的消息傳遞或監控信息存儲,了解其使用情況有助于分析數據庫的內部通信和監控機制。
- 計算方式:郵箱視圖數量通過數據庫系統的元數據統計,郵箱視圖讀寫次數通過數據庫系統的計數器統計。
- dm.ini Parameters(dm.ini 參數信息)
- 字段名:各項參數名稱、參數值等。
- 說明:
dm.ini
是數據庫的配置文件,這些參數影響著數據庫的各種行為和性能。分析這些參數的設置是否合理對于優化數據庫性能至關重要。 - 計算方式:這些參數值直接從
dm.ini
配置文件中讀取。
- Top SQL with Top Events(頂級等待事件中的高負載 SQL 語句)
- 字段名:SQL 語句文本、關聯的頂級等待事件、總執行時間、執行次數等。
- 說明:找出與頂級等待事件相關的高負載 SQL 語句,這些語句通常是導致數據庫性能問題的關鍵因素,需要重點優化。
- 計算方式:總執行時間和執行次數的計算方式與前面的 SQL 統計信息部分相同,關聯的頂級等待事件通過數據庫系統的性能監控模塊記錄。
三、總結
AWR 報告為數據庫性能分析提供了全面而詳細的信息,通過對報告各部分的深入解讀,可以準確地定位數據庫的性能瓶頸和問題所在,從而采取針對性的優化措施,提高數據庫的性能和穩定性。在實際應用中,應定期生成和分析 AWR 報告,及時發現并解決潛在的性能問題。