暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

AWR 性能报告与小技巧

AWR 性能报告与小技巧

AWR(Automatic Workload Repository)报告是 Oracle 数据库中的一项重要工具,它用于收集数据库性能数据并提供分析。这些报告可以帮助 DBAs(数据库管理员)检测和诊断性能问题,尤其是在需要优化数据库资源和排查性能瓶颈时。AWR 性能报告不仅包含了详细的统计数据,还可以帮助我们对比不同时间段的性能表现,从而找到潜在的性能问题。

1. 手动执行 AWR 快照

AWR 快照是数据库在特定时间点的性能快照。你可以通过手动执行以下命令来创建一个快照:

exec dbms_workload_repository.create_snapshot;

执行此命令后,AWR 快照就会创建,之后可以生成报告用于性能分析。通常,在高负载或者执行关键操作时,DBA 会手动创建 AWR 快照,以便对比不同时间点的数据。

2. 创建 AWR 基线

AWR 基线用于定义性能的基准,可以帮助你比较不同时间段的性能数据。使用以下命令创建一个 AWR 基线:

exec dbms_workload_repository.create_baseline(start_snap_id, end_snap_id, baseline_name);

start_snap_idend_snap_id 是你希望创建基线的 AWR 快照 ID 范围,baseline_name 是为该基线命名的名称。基线有助于确保你对比的时间段是具有代表性的,并且帮助发现性能的变化趋势。

3. 生成 AWR 报告

AWR 报告可以通过多种方式生成。以下是几种常用命令:

  • 生成当前实例的 AWR 报告:

    @?/rdbms/admin/awrrpt
  • 生成 RAC 环境下特定实例的 AWR 报告:

    @?/rdbms/admin/awrrpti
  • 生成 AWR 对比报告(用于比较不同时间点的性能差异):

    @?/rdbms/admin/awrddrpt
  • 生成 RAC 环境的全局 AWR 报告:

    @?/rdbms/admin/awrgrpt

4. 解读 DB Time

DB Time 是所有前台 session 在数据库调用上的总和时间,包括 CPU 时间、I/O 时间和其他非空闲等待时间。值得注意的是,DB Time 并不等于响应时间。如果 DB Time 高,并不意味着响应时间就慢;如果 DB Time 低,并不意味着响应时间就快。

Average Active Session (AAS) 通过以下公式计算:

AAS = DB Time / Elapsed Time

AAS 是评估系统负载的重要指标。一般来说,AAS 越高,表示系统负载越重。比如,如果 AAS 达到 1000,可能意味着系统已经出现了性能瓶颈,甚至可能进入挂起状态。

5. 查找最近 7 天的 DB Time

通过以下查询,你可以查看过去 7 天内的 DB Time 数据:

WITH sysstat AS ( SELECT sn.begin_interval_time begin_interval_time, sn.end_interval_time end_interval_time, ss.stat_name stat_name, ss.value e_value, lag(ss.value, 1) OVER (ORDER BY ss.snap_id) b_value FROM dba_hist_sysstat ss JOIN dba_hist_snapshot sn ON ss.snap_id = sn.snap_id AND ss.dbid = sn.dbid AND ss.instance_number = sn.instance_number WHERE trunc(sn.begin_interval_time) >= sysdate - 7 AND ss.stat_name = 'DB time' AND ss.dbid = (SELECT dbid FROM v$database) AND ss.instance_number = (SELECT instance_number FROM v$instance) ) SELECT TO_CHAR(BEGIN_INTERVAL_TIME, 'mm-dd hh24:mi') || TO_CHAR(END_INTERVAL_TIME, ' hh24:mi') date_time, stat_name, ROUND((e_value - NVL(b_value, 0)) / (EXTRACT(DAY FROM (end_interval_time - begin_interval_time)) * 24 * 60 * 60 + EXTRACT(HOUR FROM (end_interval_time - begin_interval_time)) * 60 * 60 + EXTRACT(MINUTE FROM (end_interval_time - begin_interval_time)) * 60 + EXTRACT(SECOND FROM (end_interval_time - begin_interval_time))), 0) per_sec FROM sysstat WHERE (e_value - NVL(b_value, 0)) > 0 AND NVL(b_value, 0) > 0;

这个查询可以帮助你查看最近 7 天内每个时间区间的 DB Time。根据 DB Time 数据,你可以评估数据库的整体负载情况,从而做出相应的优化调整。

总结

AWR 性能报告是 Oracle 数据库性能分析的重要工具,DBAs 可以通过手动创建快照、生成报告和基线来帮助排查数据库性能瓶颈。理解 DB TimeAAS 等关键指标能够帮助我们更好地分析数据库负载。使用 AWR 工具,DBAs 可以快速识别数据库问题并采取有效措施进行优化。

希望本文的 AWR 性能报告技巧和查询方法能帮助你更好地管理和优化 Oracle 数据库的性能!

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论