性能测试时,Oracle AWR 快照应该如何打点?

发表于:2018-1-11 10:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杨建旭    来源:51Testing软件测试网采编

  性能测试的时候,Oracle AWR快照如何打点比较合理?对于Oracle专家来说不值得一提,对于刚刚接触Oracle数据库的性能测试人员来说,的确是个问题。至少,对于我刚刚接触AWR的时候,的确是我思考过的一个问题。
  首先,简单介绍一下AWR是什么。
  Oracle10g开始提供了一个标志性的改进特性:自动工作量存储(Automatic Workload Repository AWR)。AWR是随着数据库一起被安装的,它不仅能收集统计数据,还能从统计数据中分析出度量数据,即AWR是一个Oracle用来收集性能相关统计数据并从中得出性能度量数据来追踪潜在问题的内置工具。
  AWR长得就是这个样子:

  AWR报告是利用两个数据库快照生成的。AWR的快照信息是由一个新的后台进程MMON自动收集的,默认情况下,也就是你不管它,每小时会自动打一个快照,这些收集的数据会在7天后自动清除,当然快照收集的频率和保留时间都是可以被用户修改的。
  这里盗个图:
  好了,AWR和快照是个什么关系?
  每个快照里面记录内容类似于:现在SGA的内存使用了多少,现在某SQL执行了多少次。那么两个快照的“差”就是AWR报告的内容,举例:
  快照1,9:00:00:现在SGA的内存使用了10G,现在某SQL执行了500次。
  快照2,10:00:00:现在SGA的内存使用了12G,现在某SQL执行了600次。
  两个快照的“差”,就是SGA内存从10G变到了12G,某SQL在两个快照中间的这段时间执行了600-500=100次,这些内容就构成了AWR。
  你可以选择任意两个快照去做“差”
  NMON是类UNIX平台监控系统性能的一个最常用的工具。如果我们要比较粗略的统计信息,可以让NMON 5分钟打一个点,如果我们要比较精细的统计信息,可以让NMON 5秒钟打一个点,这是NMON的监控策略。当然越频繁的打点会消耗越多的系统资源,后续的处理上也非常消耗系统资源,可能数据量太大,excel都打不开了。
  刚刚接触AWR的同学会问,AWR默认是1小时打一个点,能不能频繁一点,5分钟、1分钟,甚至几秒钟打一个点。AWR的确可以改变打快照的频率,但似乎最快也要5分钟一个。这是因为AWR和NMON的报告表现形式不一样。
  NMON的报告最终是多点连线的表现形式。而AWR是两点做“差”,也就是两点连线的表现形式。
  所以AWR打快照打太快也没有用,最后也只能选两个点之间的“差”出报告,并且还消耗系统资源。
  如果以后Oracle把AWR做成多点连线就更酷了。
  既然只能打两个点,那么选哪两个点呢?选系统自动1小时打的那些点显然不合适。因为我们想看的是测试的这段时间,比如30分钟的数据库数据,而自动打点只能选1个小时或者2个小时的数据库数据。而且跟测试的时间段还对不上。
  所以,测试开始的时候,手工打一个点A,测试结束的时候手工打一个点B,生产AWR报告的时候,选AB两个点比较合适。
  做性能分析的时候,经常要两个类似场景的AWR报告做对比。如果某个系统运行时间过长咱等不上它结束,或者也不能结束这个系统,那只能老老实实的取一个固定的时间段做对比。例如,场景A取上午9:00~10:00的1小时,场景B也取上午9:00~10:00的1小时。时间长度相同的情况下,对比他们的数据“差”更靠谱。
  AWR 的基本概念理解
  Automatic Workload Repository (AWR) 收集、处理和维护用于问题诊断的性能统计信息。该数据既存在于数据块中,也存在于内存中。AWR 收集的数据可以通过报告和视图进行查看。
  AWR 处理和收集的统计信息包括:
  1.确定数据块 segment 访问路径和使用情况的对象统计信息
  2.基于数据库活动的时间使用情况的时间模型统计信息,可在 V$SYS_TIME_MODEL 和 V$SESS_TIME_MODEL 视图中查看
  3.V$SYSSTAT 和 V$SESSTAT 视图中收集的一些 sytem 和 session 的统计信息
  4.按照 elapsed time 和 CPU time 等条件在系统上筛选出的产生较高负载的 SQL 语句
  5.ASH 统计信息——最近的 session 活动的历史记录
  数据库默认情况下已启用 AWR 收集统计信息,它 STATISTICS_LEVEL 初始化参数来控制。STATISTICS_LEVEL 参数必须设置为 TYPICAL 或 ALL 才能启用 AWR 统计信息收集。默认的设置为 TYPICAL。将 STATISTICS_LEVEL 设置为 BASIC 将禁用许多 Oracle Database 功能,包括 AWR,所以不推荐这么设置。当 STATISTICS_LEVEL 设置为 BASIC 时,仍然可以使用 DBMS_WORKLOAD_REPOSITORY 包手动捕获 AWR 统计信息。但是许多在内存中收集的系统统计信息,如 segment 统计信息和 memory advisor 信息都将被禁用,这种情况下的手动快照捕获的统计信息可能不是完整的。
  1 Snapshot
  快照是 ADDM 用于性能比较的特定时期内的历史数据集合。在 11g 中,Oracle Database 每小时会自动生成性能数据的快照,并将这些统计信息在工作负载信息库中保留 8 天。您也可以手动创建快照,其实没必要这么做。快照间隔内的统计信息由 Automatic Database Diagnostic Monitor (ADDM) 进行分析。
  AWR 通过比较各个快照之间的差异,根据对系统负载的影响来确定要捕获的 SQL 语句,随着时间的发展,必须捕获的 SQL 语句将逐渐减少。
  2 Baseline
  Baseline 是指一个特定时间段内的性能数据,保留这些数据是为了在性能问题产生时与其他类似的工作负载时间段进行比较。Baseline 中包含的快照将从自动 AWR 清理进程中排除,并无限期的保留。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号