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

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

ADDM全称是Automatic Database Diagnostic Monitor,是Oracle一个实现性能自我诊断的最佳利器。它依赖于AWR,也就是说ADDM要诊断,必要要有诊断的依据。在Oracle中,这个诊断依据就是Oracle AWR,因为Oracle AWR会定期的收集整个数据库在运行期间的性能统计数据。

一、ADDM报告生成

继之前AWR、ASH方面的博客之后,https://smilenicky.blog.csdn.net/article/details/89414432,https://smilenicky.blog.csdn.net/article/details/89419185,我再写一篇ADDM方面的博客:

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

关闭自动收集

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

1.3 手工创建快照

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

select dbms_workload_repository.create_snapshot() from dual;

1.4 ADDM报告生成

对于sqlplus客户端的可以使用

@?/rdbms/admin/addmrpt.sql

对于plsql客户端,我用绝对路径去执行,@?的命令找不到文件

这个要根据自己的Oracle安装路径去修改,例如:

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

(1)快照开始id

Enter value for begin_snap:418

要根据日志打印的快照id范围来填,所以我可以填写:418

(2)快照结束id

Enter value for end_snap:420

要根据日志打印的快照id范围来填,所以我可以填写:420

(3)ADDM报告名称

Enter value for report_name

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

SQL> @D:/oracle/product/11.2.0/dbhome_1/RDBMS/ADMIN/addmrpt.sql
Current Instance
~~~~~~~~~~~~~~~~
DBID DB_NAME INST_ INST_NAME
---------- ------------ ----- ------------
1525762377 ORCL 1 orcl
Cannot SET TRIMSPOOL
Cannot SET UNDERLINE
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DBBID INSTT DBB_NAME INSTT_NAME HOST
------------ ----- ------------ ------------ ------------
* 1525762377 1 ORCL orcl PC-201508171
906
Using 1525762377 for database Id
Using 1 for instance number
PL/SQL procedure successfully completed
dbid
---------
1525762377
inst_num
---------
1
PL/SQL procedure successfully completed
inst_num
---------
1
dbid
---------
1525762377
max_snap_time
---------
18/04/2019
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.
Listing the last 3 days of Completed Snapshots
INST_NAME DB_NAME SNAP_ID SNAPDAT LV
------------ ------------ -------- ------------------ --
orcl ORCL 417 16 Apr 2019 00:00 1
orcl ORCL 418 16 Apr 2019 19:48 1
orcl ORCL 419 16 Apr 2019 21:00 1
orcl ORCL 420 16 Apr 2019 22:00 1
orcl ORCL 421 16 Apr 2019 23:00 1
orcl ORCL 422 17 Apr 2019 21:20 1
orcl ORCL 423 17 Apr 2019 22:00 1
orcl ORCL 424 17 Apr 2019 23:00 1
orcl ORCL 425 18 Apr 2019 00:00 1
orcl ORCL 426 18 Apr 2019 21:26 1
orcl ORCL 427 18 Apr 2019 22:00 1
11 rows selected
dbid
---------
1525762377
inst_num
---------
1
max_snap_time
---------
18/04/2019
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Begin Snapshot Id specified: 418
End Snapshot Id specified: 420
PL/SQL procedure successfully completed
bid
---------
418
eid
---------
420
PL/SQL procedure successfully completed
inst_num
---------
1
dbid
---------
1525762377
bid
---------
418
eid
---------
420
Cannot SET TRIMSPOOL
Cannot SET UNDERLINE
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is addmrpt_1_418_420.txt. To use this name,
press <return> to continue, otherwise enter an alternative.
Using the report name addm.html
Running the ADDM analysis on the specified pair of snapshots ...
bid
---------
418
eid
---------
420
inst_num
---------
1
dbid
---------
1525762377
task_name
---------
TASK_953
Generating the ADDM report for this analysis ...
Started spooling to D:\oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\addm.html
ADDM Report for Task 'TASK_953'
-------------------------------
Analysis Period
---------------
AWR snapshot range from 418 to 420.
Time period starts at 16-APR-19 07.48.09 PM
Time period ends at 16-APR-19 10.00.20 PM
Analysis Target
---------------
Database 'ORCL' with DB ID 1525762377.
Database version 11.2.0.1.0.
ADDM performed an analysis of instance orcl, numbered 1 and hosted at
PC-201508171906.
Activity During the Analysis Period
-----------------------------------
Total database time was 57 seconds.
The average number of active sessions was .01.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
There are no findings to report.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Additional Information
----------------------
Miscellaneous Information
-------------------------
There was no significant database activity to run the ADDM.
The database's maintenance windows were active during 99% of the analysis
period.
task_name
---------
TASK_953
Stopped spooling to D:\oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\addm.html
End of Report
Report written to addm.html.

二、ADDM报告性能分析

ADDM性能报告是从数据库的整体配置和局部SQL方面给出建议,阅读时候按FINDING1,FINDING2,...,的顺序阅读就好

下面的图来自《收获,不止SQL优化》一书:

Oracle ADDM报告生成和性能分析的更多相关文章

  1. Oracle AWRDD报告生成和性能分析

    我写的SQL调优专栏:https://blog.csdn.net/u014427391/article/category/8679315 对于局部的,比如某个页面列表sql,我们可以使用Oracle的 ...

  2. Oracle AWRSQRPT报告生成和性能分析

    我写的SQL调优专栏:https://blog.csdn.net/u014427391/article/category/8679315 对于局部的,比如某个页面列表sql,我们可以使用Oracle的 ...

  3. Oracle ASH报告生成和性能分析

    我写的SQL调优专栏:https://blog.csdn.net/u014427391/article/category/8679315 对于局部的,比如某个页面列表sql,我们可以使用Oracle的 ...

  4. Oracle AWR报告生成和性能分析

    目录 一.AWE报告生成步骤 1.1 工具选择 1.2 自动创建快照 1.3 手工创建快照 1.4 生成AWR报告 二.AWR报告分析 2.1 AWR之DB Time 2.2 AWR之load_pro ...

  5. ORACLE AWR报告生成步骤

    ORACLE AWR报告生成步骤 (以PL/SQL中命令窗口为例) 1.sqlplus或plsql的commod窗口(命令窗口)运行命令 @D:\oracle\product\10.2.0\db_1\ ...

  6. Oracle Update 语句语法与性能分析 - 多表关联

    Oracle Update 语句语法与性能分析 - 多表关联   为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, SQL 代码 --客户资料表 create ...

  7. [转]oracle awr报告生成和分析

    转自:http://blog.csdn.net/cuker919/article/details/8767328 最近由于数据库cpu占用非常高,导致VCS常常自动切换,引起很多问题. 最近学习一下数 ...

  8. oracle addm报告

    可通过@?/rdbms/admin/addmrpt.sql生成ADDM报告 ADDM本身并不是很实用,抽象级别太高,用于初步判断系统配置/IO子系统是否合理和快速参考,一个报告截图如下: 任务 '任务 ...

  9. oracle sql语句跟踪及性能分析工具实现

    在网上找了一大圈,没找着合适的工具来跟踪oracle一段时间的sql. 我们的场景是打算自动化跑遍所有场景(rft)+fiddler跟踪请求+后端跟踪sql,根据结果去分析慢的请求和sql,本来awr ...

随机推荐

  1. python3的文件读取问题

    今天在调python程序时,遇到了一个报错:illegal multibyte sequence. 后来在网上查资料,是文件读取的编码问题. py3读取文件的时候是可以指定编码的:open('file ...

  2. ucloud中的udisk错误“Read-only file system”修复指南

    当udisk写入数据提示错误:"Read-only file system",按照下面的方法修复:  1. 停止使用对应udisk的业务 如果有未知的进程正在操作这个硬盘,可使用命 ...

  3. Python中使用MongoEngine3

    最近重新拾起Django,但是Django并不支持mongodb,但是有一个模块mongoengine可以实现Django Model类似的封装.但是mongoengine的中文文档几乎没有,有的也是 ...

  4. python抓取数据构建词云

    1.词云图 词云图,也叫文字云,是对文本中出现频率较高的"关键词"予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨. 先看几个词 ...

  5. hibernate 增改查后对象的三种状态转换

    this.getSession().update(obj); this.getSession().merge(obj); this.getSession().saveOrUpdate(obj);1. ...

  6. 在Windows Server 2008 R2下搭建jsp环境(四)-在测试的过程中可能出现的问题

    环境基本部署好了之后,便开始测试,一定要让他经得起"考验",他才会值得你的信赖.Tomcat服务器部署成功的的验证方法(默认端口的情况下): 1.loacalhost:8080 2 ...

  7. 关于Random(47)与randon.nextInt(100)的区别

    参考https://blog.csdn.net/md_shmily92/article/details/44059313 相关文章random.nextInt()与Math.random()基础用法 ...

  8. level.go

    package blog4go import ( "fmt" "strings" ) // LevelType type defined for logging ...

  9. 数据保存策略(Retention Policies)

    数据保存策略(Retention Policies) InfluxDB没有提供直接删除Points的方法,但是它提供了Retention Policies.主要用于指定数据的保留时间:当数据超过了指定 ...

  10. vue enter事件无效,加入native

    <Input type="password" v-model="password" placeholder="password" @k ...