使用AWR监控Oracle性能测试

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 这个 SQL 语句显示快照每小时采集一次,采集的数据保留 8天。要修改设置 – 例如,快照时间间隔为 30 分钟,保留时间为30天 ,可以发出以下命令。参数以分钟为单位。

awr快照的设置

SQL> select snap_interval, retention from dba_hist_wr_control;
SNAP_INTERVAL            RETENTION
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
+00000 01:00:00.0           +00008 00:00:00.0


这个 SQL 语句显示快照每小时采集一次,采集的数据保留 8天。要修改设置 – 例如,快照时间间隔为 30 分钟,保留时间为30天 ,可以发出以下命令。参数以分钟为单位。


begin dbms_workload_repository.modify_snapshot_settings ( interval => 30, retention => 30*24*60 ); end;SQL> 
  2  /
PL/SQL procedure successfully completed.
SQL>  select snap_interval, retention from dba_hist_wr_control;
SNAP_INTERVAL            RETENTION
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
+00000 00:30:00.0           +00030 00:00:00.0


在性能测试前后创建AWR快照进行分析

在测试开始前和结束后各创建一个AWR快照,然后生成 AWR比对报告。


SQL> exec dbms_workload_repository.create_snapshot;
PL/SQL procedure successfully completed.
SQL> exec dbms_workload_repository.create_snapshot;
PL/SQL procedure successfully completed.
 col END_INTERVAL_TIME form a30
col BEGIN_INTERVAL_TIME  form a30
set linesize 200
select snap_id,BEGIN_INTERVAL_TIME,END_INTERVAL_TIME,dbid from dba_hist_snapshot ORDER BY SNAP_ID;
   SNAP_ID BEGIN_INTERVAL_TIME    DBID
......
  4 27-FEB-20 02.00.15.863 PM   1561251360
  5 27-FEB-20 02.20.25.357 PM   1561251360
SQL> @?/rdbms/admin/awrddrpt


基线

创建现在基线

对于有代表性的性能测试可以创建一个基线,可以长期保存这个时段的性能数据,用于和以后的性能进行对比分析。

根据snap_id创建:

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
start_snap_id IN NUMBER,
end_snap_id IN NUMBER,
baseline_name IN VARCHAR2,
dbid IN NUMBER DEFAULT NULL,
expiration IN NUMBER DEFAULT NULL);


根据时间创建:

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(

start_time IN DATE,

end_time IN DATE,

baseline_name IN VARCHAR2,

dbid IN NUMBER DEFAULT NULL,

expiration IN NUMBER DEFAULT NULL);

dbid为空默认为本地的数据库

expiration参数为空表示用不过期,否则是以天为单位的数字。


SQL> set linesize 200
SQL> col baseline_name for a40
SQL>  exec DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id=>4,end_snap_id=>5,baseline_name=>'test_bs1');
PL/SQL procedure successfully completed.
SQL>  select dbid,baseline_id,baseline_name,EXPIRATION,CREATION_TIME from dba_hist_baseline;
      DBID BASELINE_ID BASELINE_NAME    EXPIRATION CREATION_TIME
---------- ----------- ---------------------------------------- ---------- -------------------
1561251360      1 test_bs1         2020-02-27 14:47:54
1561251360      0 SYSTEM_MOVING_WINDOW       2020-02-27 11:11:03


创建未来基线

我们可以使用基线模板创建在将来要捕获的基线,CREATE_BASELINE_TEMPLATE存储过程定义单一基线或重复基线的捕获。

创建单一基线模板。

SQL> exec DBMS_WORKLOAD_REPOSITORY.create_baseline_template(start_time=>TO_DATE('27-FEB-2020 17:30', 'DD-MON-YYYY HH24:MI'),end_time=>TO_DATE('27-FEB-2020 18:40', 'DD-MON-YYYY HH24:MI'),baseline_name =>'TEST_BS1',template_name =>'TEST_TP1');
PL/SQL procedure successfully completed.
SQL> col REPEAT_INTERVAL for a10
SQL> select DBID,TEMPLATE_ID,TEMPLATE_NAME,TEMPLATE_TYPE,DURATION,EXPIRATION,REPEAT_INTERVAL from dba_hist_baseline_template;
      DBID TEMPLATE_ID TEMPLATE_NAME        TEMPLATE_   DURATION EXPIRATION REPEAT_INT
---------- ----------- ------------------------------ --------- ---------- ---------- ----------
1561251360      1 TEST_TP1         SINGLE


重复基线模板和单一基线模板稍微有点不同,因为它需要调度信息,START_TIME和END_TIME参数分别在模板激活和释放时定义,DAY_OF_WEEK,HOUR_IN_DAY和DURATION定义产生基线的日期,时间和持续时间,因为模板会产生多个基线,基线名是以BASELINE_NAME_PREFIX开始的,下面的基线模板例子将在未来12个月内运行,每周星期一10:00至11:00收集基线。

SQL> begin
  2  DBMS_WORKLOAD_REPOSITORY.create_baseline_template(
day_of_week=>'MONDAY',
hour_in_day=>10,duration=>1,
start_time=>SYSDATE,
end_time=>ADD_MONTHS(SYSDATE, 12),
baseline_name_prefix =>'monday_morning_bl',
template_name=>'Monday_morning_1',
expiration=> NULL
);   3    4    5    6    7    8    9   10  
 11  end;
 12  /
PL/SQL procedure successfully completed.
SQL> select DBID,TEMPLATE_ID,TEMPLATE_NAME,TEMPLATE_TYPE,DURATION,EXPIRATION,REPEAT_INTERVAL from dba_hist_baseline_template;
      DBID TEMPLATE_ID TEMPLATE_NAME        TEMPLATE_   DURATION EXPIRATION REPEAT_INT
---------- ----------- ------------------------------ --------- ---------- ---------- ----------
1561251360      1 TEST_TP1         SINGLE
1561251360      2 Monday_morning_1        REPEATING   1       FREQ=WEEKL
                Y;INTERVAL
                =1;BYDAY=M
                ON;BYHOUR=
                10;BYMINUT
                E=0;BYSECO
                ND=0


删除基线模板


SQL> exec DBMS_WORKLOAD_REPOSITORY.drop_baseline_template (template_name =>'TEST_TP1');
PL/SQL procedure successfully completed.


将两个需要比较的数据库的awr数据导入到一个数据库上进行比较

导出awr数据

SQL> @?/rdbms/admin/awrextr.sql
~~~~~~~~~~~~~
AWR EXTRACT
~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~  This script will extract the AWR data for a range of snapshots  ~
~  into a dump file.  The script will prompt users for the    ~
~  following information:        ~
~     (1) database id         ~
~     (2) snapshot range to extract       ~
~     (3) name of directory object       ~
~     (4) name of dump file        ~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.........
Enter value for directory_name: DATA_PUMP_DIR
Using the dump file prefix: awrlocal_nvme1_31
|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|  The AWR extract dump file will be located
|  in the following directory/file:
|   /u01/app/oracle/admin/orcl/dpdump/
|   awrlocal_nvme1_31.dmp
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|  *** AWR Extract Started ...
|
|  This operation will take a few moments. The
|  progress of the AWR extract operation can be
|  monitored in the following directory/file:
|   /u01/app/oracle/admin/orcl/dpdump/
|   awrlocal_nvme1_31.log
|


导入awr数据

@?/rdbms/admin/awrload.sql

不能导入到同一个数据库中

begin
*
ERROR at line 1:
ORA-20105: unable to move AWR data to SYS
ORA-06512: at "SYS.DBMS_SWRF_INTERNAL", line 2984
ORA-20107: not allowed to move AWR data for local dbid
ORA-06512: at line 3
... Dropping AWR_STAGE user
End of AWR Load

基线对比

可以对两个时间段的性能数据进行对比:


SQL>  
spool awr_compare_report.html
set echo off;
set veri off;
set feedback off;
set head off
set verify off
set lines 8000
select * from TABLE(DBMS_WORKLOAD_REPOSITORY.awr_diff_report_html(1561251360,1,2,3,
1561251360,1,9,10));
spool off
SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL>   2  
<html lang="en"><head><title>AWR Compare Period Report for (1) DB: ORCL, Inst: orcl, Snaps: 2-3 (2) DB: ORCL, Inst: orcl, Snaps: 9-10</title>
<style type="text/css">
......



从对比结果中可以看到指标的差异:


image.png

image.png

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
3月前
|
监控 JavaScript 前端开发
在生产环境中测试和监控Vue项目的方法有哪些?
在生产环境中测试和监控Vue项目的方法有哪些?
55 4
|
3月前
|
监控 测试技术
为什么要在测试管理中做测试监控和跟踪?
为什么要在测试管理中做测试监控和跟踪?
|
2月前
|
监控 测试技术
局域网监控软件的自动化测试框架搭建(使用JUnit)
本文介绍了如何使用JUnit搭建局域网监控软件的自动化测试框架。通过创建测试类和编写测试用例,如连接测试和警报功能测试,确保软件功能的正确性。测试完成后,利用HTTP POST请求将监控数据自动提交到指定网站,实现数据的实时更新和追踪。这种方法能提升测试效率,保证软件质量和稳定性。
128 3
|
3月前
|
JSON 监控 测试技术
Groovy脚本编写员工上网行为监控自动化测试
本文介绍了如何使用Groovy脚本创建一个自动化工具来监控员工的网络活动。通过编写简单脚本记录员工访问的网站并打印信息,可进一步扩展为将数据保存至数据库。此外,通过设定定时任务,实现了每30分钟自动监控一次的功能。最后,展示了如何将监控数据转换为JSON格式并使用HTTP POST请求提交到网站,以实现数据的自动化上报,有助于企业保障网络安全、保护数据并提升工作效率。
143 5
|
3月前
|
SQL Oracle 关系型数据库
oracle11g SAP测试机归档日志暴增排查(二)
oracle11g SAP测试机归档日志暴增排查(二)
234 1
|
3月前
|
Oracle 关系型数据库 Shell
oracle11g SAP测试机归档日志暴增排查(一)
oracle11g SAP测试机归档日志暴增排查(一)
52 1
|
29天前
|
监控 Oracle 关系型数据库
关系型数据库Oracle恢复测试
【7月更文挑战第20天】
32 7
|
2月前
|
运维 DataWorks Oracle
DataWorks产品使用合集之在标准模式下,当同步Oracle的表或视图时,是否需要在源端的测试和生产环境中都存在要同步的表或视图
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
25 3
|
3月前
|
开发框架 监控 Java
深入探索Spring Boot的监控、管理和测试功能及实战应用
【5月更文挑战第14天】Spring Boot是一个快速开发框架,提供了一系列的功能模块,包括监控、管理和测试等。本文将深入探讨Spring Boot中监控、管理和测试功能的原理与应用,并提供实际应用场景的示例。
50 2
|
3月前
|
运维 监控 Linux
提升系统稳定性:Linux服务器性能监控与故障排查实践深入理解与实践:持续集成在软件测试中的应用
【5月更文挑战第27天】在互联网服务日益增长的今天,保障Linux服务器的性能和稳定性对于企业运维至关重要。本文将详细探讨Linux服务器性能监控的工具选择、故障排查流程以及优化策略,旨在帮助运维人员快速定位问题并提升系统的整体运行效率。通过实际案例分析,我们将展示如何利用系统资源监控、日志分析和性能调优等手段,有效预防和解决服务器性能瓶颈。

热门文章

最新文章

推荐镜像

更多