Oracle數據庫AWR報告的生成步驟與分析方法
Oracle中要想生成 AWR(Automatic Workload Repository)報告,最常用的方法是通過 Oracle 自帶的命令行腳本。AWR 報告是分析數據庫性能、定位瓶頸的利器,生成步驟并不復雜,主要分為確認權限、執(zhí)行腳本和選擇范圍三步。
一、登錄數據庫
首先,你需要以具有足夠權限的數據庫管理員賬號登錄到數據庫所在的服務器,并連接到數據庫。
打開終端,輸入以下命令登錄到數據庫服務器,并使用 sqlplus 工具以 sysdba(系統管理員)身份連接:
# 切換到 oracle 用戶 (通常為 oracle) su - oracle # 以 sysdba 身份登錄 sqlplus / as sysdba
二、執(zhí)行 AWR 報告生成腳本
登錄成功后,執(zhí)行 Oracle 內置的報告生成腳本 awrrpt.sql 。這個腳本會引導你一步步完成報告的生成。
SQL> @?/rdbms/admin/awrrpt.sql
命令解釋:@表示執(zhí)行一個 SQL 腳本,? 是 $ORACLE_HOME 路徑的簡寫。因此,這條命令會完整地定位到該腳本并執(zhí)行它。
三、選擇報告類型與時間范圍
腳本執(zhí)行后,系統會提示你進行幾個簡單的選擇,按需輸入即可
3.1.選擇報告格式
Enter value for report_type: html
1.html:生成HTML格式,圖形化界面,推薦選擇
2.text:生成純文本格式。3.2.選擇時間范圍(最關鍵的一步)
AWR 基于快照來記錄性能數據。你需要選擇開始快照和結束快照的 ID,報告將展示這兩個時間點之間的性能情況。
系統會列出最近可用的快照及其對應的時間,例如:
Snap Instance Snap Started -------- ------------ ----------------------- 123 ORCL 09 Apr 2026 10:00 124 ORCL 09 Apr 2026 11:00 125 ORCL 09 Apr 2026 12:00
指定開始時間:輸入你分析時間段的起始快照 ID,例如 124
指定結束時間:輸入結束快照 ID,例如 125
注意:AWR 默認每小時自動生成一次快照。如果你的數據庫是新安裝的,可能需要等待一段時間才能有足夠的數據來生成有意義的報告
3.3.指定AWR報告名稱
Enter value for report_name: awr_report_20260409.html
整體示例:
[oracle@rac01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Thu Apr 9 14:41:40 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> @?/rdbms/admin/awrrpt.sql
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
AWR reports can be generated in the following formats. Please enter the
name of the format at the prompt. Default value is 'html'.
'html' HTML format (default)
'text' Text format
'active-html' Includes Performance Hub active report
Enter value for report_type: html
old 1: select 'Type Specified: ',lower(nvl('&&report_type','html')) report_type from dual
new 1: select 'Type Specified: ',lower(nvl('html','html')) report_type from dual
Type Specified: html
old 1: select '&&report_type' report_type_def from dual
new 1: select 'html' report_type_def from dual
old 1: select '&&view_loc' view_loc_def from dual
new 1: select 'AWR_PDB' view_loc_def from dual
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance Container Name
-------------- -------------- -------------- -------------- --------------
1747225139 ORCL 1 orcl orcl
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
------------ ---------- --------- ---------- ------
* 1747225139 1 ORCL orcl rac01.exampl
Using 1747225139 for database Id
Using 1 for instance number
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed. Pressing <return> without
specifying a number lists all completed snapshots.
Enter value for num_days: 1
Listing the last day's Completed Snapshots
Instance DB Name Snap Id Snap Started Snap Level
------------ ------------ ---------- ------------------ ----------
orcl ORCL 57 09 Apr 2026 12:56 1
58 09 Apr 2026 14:00 1
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 57
Begin Snapshot Id specified: 57
Enter value for end_snap: 58
End Snapshot Id specified: 58
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_57_58.html. To use this name,
press <return> to continue, otherwise enter an alternative.
Enter value for report_name: awr_report_20260409.html
Using the report name awr_report_20260409.html
<html lang="en"><head><title>AWR Report for DB: ORCL, Inst: orcl, Snaps: 57-58</title>
............
............
............
End of Report
</body></html>
Report written to awr_report_20260409.html
SQL>四、獲取報告文件
完成上述選擇后,腳本會自動生成報告并保存在你當前登錄的目錄下。

你可以在當前 sqlplus 所在的路徑下找到生成的報告文件(例如 awr_report_20260409.html),使用 ls 命令確認后,通過遠程工具將其下載到本地,用瀏覽器打開即可查看。


五、分析AWR性能報告
5.1.AWR 報告分析入門:五步法
分析一份有實際負載的 AWR 報告,通常遵循以下五個核心步驟。你可以把這個方法套用到未來的任何報告分析中。
Elapsed:消耗

parse:解析

第一步:看整體負載 —— “數據庫忙不忙?”
- 核心指標:DB Time
- 位置:報告開頭的 Snapshot 信息表和 Load Profile 部分。

分析方法:
DB Time 是數據庫處理用戶請求花費的總時間。將它除以 Elapsed Time(快照時長),可以算出平均活動會話數。
- 平均活動會話 = DB Time / Elapsed Time
- 例如:DB Time = 100分鐘,Elapsed Time = 10分鐘,則平均有 10 個會話在并發(fā)工作。
在我的AWR報告中分析:DB Time = 0,則平均活動會話 = 0。結論是數據庫處于完全空閑狀態(tài)。
第二步:看等待事件 —— “瓶頸在哪里?”
- 核心部分:Top 10 Foreground Events by Total Wait Time
- 位置:Main Report -> Wait Events Statistics -> Top 10 Foregroud Events...

- 分析方法:這里列出了消耗數據庫時間最多的“等待”。通過分析等待事件類型,可以快速定位問題。
- CPU:DB CPU 排在首位且占比高(例如 > 90%),說明系統在高效計算,而非等待資源。
- I/O 相關: db file sequential / scattered read,說明磁盤 I/O 可能是瓶頸。
- 并發(fā)相關:如 buffer busy waits ,說明存在熱點數據塊爭用。
- 網絡/配置相關:如 log file sync,說明日志寫入可能存在延遲。
- 在我的AWR報告分析中:只有 DB CPU 和 ADR block file read 等少數幾個事件,且等待時間(Wait Time)為 0,說明沒有有意義的等待事件。
第三步:看 SQL 統計 —— “是哪些 SQL 在消耗資源?”
- 核心部分:SQL Statistics
- 位置:Main Report -> SQL Statistics -> 重點關注SQL ordered by Elapsed Time和SQL ordered by Cpu Time。



- 分析方法:這個區(qū)域會列出消耗資源最多的 SQL 語句。
- 重點關注 Elapsed Time (s)、CPU Time (s)、Executions(執(zhí)行次數)、Buffer Gets(邏輯讀)。
- 查找“昂貴”的 SQL:單次執(zhí)行耗時很長,或執(zhí)行次數非常多的 SQL。
- 可以記錄下SQL Id,然后去數據庫里用 DBMS_SQLTUNE 包或查看執(zhí)行計劃進行優(yōu)化。
- 報告分析中:此處有數據,但 Elapsed Time 都遠小于 1 秒,%Total 的百分比巨大是由于總 DB Time 為 0 導致的異常。沒有需要優(yōu)化的 SQL。
第四步:看時間模型 —— “時間都花在哪兒了?”
- 核心部分:Time Model Statistics
- 位置:Main Report -> Wait Events Statistics -> Time Model Statisstics。

- 分析方法:這里展示了數據庫時間花在了前臺(DB Time)還是后臺(background time),以及具體花費在解析 SQL、硬解析等環(huán)節(jié)的時間比例。
- 重點關注 parse time elapsed 占總 DB Time 的比例,如果過高(例如 >10%),說明存在解析問題。
- hard parse elapsed time過高,說明可能存在未使用綁定變量導致的游標緩存失效問題。
第五步:看操作系統和內存 —— “硬件資源夠不夠?”
- 核心部分:Host CPU 和 Memory Statistics
- 位置:Main Report -> Report Summary 和 Memory Statistics。

分析方法:
- CPU:查看 Load Average (系統平均負載)是否超過了邏輯 CPU 總數。你的服務器有 2 個 CPU,Load Average 僅為 0.3 左右,非常低。
- 內存:查看 Memory Statistics 中 %Host Mem used for SGA + PGA,以及是否存在大量換頁(報告中未顯示,但可從操作系統層面查看)。
- 報告分析:CPU 和內存資源都非常充足。
以上就是Oracle數據庫AWR報告的生成步驟與分析方法的詳細內容,更多關于Oracle AWR報告生成與分析的資料請關注腳本之家其它相關文章!
相關文章
Oracle在DML語句中使用returing?into子句
這篇文章介紹了Oracle在DML語句中使用returing?into子句的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05

