首页
看点啥
插画图片
首页 科技看点 Oracle数据库AWR报告的生成步骤与分析做法实用指南

Oracle数据库AWR报告的生成步骤与分析做法实用指南

2026-09-01 0

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Oracle数据库AWR报告的生成步骤与分析做法”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

实际处理时,Oracle中要想生成 AWR(Automatic Workload Repository)报告,最常用的方法是借助 Oracle 自带的命令行脚本。AWR 报告是分析数据库性能、定位瓶颈的利器,生成步骤同时不复杂,主要分为确认权限执行脚本选择范围三步。

一、登录数据库

理解这一步时,首先,你需以具有足够权限的数据库管理员账号登录到数据库所在的服务器,同时连接到数据库。

从实现思路看,打开终端,输入以下命令登录到数据库服务器,同时采用 sqlplus 工具以 sysdba(系统管理员)身份连接:

# 切换到 oracle 用户 (通常为 oracle)
su - oracle
# 以 sysdba 身份登录
sqlplus / as sysdba

二、执行 AWR 报告生成脚本

结合项目来看,登录成功后,执行 Oracle 内置的报告生成脚本 awrrpt.sql。这个脚本会引导你一步步完成报告的生成。

SQL> @?/rdbms/admin/awrrpt.sql

命令解释@表示执行一个 SQL 脚本,?$ORACLE_HOME 路径的简写。因此,这条命令会完整地定位到该脚本同时执行它。

三、选择报告类型与时间范围

脚本执行后,系统会提示你进行几个轻松的选择,按需输入即可

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 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 to continue, otherwise enter an alternative.
Enter value for report_name: awr_report_20260409.html
Using the report name awr_report_20260409.html
AWR Report for DB: ORCL, Inst: orcl, Snaps: 57-58
............
............
............
End of Report

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 个会话在同时发工作。

在我的AWR报告中分析:DB Time = 0,则平均活动会话 = 0。结论是数据库处于完全空闲状态

第二步:看等待事件 —— “瓶颈在哪里?”

  • 核心部分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 可能是瓶颈。
    • 并发相关:如 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

  • 分析方法:这个区域会列出消耗资源最多的 SQL 语句。
    • 重点关注 Elapsed Time (s)CPU Time (s)Executions(执行次数)、Buffer Gets(逻辑读)。
    • 查找“昂贵”的 SQL:单次执行耗时很长,或执行次数很多的 SQL。
    • 结合项目来看,能够记录下SQL Id,随后去数据库里用 DBMS_SQLTUNE 包或查看执行计划进行优化。
  • 报告分析中:此处有数据,但 Elapsed Time 都远小于 1 秒,%Total 的百分比巨大是由于总 DB Time 为 0 导致的异常。没有需优化的 SQL

第四步:看时间模型 —— “时间都花在哪儿了?”

  • 核心部分:Time Model Statistics
  • 位置:Main Report -> Wait Events Statistics -> Time Model Statisstics

  • 分析方法:这里展示了数据库时间花在了前台(DB Time)还是后台(background time),以及具体花费在解析 SQL、硬解析等环节的时间比例。
    • 结合项目来看,重点关注 parse time elapsed 占总 DB Time 的比例,如果过高(比如 >10%),说明存在解析问题。
    • 理解这一步时,hard parse elapsed time过高,说明可能存在未采用绑定变量导致的游标缓存失效问题。

第五步:看操作系统和内存 —— “硬件资源够不够?”

  • 核心部分Host CPUMemory 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] 分析AWR报告的方法介绍
  • Oracle AWR(自动工作量资料档案库)的管理与维护详解
  • oracle AWR性能监控报告生成方法
喜欢(0)

上一篇

防火墙软件哪个值得用

防火墙软件哪个值得用

下一篇

Erlang的一些编程技巧整理分享使用教程与实战指南实用指南

猜你喜欢