目录结构
注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下:
1、参考书籍:《Oracle Database SQL Language Reference》
2、参考书籍:《PostgreSQL中文手册》
3、EDB Postgres Advanced Server User Guides,点击前往
4、PostgreSQL数据库仓库链接,点击前往
5、PostgreSQL中文社区,点击前往
6、Oracle Real Application Testing 官网首页,点击前往
7、Oracle 21C RAT Testing Guide,点击前往
8、测试指南 Setting Up Replay Clients,点击前往
9、swingbench-免费的oracle性能压测工具,点击前往
10、使用免费负载生成器swingbench对oracle数据库进行压力测试(测试Oracle的功能或评估性能),点击前往
11、牛刀小试–Oracle Swingbench 压力测试,点击前往
1、本文内容全部来源于开源社区 GitHub和以上博主的贡献,本文也免费开源(可能会存在问题,评论区等待大佬们的指正)
2、本文目的:开源共享 抛砖引玉 一起学习
3、本文不提供任何资源 不存在任何交易 与任何组织和机构无关
4、大家可以根据需要自行 复制粘贴以及作为其他个人用途,但是不允许转载 不允许商用 (写作不易,还请见谅 💖)
Oracle数据库性能压测工具swingbench的安装和使用及AWR ASH ADDM报告生成
- 文章快速说明索引
- 压力测试工具简介
- 简介
- 安装
- 使用
- 负载之后生成报告
- AWR报告
- ADDM报告
- ASH 报告
文章快速说明索引
学习目标:
目的:接下来这段时间我想做一些兼容Oracle数据库Real Application Testing (即:RAT)上的一些功能开发,本专栏这里主要是学习以及介绍Oracle数据库功能的使用场景、原理说明和注意事项等,基于PostgreSQL数据库的功能开发等之后 由新博客进行介绍和分享!
学习内容:(详见目录)
1、Oracle数据库性能压测工具swingbench的安装和使用及AWR ASH ADDM报告生成
学习时间:
2023年04月05日 18:46:41
学习产出:
1、Oracle数据库性能压测工具swingbench的安装和使用及AWR ASH ADDM报告生成
2、CSDN 技术博客 1篇
注:下面我们所有的学习环境是Centos7+PostgreSQL15.0+Oracle19c+MySQL5.7
postgres=# select version();version
-----------------------------------------------------------------------------PostgreSQL 15.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.1.0, 64-bit
(1 row)postgres=##-----------------------------------------------------------------------------#SQL> select * from v$version; BANNER BANNER_FULL BANNER_LEGACY CON_ID
--------------------------------------------------------------------------- --------------------------------------------------------------------------- --------------------------------------------------------------------------- ----------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production 0Version 19.3.0.0.0SQL>
#-----------------------------------------------------------------------------#mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.19 |
+-----------+
1 row in set (0.06 sec)mysql>
压力测试工具简介
简介
Swingbench 是一个免费负载生成器(和基准测试),旨在对 Oracle 数据库进行压力测试。目前最新版本 Swingbench 2.6。SwingBench 由负载生成器,协调器和集群概述组成。该软件可以生成负载并绘制交易/响应时间图表。
- dominicgiles.com 下载页,点击前往
- https://github.com/domgiles/swingbench-public/releases
[root@dbserver ~]# mkdir /data
[root@dbserver ~]#
[root@dbserver ~]# cd /data/
[root@dbserver data]# pwd
/data
[root@dbserver data]# wget https://github.com/domgiles/swingbench-public/releases/download/production/swingbench30092022.zip
...
Swingbench 可用于演示和测试技术,例如实际应用程序集群,在线表重建,备用数据库,在线备份和恢复等。SwingBench 附带的代码包括 6 个基准:OrderEntry,SalesHistory,TPC-DS Like,JSON,CallingCircle 和 StressTest …整个框架是用 Java 开发的,因此可以在各种平台上运行。要运行 swingbench,必须在客户端平台上安装 Java 虚拟机(JVM)。JVM 必须至少为 Java 8 或更高版本。尽管 Swingbench 附带了最新的 jdbc 库,这意味着它可以在不需要任何其他库的情况下针对 Oracle 数据库运行,但如果需要,则有必要安装 Oracle OCI 库。这些可以在这里下载:
- http://www.oracle.com/technology/software/tech/oci/instantclient/index.html
-- 系统信息[root@dbserver data]# cat /etc/os-release
NAME="Oracle Linux Server"
VERSION="7.9"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.9"
PRETTY_NAME="Oracle Linux Server 7.9"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:9:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.9
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.9
[root@dbserver data]#
[root@dbserver data]# uname -a
Linux dbserver 5.4.17-2136.304.4.2.el7uek.x86_64 #2 SMP Fri Feb 25 17:37:41 PST 2022 x86_64 x86_64 x86_64 GNU/Linux
[root@dbserver data]#
[root@dbserver data]# cat /proc/version
Linux version 5.4.17-2136.304.4.2.el7uek.x86_64 (mockbuild@build-ol7-x86_64.oracle.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39.0.3) (GCC)) #2 SMP Fri Feb 25 17:37:41 PST 2022
[root@dbserver data]#
安装
第一步:卸载系统自带的OpenJDK以及相关的Java文件
# 查看JDK信息
[root@dbserver ~]# java -version
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
[root@dbserver ~]# # 检测jdk的安装包
[root@dbserver ~]# rpm -qa | grep java
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
tzdata-java-2021e-1.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.322.b06-1.el7_9.x86_64
[root@dbserver ~]#
# 删除相关Java文件[root@dbserver ~]# rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64 tzdata-java-2021e-1.el7.noarch python-javapackages-3.4.1-11.el7.noarch java-1.8.0-openjdk-headless-1.8.0.322.b06-1.el7_9.x86_64
[root@dbserver ~]#
[root@dbserver ~]# rpm -qa | grep java
[root@dbserver ~]#
第二步:JDK安装
- https://www.oracle.com/java/technologies/downloads/#java20
[root@dbserver ~]# cd /data/
[root@dbserver data]#
[root@dbserver data]# wget https://download.oracle.com/java/20/latest/jdk-20_linux-x64_bin.tar.gz
...
[root@dbserver data]# tar -zxvf jdk-20_linux-x64_bin.tar.gz
...
[root@dbserver data]# ls
jdk-20 jdk-20_linux-x64_bin.tar.gz swingbench30092022.zip
[root@dbserver data]#
第三步:修改配置文件/etc/profile
,配置JDK相关的环境变量
#java environment
export JAVA_HOME=/data/jdk-20
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@dbserver data]# vim /etc/profile
[root@dbserver data]#
[root@dbserver data]# . /etc/profile
[root@dbserver data]#
[root@dbserver data]#
[root@dbserver data]# java -version
java version "20" 2023-03-21
Java(TM) SE Runtime Environment (build 20+36-2344)
Java HotSpot(TM) 64-Bit Server VM (build 20+36-2344, mixed mode, sharing)
[root@dbserver data]#
[root@dbserver data]# javac -version
javac 20
[root@dbserver data]#
第四步:swingbench安装
[root@dbserver data]# unzip swingbench30092022.zip
...[root@dbserver data]# cd swingbench/
[root@dbserver swingbench]#
[root@dbserver swingbench]# ls
bin configs launcher lib log README.txt source sql utils winbin wizardconfigs
[root@dbserver swingbench]#
[root@dbserver swingbench]# ll
总用量 36
drwxr-xr-x 3 root root 4096 10月 1 2022 bin
drwxr-xr-x 2 root root 4096 10月 1 2022 configs
drwxr-xr-x 2 root root 112 3月 14 2022 launcher
drwxr-xr-x 3 root root 4096 6月 24 2022 lib
drwxr-xr-x 2 root root 6 3月 3 2010 log
-rw-rw-rw- 1 root root 6163 3月 16 2022 README.txt
drwxr-xr-x 3 root root 50 6月 24 2022 source
drwxr-xr-x 2 root root 8192 6月 24 2022 sql
drwxr-xr-x 2 root root 61 5月 13 2022 utils
drwx------ 3 root root 4096 5月 6 2022 winbin
drwxr-xr-x 2 root root 155 3月 14 2022 wizardconfigs
[root@dbserver swingbench]#
使用
注:本人使用的是Oracle 19C,以下教程都是在19C上进行的!
[oracle@dbserver ~]$ cat /home/oracle/oracle19c/product/19c/dbhome_1/network/admin/listener.ora
# listener.ora Network Configuration File: /home/oracle/oracle19c/product/19c/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.ORCL =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))
SID_LIST_LISTENER =
(SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl)(SID_NAME = orcl))
)
[oracle@dbserver ~]$ cat ./oracle19c/product/19c/dbhome_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /home/oracle/oracle19c/product/19c/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.LISTENER_ORCL =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))ORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))PDBORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ORCLPDB)))
[oracle@dbserver ~]$
第零步:启动Oracle服务
[oracle@dbserver ~]$ lsnrctl startLSNRCTL for Linux: Version 19.0.0.0.0 - Production on 05-APR-2023 19:43:46Copyright (c) 1991, 2019, Oracle. All rights reserved.Starting /home/oracle/oracle19c/product/19c/dbhome_1/bin/tnslsnr: please wait...TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /home/oracle/oracle19c/product/19c/dbhome_1/network/admin/listener.ora
Log messages written to /home/oracle/oracle19c/diag/tnslsnr/dbserver/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbserver.localdomain)(PORT=1521)))Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 05-APR-2023 19:44:02
Uptime 0 days 0 hr. 0 min. 35 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/oracle/oracle19c/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File /home/oracle/oracle19c/diag/tnslsnr/dbserver/listener/alert/log.xml
Listening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbserver.localdomain)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@dbserver ~]$
如上,pdb没有自动注册到侦听,手动注册如下:
[oracle@dbserver ~]$ sqlplus sysdba/123456 as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Wed Apr 5 20:22:36 2023
Version 19.3.0.0.0Copyright (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.0SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.119.132)(PORT=1521)))';System altered.SQL> alter system set REMOTE_LISTENER=' (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.119.132)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.119.132)(PORT = 1521)))';System altered.SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@dbserver ~]$
第一步:创建测试数据 如下:
[root@dbserver swingbench]# cd bin/
[root@dbserver bin]#
[root@dbserver bin]# pwd
/data/swingbench/bin
[root@dbserver bin]#
[root@dbserver bin]# ls
bmcompare ccwizard charbench coordinator data jsonwizard minibench oewizard results2pdf sbutil shwizard sqlbuilder swingbench tpcdswizard tpchwizard
[root@dbserver bin]#
[root@dbserver bin]# ./oewizard
注:这个地方 不要用system,最好使用sys用户!如下:
注:如果 上面这一步next失败,需要重新看一下 服务启动及监听 是否正常!
[oracle@dbserver orclpdb]$ pwd
/home/oracle/oracle19c/oradata/ORCL/orclpdb
[oracle@dbserver orclpdb]$
[oracle@dbserver orclpdb]$ ll
总用量 792244
-rw-r-----. 1 oracle oracle 398467072 4月 5 19:51 sysaux01.dbf
-rw-r-----. 1 oracle oracle 293609472 4月 5 19:51 system01.dbf
-rw-r-----. 1 oracle oracle 37756928 3月 3 2022 temp01.dbf
-rw-r-----. 1 oracle oracle 104865792 4月 5 19:51 undotbs01.dbf
-rw-r-----. 1 oracle oracle 5251072 4月 5 19:46 users01.dbf
[oracle@dbserver orclpdb]$
注:上面这个文件路径 特别要说明一下:第一次进来 是没有的,需要大家自己填一个文件路径(这个文件一定不要存在)!!!
注:我们这里根据自己的需要,选择合适的负载数据量及并发,如下:
开始加载数据,如下:
此刻时间:2023年04月06日 11:18:08
结束时间:2023年04月06日 11:22:02
注:如上 一个错误都没有才算成功!这个很重要 不然下面会出问题的!
开始性能压测,修改connect string,配置server monitoring相关配置参数,调整transtions的load ratio、number of users等 如下:
开始压测,如下:(若是一切问题都没有)
负载之后生成报告
2023年04月06日 12:54:34
等到一定负载之后,我们断开bench,如下:
2023年04月06日 13:01:15
AWR报告
AWR(Automatic Workload Repository
自动工作负载库)这个工具可以自动采集Oracle运行中的负载信息,并生成与性能相关的统计数据。我们可以根据这些统计数据来分析一些潜在的问题。
AWR的原理:当Oracle启动后,后台会有个进程去每小时采集一次系统的快照信息,信息采集来源为: V$active_Session_History
视图,该视图可以展示最近活动会话的历史记录。并将采集到的信息保存8天。采样频率和保存时间可配置,如下:
SQL> set lines 200
SQL> col SNAP_INTERVAL format a20
SQL> col SRC_DBNAME format a20
SQL>
SQL> select * from dba_hist_wr_control;DBID SNAP_INTERVAL RETENTION TOPNSQL CON_ID SRC_DBID SRC_DBNAME
---------- -------------------- --------------------------------------------------------------------------- ---------- ---------- ---------- --------------------
1591249645 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT 0 1591249645 CDB$ROOTSQL>
快照由MMON和MMNL的进程自动地每隔固定时间采集一次。MMON进程负责执行多种和管理相关的后台任务,MMNL负责执行轻量级切高频率的管理相关的后台任务。
Oracle 可以将8天的awr快照数据进行储存,我们可以将oracle中的任何两个时间点(输入日期后,会返回相应的时段内,快照对应的时间 如下)生成该段时间内的awr报告。
首先创建一个快照,如下:
SQL> exec dbms_workload_repository.create_snapshot();PL/SQL procedure successfully completed.SQL>
SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql
...
...
<p />
End of Report
</body></html>
Report written to awrrpt_1_1124_1125.html
SQL>
如上,我们这里选择两个快照:1124 1125(它对应上面刚创建的)!
这里需要注意的是:AWR 报告是DBA 的一个重要辅助工具,用来帮助我们分析数据库的性能问题。我们通常说的AWR 报告默认指的是awrrpt.sql 这个单实例的AWR 报告。
[oracle@dbserver ~]$ cd $ORACLE_HOME/rdbms/admin
[oracle@dbserver admin]$
[oracle@dbserver admin]$ ls -lrt awr*.sql
-rw-r--r--. 1 oracle oracle 744 1月 26 2017 awrrptinoop.sql
-rw-r--r--. 1 oracle oracle 1730 1月 26 2017 awrrptidc.sql
-rw-r--r--. 1 oracle oracle 7657 5月 29 2017 awrupd12.sql
-rw-r--r--. 1 oracle oracle 3114 5月 29 2017 awrsqrpt.sql
-rw-r--r--. 1 oracle oracle 10161 5月 29 2017 awrrpti.sql
-rw-r--r--. 1 oracle oracle 14374 5月 29 2017 awrinput.sql
-rw-r--r--. 1 oracle oracle 1533 5月 29 2017 awrgrpt.sql
-rw-r--r--. 1 oracle oracle 8606 5月 29 2017 awrgrpti.sql
-rw-r--r--. 1 oracle oracle 12399 5月 29 2017 awrginp.sql
-rw-r--r--. 1 oracle oracle 3667 5月 29 2017 awrgdrpt.sql
-rw-r--r--. 1 oracle oracle 9384 5月 29 2017 awrgdrpi.sql
-rw-r--r--. 1 oracle oracle 11610 5月 29 2017 awrextr.sql
-rw-r--r--. 1 oracle oracle 3883 5月 29 2017 awrddrpt.sql
-rw-r--r--. 1 oracle oracle 1458 5月 29 2017 awrblmig.sql
-rw-r--r--. 1 oracle oracle 11458 7月 6 2017 awrload.sql
-rw-r--r--. 1 oracle oracle 2907 7月 29 2017 awrinpnm.sql
-rw-r--r--. 1 oracle oracle 26042 7月 29 2017 awrgdinp.sql
-rw-r--r--. 1 oracle oracle 30797 7月 29 2017 awrddinp.sql
-rw-r--r--. 1 oracle oracle 2539 1月 4 2018 awrmacro.sql
-rw-r--r--. 1 oracle oracle 8333 8月 9 2018 awrrpt.sql
-rw-r--r--. 1 oracle oracle 12153 8月 16 2018 awrsqrpi.sql
-rw-r--r--. 1 oracle oracle 10177 8月 21 2018 awrddrpi.sql
-rw-r--r--. 1 oracle oracle 49857 8月 23 2018 awrinfo.sql
[oracle@dbserver admin]$
如上:
awrrpt.sql: 单实例AWR 报告
awrgrpt.sql: RAC 的AWR 报告
awrddrpt.sql: 单实例AWR 对比报告
awrgdrpt.sql: RAC 的AWR 对比报告
awrsqrpt.sql: 单个SQL 的报告
- 在之前的版本,AWR,ADDM, ASH 是三个独立的部分,有时在分析时我们需要分别收集, 在19c的AWR 报告中,包含了这3部分的内容
- 针对CDB执行命令收集AWR,并且Oracle 19c 的PDB AWR 报告也包含了PDB 的ASH 和 ADDM 的内容
- 在CDB 架构下,尤其是是多个PDB的情况下,要注意这一点。如果CDB 环境有多个PDB,那么如果收集的是整个CDB 的AWR报告,那么该报告也是包含所有PDB的数据,无法准确分析是哪个PDB 导致的性能问题。所以对于多PDB的情况下,建议是按PDB 来收集AWR报告,如下:
SQL> show pdbsCON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY NO3 ORCLPDB READ WRITE NO
SQL> alter session set container=ORCLPDB;Session altered.SQL> show con_nameCON_NAME
------------------------------
ORCLPDB
SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql
...
ADDM报告
SQL> @$ORACLE_HOME/rdbms/admin/addmrpt.sql
...
同样选择上面这两个快照!
...
Miscellaneous Information
-------------------------
There was no significant database activity to run the ADDM.End of Report
Report written to addmrpt_1_1124_1125.txt
SQL>
ASH 报告
SQL> @$ORACLE_HOME/rdbms/admin/ashrpt.sqlSpecify the Report Type
...
选择时间:负载开始的时候 持续10分钟即可(我们负载实际上不到10分钟)!
...Using the report name ashrpt_1_0406_1304.htmlSummary of All User Input
-------------------------
Format : HTML
DB Id : 1591249645
Inst num : 1
Begin time : 06-Apr-23 12:54:00
End time : 06-Apr-23 13:04:00
Slot width : Default
Report targets : 0
Report name : ashrpt_1_0406_1304.html...
<p />
End of Report
</body></html>
Report written to ashrpt_1_0406_1304.html
SQL>
-- 生成的报告如下:[oracle@dbserver orclpdb]$ ll
总用量 3743760
-rw-rw-r-- 1 oracle oracle 1170 4月 6 13:13 addmrpt_1_1124_1125.txt
-rw-rw-r-- 1 oracle oracle 50430 4月 6 13:16 ashrpt_1_0406_1304.html
-rw-rw-r-- 1 oracle oracle 879509 4月 6 13:09 awrrpt_1_1124_1125.html
-rw-rw---- 1 oracle oracle 2670731264 4月 6 13:06 soe.dbf
-rw-r-----. 1 oracle oracle 398467072 4月 6 13:19 sysaux01.dbf
-rw-r-----. 1 oracle oracle 293609472 4月 6 13:19 system01.dbf
-rw-r-----. 1 oracle oracle 261103616 4月 6 13:01 temp01.dbf
-rw-r-----. 1 oracle oracle 204480512 4月 6 13:19 undotbs01.dbf
-rw-r-----. 1 oracle oracle 5251072 4月 6 13:05 users01.dbf
[oracle@dbserver orclpdb]$
注:
@$ORACLE_HOME/rdbms/admin/awrrpt.sql
是以前statspack的扩展,收集信息更详细,查看长期的数据库情况@$ORACLE_HOME/rdbms/admin/ashrpt.sql
查看当前的数据库情况,因为ash是每秒从v$session进行进行取样,awr收集的数据要比ash多得多
一般收集数据库信息的话要结合awr和ash
@$ORACLE_HOME/rdbms/admin/addmrpt .sql
相当于是驻留在oracle里的一位专家,是一个自我诊断引擎。产生symptom,problem,infomation,提供解决问题的建议,并自动修复一些具体的故障@$ORACLE_HOME/rdbms/admin/awrinfo.sql
显示的都是awr的相关信息,包括快照信息、sysaux空间使用、awr组件、ash等信息
差别如下:
- awr与ash的最主要的区别在于:awr是平面的,全面的,ash是立体的,更侧重于session的event跟踪,由于业务量大的数据库的event wait是瞬息万变
- awr很可能会监控不到,为了弥补这个不足,ash才可以对session的event进行跟踪
- ash与addm的区别在于:addm偶重于基于对当据库当前状态的分析,对存在的问题提供指导性的意见
- 可以说ash,addm是awr的补充,awr全面地收集数据库的状态,但ash/addm是侧重要对收集的数据进行分析,并提供一些有益的建议