Oracle SQL调优系列之AWR报告简介

article/2025/9/1 20:06:29

文章目录

    • 一、AWE报告生成步骤
      • 1.1 工具选择
      • 1.2 自动创建快照
      • 1.3 手工创建快照
      • 1.4 生成AWR报告
    • 二、AWR报告分析
      • 2.1 AWR之DB Time
      • 2.2 AWR之load_profile
      • 2.3 AWR之efficiency percentages
      • 2.4 AWR之top 10 events
      • 2.5 AWR之SQL Statistics

一、AWE报告生成步骤

对于SQL调优,局部SQL,我们可以直接使用执行计划等直接调优,而对于整个系统来说?这时候就可以用Oracle系统自带的报告对系统进行整体分析了,Oracle提供好几种性能分析的报告,比如AWR、ASH、ADDM等等
这篇博客主要介绍AWR

AWR全称Automatic Workload Repository,自动负载信息库,是Oracle 10g版本后推出的一种性能收集和分析工具,提供了一个时间段内整个系统的报表数据。通过AWR报告,可以分析指定的时间段内数据库系统的性能。

整体分析调优工具

  • AWR:关注数据库的整体性能的报告;
  • ASH:数据库中的等待事件与哪些SQL具体对应的报告;
  • ADDM:oracle给出的一些建议
  • AWRDD:Oracle针对不同时段的性能对比报告
  • AWRSQRPT:oracle获取统计信息与执行计划

不同场景对应工具

局部分析调优工具:

  • explain plan for
  • set autotrace on
  • statistics_level=all
  • 直接通过sql_id获取
  • 10046 trace
  • awrrpt.sql

整体性能工具要点

  • AWR关注点:load profile、efficiency percentages、top 5 time events、SQL Statistics、segment_statistics
  • ASH关注点:等待事件与sql完美结合
  • ADDM:各种建议与对应SQL
  • AWRDD:不同时期 load profile的比较、不同时期等待事件的比较、不同时期TOP SQL的比较
  • AWRSQRPT:获取与关注点(统计信息与执行计划)
select output from table (dbms_workload_repository.awr_report_html(v_dbid,v_instance_number,v_min_snap_id,v_max_snap_id));

相关查询试图:

  • v$session (当前正在发生)
  • v$session_wait(当前正在等待)
  • v$session_wait_history (会话最近的10次等待事件)
  • v$active_session_history (内存中的ASH采集信息,理论为1小时)
  • wrh$_active_session_history (写入AWR库中的ASH信息,理论为1小时以上)
  • dba_hist_active_sess_history (根据wrh$_active_session_history生成的视图)

1.1 工具选择

对于Oracle数据库可以使用sqlplus或者plsql developer客户端软件
sqlplus 使用
可以使用sqlplus工具登录
进入数据库

sqlplus / as sysdba

查看用户

show parameter db_name

用登录之后才可以使用
plsql developer使用
plsql developer也可以使用,登录之后,选择文件(File)->新建(New)->命令窗口(Command Window)
在这里插入图片描述

1.2 自动创建快照

开始压测后执行

exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();

可以通过dba_hist_wr_control查看当前的配置情况,当前awr为每1小时做一次数据快照,保留时间为8天。

 select * from dba_hist_wr_control;

在这里插入图片描述
修改配置,每隔30分钟收集一次,保存1天

execute dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>14000);

关闭AWR自动收集

SQL>exec dbms_workload_repository.modify_snapshot_settings (interval=>0,retention=>24*60);

注:10g默认是自动开启awr信息收集的,会对系统有一定的影响(很小);如果要关闭awr信息收集,只需设置interval参数为0即可。但interval设0后,AWR报告无法生成。

1.3 手工创建快照

除了自动创建快照,也可以手工创建快照

select dbms_workload_repository.create_snapshot() from dual;

1.4 生成AWR报告

在sqlplus或者plsql使用命令,${ORACLE_HOME}是Oracle的安装路径

@/${ORACLE_HOME}/.../RDBMS/ADMIN/awrrpt.sql

例如我的命令为:

@D:/oracle/product/11.1.0/db_1/RDBMS/ADMIN/awrrpt.sql

sqlplus登录的可以使用

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

@?/rdbms/admin/awrrpt; 本实例AWR包括:
@?/rdbms/admin/awrrpti; RAC中选择实例号
@?/rdbms/admin/awrddrpt; AWR 比对报告
@?/RDBMS/admin/awrgrpt; RAC全局AWR报告

执行命令之后,会提示你输入一些参数

  • (1) Enter value of report_type
    意思是生成报告的格式有两种,html和txt,这里选择html
  • (2) Enter value of num_days
    收集几天的报告信息,数字,可以输入1
  • (3) Enter value of begin_snap
    输入开始快照id,要根据日志打印的快照id范围来填

例如我实验时候,日志打印的快照id范围为:6727 ~6745

Listing the last day's Completed Snapshots INST_NAME    DB_NAME       SNAP_ID SNAPDAT            LV
------------ ------------ -------- ------------------ --
orcl        ORCL              6727 17 4月  2019 00:00  1
orcl        ORCL              6728 17 4月  2019 01:00  1
orcl        ORCL              6729 17 4月  2019 02:00  1
orcl        ORCL              6730 17 4月  2019 03:00  1
orcl        ORCL              6731 17 4月  2019 04:00  1
orcl        ORCL              6732 17 4月  2019 05:00  1
orcl        ORCL              6733 17 4月  2019 06:00  1
orcl        ORCL              6734 17 4月  2019 07:00  1
orcl        ORCL              6735 17 4月  2019 08:00  1
orcl        ORCL              6736 17 4月  2019 09:00  1
orcl        ORCL              6737 17 4月  2019 10:00  1
orcl        ORCL              6738 17 4月  2019 11:00  1
orcl        ORCL              6739 17 4月  2019 12:00  1
orcl        ORCL              6740 17 4月  2019 13:00  1
orcl        ORCL              6741 17 4月  2019 14:00  1
orcl        ORCL              6742 17 4月  2019 14:13  1
orcl        ORCL              6743 17 4月  2019 14:15  1
orcl        OANET            6744 17 4月  2019 14:16  1
orcl        OANET            6745 17 4月  2019 14:40  1

所以我随意填写:6743

  • (4) Enter value of end_snap
    输入结束快照id,要根据日志打印的快照id范围来填,所以我随意填写:6745
SQL> @D:/oracle/product/11.1.0/db_1/RDBMS/ADMIN/awrrpt.sqlCurrent Instance
~~~~~~~~~~~~~~~~DBID DB_NAME      INST_ INST_NAME
---------- ------------ ----- ------------
4279242421 ORCL            1 orcl
rpt_options
---------
0Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Type Specified:  html
Cannot SET TRIMSPOOL
Cannot SET UNDERLINEInstances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~DBBID        INSTT DBB_NAME     INSTT_NAME   HOST
------------ ----- ------------ ------------ ------------
* 4279242421     1 ORCL        ORCL        zwdbUsing 4279242421 for database Id
Using 1 for instance number
dbid
---------
4279242421
inst_num
---------
1
inst_num
---------
1
dbid
---------
4279242421
max_snap_time
---------
17/04/2019Specify 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.Listing the last day's Completed Snapshots INST_NAME    DB_NAME       SNAP_ID SNAPDAT            LV
------------ ------------ -------- ------------------ --
orcl        ORCL              6727 17 4月  2019 00:00  1
orcl        ORCL              6728 17 4月  2019 01:00  1
orcl        ORCL              6729 17 4月  2019 02:00  1
orcl        ORCL              6730 17 4月  2019 03:00  1
orcl        ORCL              6731 17 4月  2019 04:00  1
orcl        ORCL              6732 17 4月  2019 05:00  1
orcl        ORCL              6733 17 4月  2019 06:00  1
orcl        ORCL              6734 17 4月  2019 07:00  1
orcl        ORCL              6735 17 4月  2019 08:00  1
orcl        ORCL              6736 17 4月  2019 09:00  1
orcl        ORCL              6737 17 4月  2019 10:00  1
orcl        ORCL              6738 17 4月  2019 11:00  1
orcl        ORCL              6739 17 4月  2019 12:00  1
orcl        ORCL              6740 17 4月  2019 13:00  1
orcl        ORCL              6741 17 4月  2019 14:00  1
orcl        ORCL              6742 17 4月  2019 14:13  1
orcl        ORCL              6743 17 4月  2019 14:15  1
orcl        OANET            6744 17 4月  2019 14:16  1
orcl        OANET            6745 17 4月  2019 14:40  1
dbid
---------
4279242421
inst_num
---------
1
max_snap_time
---------
17/04/2019Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Begin Snapshot Id specified: 6743End   Snapshot Id specified: 6745bid
---------
6743
eid
---------
6745inst_num
---------
1
dbid
---------
4279242421
bid
---------
6743
eid
---------
6745
Cannot SET TRIMSPOOL
Cannot SET UNDERLINESpecify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_6743_6745.html.  To use this name,
press <return> to continue, otherwise enter an alternative.Using the report name awr.html 
Started spooling to D:\Program Files\PLSQL Developer 8.0.3.1510\awr.html

二、AWR报告分析

2.1 AWR之DB Time

DB Time主要用来判断当前系统有没有相关瓶颈,是否较为频繁访问系统导致等待时间很长?然后要怎么看?一般来说,Elapsed时间乘以CPU个数如果大于DB Time,就是正常的,系统压力不大,反之就说明压力较大,例子如图,24.93*8很明显大于0.49,所以说明系统压力很小
在这里插入图片描述

2.2 AWR之load_profile

load_profile指标主要用来显示当前系统的一些指示性能的总体参数,这里介绍一些Redo_size,用来显示平均每秒的日志尺寸和平均每个事务的日志尺寸,有时候可以结合Transactions这个每秒事务数,分析当前事务的繁忙程度

如图,平均每秒的事务数Transactions非常小,说明系统压力非常小,一般来说Transactions不超过200都是正常的,或者200左右都是正常的,超过1000就是非常繁忙了,再看看平均每秒的日志尺寸是4位数的,平均每个事务的日志尺寸是5位数的,说明了系统访问不是很频繁,而单个业务是比较复杂的,如果反过来,平均每秒日志尺寸比平均每秒事务日志尺寸大很多,说明系统访问很频繁,而业务比较简单,不需要响应很久
在这里插入图片描述

2.3 AWR之efficiency percentages

efficiency percentages是一些命中率指标。Buffer Hint、Library Hint等表示SGA(System global area)的命中率;Soft Parse指标表示共享池的软解析率,如果小于90%,就说明存在未绑定变量的情况
在这里插入图片描述

2.4 AWR之top 10 events

Top 10 Foreground Events by Total Wait Time,等待事件是衡量数据库优化情况的重要指标,通过观察Event和%DB time两列就可以直观看出当前数据库的主要等待事件
如图可以看出系统面试的主要是CPU被占用太多了和锁等待
在这里插入图片描述

2.5 AWR之SQL Statistics

SQL Statistics从几个维度列举了系统执行比较慢的SQL,可以点击,然后拿SQL去调优,调优SQL可以用执行计划看看

在这里插入图片描述

对于AWR的性能指标还有很多,本博客是看了《收获,不止SQL优化》一书的笔记,这里只简单介绍一些比较重要的指标


http://chatgpt.dhexx.cn/article/FoIlKVbk.shtml

相关文章

AWR报告解读

0 初步结论 ① 数据库CPU资源不够&#xff0c;CPU使用率较高&#xff0c;造成CPU等待时间较长&#xff0c;可适当提升CPU资源&#xff1b; ② 数据库I/O资源消耗不太大&#xff0c;不存在IO瓶颈&#xff1b; ③ 可适当调大SGA空间&#xff08;增加10G左右&#xff09;&#xf…

用sql统计vintage,滚动率,迁移率,逾期率

获取代码请移步&#xff1a;用sql统计vintage&#xff0c;滚动率&#xff0c;迁移率&#xff0c;逾期率

如何用R语言做Vintage分析

一、背景 Vintage一词源自葡萄酒业&#xff0c;意思是葡萄酒酿造年份。因为每年的天气、温度、湿度、病虫害等情况不同&#xff0c;而这些因素都会对葡萄酒的品质产生很大的影响&#xff0c;所以人们对葡萄酒以葡萄当年的采摘年份进行标识来加以品质区分。现在Vintage分析被广泛…

风控中必做的数据分析

大数据领域就没有不做数据分析的&#xff0c;大数据风控也不例外。 我的观点是风控和其他互联网业务都是互通的&#xff0c;本文介绍下风控中必做的数据分析&#xff0c;用以说明数据分析是一通百通的。 工欲善其事&#xff0c;必先利其器。先说下数据分析的工具。 分析工具…

Vintage、滚动率、迁移率的应用

更多风控建模、大数据分析等内容请关注公众号《bigdatafengkong》 BY 小石头 一、Vintage Vintage源于葡萄酒酿造&#xff0c;葡萄酒的品质会因葡萄生长的年份不同、气候不同而不同。Vintage分析是指评估不同年份的葡萄酒的品质随着窖藏时间的推移而发生的变化&#xff0c;并且…

窗口函数:vintage报表

0 前言 Vintage这个词原意是指酿造葡萄酒的酒窖。葡萄酒是讲究年份&#xff0c;哪年光景好&#xff0c;哪年光景不好&#xff0c;直接会影响到葡萄酒的品质。后来借用到信贷资产行业&#xff0c;指的是每个月贷款的资产质量情况&#xff0c;要直接跟每个相同时间段内的余额做比…

信贷风控中Vintage、滚动率、迁移率的理解

风控业务背景 信贷风险管理是一门艺术&#xff0c;更是一门科学。资产质量分析中常会涉及到三个理论&#xff1a; 账龄分析&#xff08;Vintage Analysis&#xff09;&#xff1a;用以分析账户成熟期、变化规律等。滚动率分析&#xff08;Roll Rate Analysis&#xff09;&#…

风控ML[9] | Vintage和Roll Rate 分析的详解

我们说了好几期的风控建模了&#xff0c;也有不少的同学私信我说一般来说我们需要怎么确定Y值呢&#xff1f;&#xff0c;到底多坏的逾期表现的客户可以被我们定义为坏客户呢&#xff1f;今天这篇文章&#xff0c;就给大家介绍一个大家既熟悉又陌生的分析工具——Vintage Analy…

了解过Vintage的N种样式?

vintage的几种形式有没有兴趣了解下&#xff1f; 我们之前写的文章里就提到过一个资产分析报表里的vintage表&#xff0c;这个表是反映客群的账龄情况&#xff0c;如果不是很清楚请再戳进去&#xff1a;风控建模系列&#xff08;六&#xff09;&#xff1a;催收评分卡卡跟贷前…

风控模型策略-知识全整理(一)

做了大概5年风控&#xff0c;中间做过甲方&#xff0c;做过乙方&#xff0c;做过模型&#xff0c;做过策略&#xff0c;做过数据分析&#xff0c;但是始终觉着不得风控精华&#xff0c;做的事情太多&#xff0c;有的东西也就很难深入&#xff0c;目前就是将这么几年的积累写下来…

vintage、滚动率等相关指标介绍

目录 1、vintage 方法简介 优势 五级分类的比较 2、滚动率 3、入催率 4、FPD 随着互联网金融的发展&#xff0c;对数据分析的需求越来越大。数据分析的目的其实是为了找到风险和收益的平衡点。高收益伴随着高风险&#xff0c;而低风险的回报又如同鸡肋。所以&#xff0c;…

对Vintage未表现数据的预测方法总结

这段时间在利用Vintage分析做借贷产品的放款损失率相关工作&#xff0c;来简单总结一下。 Vintage分析 前面说到&#xff0c;Vintage是资产质量分析的重要工具&#xff0c;主要是用来分析同一产品在不同时间放款的资产质量变化情况&#xff0c;从而反映该产品的客群质量和变化…

vintage+android相机,Vintage复古相机

Vintage复古相机是一款功能强大&#xff0c;非常好用的相机软件&#xff0c;这里有着丰富的复古滤镜可以自由选择&#xff0c;并且还可以直接在这里p图修图&#xff0c;各种效果可以提前预览&#xff0c;还可以一键生成保存&#xff0c;非常便捷&#xff01;喜欢拍照的小伙伴不…

一文教你如何解读Vintage

当我们在观测资产最终损失和不同资产的风险差异时&#xff0c;经常会用到一个指标&#xff0c;那就是Vintage。 这个指标的计算和展示与大多数指标有所不同&#xff0c;因为所需要的数据信息并不单来源于某一个固定时间的切片数据&#xff0c;而是来源于历史多个时间节点的切片…

Vintage、滚动率、迁移率的应用(转载)

转载于&#xff1a;http://mp.weixin.qq.com/s?__bizMzIyNDk2MzQ1NQ&mid2247484124&idx1&sneec18c836806b8803845716195fae061&chksme807bcccdf7035da8b5ca7fe81f0a7e2185e2ed37b93eeea2dc992457e10781c0dfe6c27cb48&scene21#wechat_redirect 一、Vintag…

信贷风控中Vintage、滚动率、迁移率

风控业务背景 信贷风险管理是一门艺术&#xff0c;更是一门科学。资产质量分析中常会涉及到三个理论&#xff1a; 账龄分析&#xff08;Vintage Analysis&#xff09;&#xff1a;用以分析账户成熟期、变化规律等。滚动率分析&#xff08;Roll Rate Analysis&#xff09;&…

Vintage分析和迁移率模型在信用卡业务中的应用

随着中国金融业对外开放程度的加大,国内信用卡产业的竞争愈演愈烈,信用卡市场营销的费用也越来越高.如何利用有限的营销资源为发卡机构创造最大利润,实现信用卡营销和风险的精细化管理已成为信用卡产业发展的热门话题.本文通过对国外商业银行在信用卡业务中常用的Vintage分析和…

业务相关--vintage

vintage整理 --------仅用于个人学习知识整理和sas/R语言/python代码整理 ####1 . 前言 Vintage表&#xff0c;将不同时间层面的顾客拉平到同一时间周期上进行比较&#xff0c;观察不同入口时间的顾客在不同生命周期上的表现。 vintage一般有三种用法&#xff1a; 1.横看&…

vintage分析 风控建模系列 01

vintage分析 风控建模系列 01 在工作中发现&#xff0c;目前没有一个很好的系列帖子对风控建模中的各项细节做讲解&#xff0c;本人为一个金融科技公司的风控算法建模师&#xff0c;希望在此将风控建模的知识成体系、有深度、易吸收地分享给大家 vintage分析价值 在一场完整…

使用R语言creditmodel包进行Vintage分析或留存率分析

1 什么是vintage分析&#xff1f; Vintage分析&#xff08;账龄分析法&#xff09;被广泛应用于信用卡及信贷行业&#xff0c;这个概念起源于葡萄酒&#xff0c;即不同年份出产的葡萄酒的品质有差异&#xff0c;那么不同时期开户或者放款的资产质量也有差异&#xff0c;其核心…