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

举报
yd_273762914 发表于 2020/12/03 01:13:37 2020/12/03
【摘要】 我写的SQL调优专栏:https://blog.csdn.net/u014427391/article/category/8679315 整体分析调优工具 AWR:关注数据库的整体性能的报告;ASH:数据库中的等待事件与哪些SQL具体对应的报告;ADDM:oracle给出的一些建议AWRDD:Oracle针对不同时段的性能对比报告AWRSQRPT:oracle获取统...

我写的SQL调优专栏:https://blog.csdn.net/u014427391/article/category/8679315

整体分析调优工具

  • 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));

  
 
  • 1

相关查询试图:

  • 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生成的视图)

对于局部的,比如某个页面列表sql,我们可以使用Oracle的执行计划进行sql调优,但是对于整个系统来说,你可以知道哪些sql比较耗时?当然可以通过查Oracle的共享池得到,不过Oracle系统本身就提供了几种性能分析报告,比如AWR、ASH、ADDM、AWRSRPT等等报告,本博客介绍一下AWRSRPT性能分析报告

1.1 工具选择

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

sqlplus / as sysdba

  
 
  • 1

查看用户

show parameter db_name

  
 
  • 1

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

1.2 自动创建快照

开始压测后执行

exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();

  
 
  • 1

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

 select * from dba_hist_wr_control;

  
 
  • 1

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

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

  
 
  • 1

关闭自动收集

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

  
 
  • 1

1.3 手工创建快照

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

select dbms_workload_repository.create_snapshot() from dual;

  
 
  • 1

1.4 AWRSQRPT报告生成

对于sqlplus客户端的可以使用

@?/rdbms/admin/awrsqrpt.sql

  
 
  • 1

对于plsql客户端,我用绝对路径去执行,@?的命令找不到文件
这个要根据自己的Oracle安装路径去修改,例如:

@D:/oracle/product/11.2.0/dbhome_1/RDBMS/ADMIN/awrsqrpt.sql

  
 
  • 1

(1)AWRSQRPT报告格式

Enter value for report_type:html

报告格式,有两种html和txt,这里我选择html

(2)快照天数

Enter value for num_days:1

要手机快照的天数,我选择1

(3)快照开始id
Enter value for begin_snap
id要选日志打印范围内的

(4) 快照结束id
Enter value for end_snap
id要选日志打印范围内的

(5) sql的id
Enter value for sql_id
查询SQL_ID,sql_text可以从AWR报告拿

  select sql_text, last_load_time, t.SQL_ID from v$sql t where last_load_time is not null and sql_text like 'SELECT count(*) from%' order by t.LAST_LOAD_TIME desc

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

(6) AWRSQRPT报告名称
填写AWRSQRPT报告的名称,我可以填写awrsqrpt_20190421.html,然后在打印的日志里有文件保存的路径:,比如:D:\oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\awrsqrpt.html

二、AWRSQRPT报告性能分析

AWRSQRPT可以说是AWR和ASH的补充,可以看到执行计划的细节,oracle的执行计划会随着环境的改变而改变,也会随着数据改变而改变,所以会产生多个执行计划,而AWRSQRPT就是针对这种情况的报告,AWRSQRPT会有多个执行计划

有多个执行计划,这里产生了4个执行计划
在这里插入图片描述

AWRSQRPT之Plan statistic,其中一个执行计划
在这里插入图片描述

AWRSQRPT之Execution plan执行计划
在这里插入图片描述

文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。

原文链接:smilenicky.blog.csdn.net/article/details/89429989

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。