Oracle 性能优化之AWR、ASH和ADDM(含报告生成和参数解读)

简介: Oracle 性能优化之AWR、ASH和ADDM(含报告生成和参数解读)

🏆 文章目标:本篇介绍Oracle性能优化相关的工具,如AWR、ASH和ADDM。

🍀 Oracle 性能优化之AWR、ASH和ADDM

✅ 创作者:Jay…

🎉 个人主页:Jay的个人主页

🍁 展望:若本篇讲解内容帮助到您,请帮忙点个赞吧,再点点您的小手关注下,您的支持是我继续写作的最大动力,谢谢🙏 作为回馈,对我博客内容感兴趣的小伙伴可以私聊我,我们一起学习 Oracle 和 PostgreSQL的知识,大家一起共同进步。

介绍

AWR、ASH 和 ADDM 是 Oracle 数据库性能诊断和优化的重要工具,它们可以帮助您达到以下目标:

  1. 性能监控:这些工具提供了关于数据库性能的详细信息,例如等待事件、SQL 查询的执行统计、系统和会话的活动等。你可以使用这些信息来监控数据库的性能,例如检查是否有性能瓶颈,或者追踪性能的变化趋势。
  2. 性能诊断:如果数据库的性能出现问题,例如响应时间变慢或 CPU 利用率过高,你可以使用这些工具来诊断问题的原因。例如,你可以查看等待事件和 SQL 查询的统计信息,找出消耗资源最多的操作。
  3. 性能优化:这些工具不仅提供了诊断性能问题的信息,还提供了优化建议。例如,ADDM 可以自动分析 AWR 数据,识别出性能问题,并提供优化建议。你可以根据这些建议来优化数据库的配置或 SQL 查询。
  4. 问题排查:在出现问题时,例如数据库挂起、事务失败等,可以使用这些工具来排查问题的原因。例如,ASH 提供了活动会话的历史信息,你可以查看在问题发生时会话的状态和活动。

AWR

使用方式

假设你需要分析 Oracle 数据库在过去一个小时内的性能状况。你可以生成一个 AWR 报告来查看这段时间内的数据库统计信息和性能数据。

1、首先,获取需要的快照 ID。执行以下 SQL 查询:

SELECT SNAP_ID, BEGIN_INTERVAL_TIME, END_INTERVAL_TIME
FROM DBA_HIST_SNAPSHOT
WHERE BEGIN_INTERVAL_TIME >= SYSTIMESTAMP - INTERVAL '1' HOUR
ORDER BY SNAP_ID;

这将列出过去一个小时内的快照 ID。

2、然后,运行以下 SQL 脚本生成 AWR 报告:

@$ORACLE_HOME/rdbms/admin/awrrpt.sql

按照提示,输入报告类型(HTML 或文本)、开始和结束快照 ID。报告将生成在指定的文件中。

3、打开生成的报告文件,分析性能数据,找出可能的性能瓶颈。

分析方式

在阅读 AWR 报告时,需要关注几个重要的部分:

  1. 等待事件(Load Profile):这部分列出了最耗费数据库时间的事件,可以帮助我们找出性能瓶颈。例如,如果 “db file sequential read” 事件的等待时间过长,可能是磁盘 I/O 速度慢或 SQL 查询需要优化。
  2. SQL统计信息(SQL Statistics):这部分提供了 SQL 查询的统计数据,例如执行次数最多的 SQL、消耗最多 CPU 的 SQL 等。你可以找出需要优化的 SQL 查询。
  3. 最大等待时间 (Top Timed Events):这部分列出了消耗最多时间的事件,通常是性能瓶颈的主要来源。例如,如果 “db file sequential read” 事件的等待时间过长,可能是因为磁盘 I/O 速度慢或 SQL 查询需要优化。

例如,假设在报告中看到 “db file sequential read” 事件的等待时间过长,可以根据等待事件的文件 ID 和块 ID,运行以下 SQL 查询找出相关的 SQL 查询:

SELECT SQL_ID, SQL_TEXT
FROM V$SQL
WHERE CURRENT_FILE# = :file_id AND CURRENT_BLOCK# = :block_id;

ASH

使用方式

假设你需要诊断最近 15 分钟内出现的性能瓶颈。你可以查询 ASH 数据来获取这段时间内活动会话的详细信息。

1、运行以下 SQL 查询来查看最近 15 分钟内的活动会话数据:

SELECT SAMPLE_TIME, SESSION_ID, SQL_ID, EVENT, WAIT_TIME, TIME_WAITED
FROM V$ACTIVE_SESSION_HISTORY
WHERE SAMPLE_TIME >= SYSTIMESTAMP - INTERVAL '15' MINUTE;

这将列出最近 15 分钟内的活动会话采样数据。

2、分析查询结果,找出可能的性能瓶颈。例如,可以通过 SQL_ID 来查找执行缓慢的 SQL 查询。

分析方式

在分析 ASH 数据时,也应该关注等待事件和 SQL 查询:

  1. 等待事件:如果某个等待事件的数量过多或等待时间过长,可能是性能瓶颈的来源。
  2. SQL查询:通过 SQL_ID,你可以找出执行缓慢的 SQL 查询,然后进一步分析查询的执行计划,找出需要优化的地方。

例如,假设你在 ASH 数据中发现一个 “enq: TX - row lock contention” 等待事件,这表示有会话在等待行级锁。你可以运行以下 SQL 查询找出相关的会话和 SQL 查询:

SELECT SESSION_ID, SQL_ID
FROM V$ACTIVE_SESSION_HISTORY
WHERE EVENT = 'enq: TX - row lock contention';

然后,你可以进一步分析这些 SQL 查询,查找是否有可以优化的地方,例如减少锁的持有时间。

ADDM

使用方式

假设你需要分析过去一天的数据库性能,并获取优化建议。你可以运行 ADDM 分析来查看诊断结果。

  1. 首先,获取需要的快照 ID。执行以下 SQL 查询:
SELECT SNAP_ID, BEGIN_INTERVAL_TIME, END_INTERVAL_TIME
FROM DBA_HIST_SNAPSHOT
WHERE BEGIN_INTERVAL_TIME >= SYSTIMESTAMP - INTERVAL '1' DAY
ORDER BY SNAP_ID;

这将列出过去一天内的快照 ID。

  1. 然后,运行以下 SQL 脚本执行 ADDM 分析:
@$ORACLE_HOME/rdbms/admin/addmrpt.sql

按照提示,输入开始和结束快照 ID。报告将生成在指定的文件中。

  1. 打开生成的报告文件,查看 ADDM 的诊断结果和优化建议,如增加内存、优化 SQL 查询等。根据建议采取相应的优化措施。

通过这些案例,你可以了解如何使用 AWR、ASH 和 ADDM 工具来诊断 Oracle 数据库的性能问题,并查看相应的报告以采取适当的优化措施。

分析方式

ADDM 报告是最容易理解的,因为它提供了自动诊断的结果和优化建议。你只需要关注两个部分:

  1. 问题:这部分列出了 ADDM 分析的结果,包括诊断的问题和影响的程度。你应该优先处理影响最大的问题。
  2. 建议:这部分提供了针对每个问题的优化建议,例如增加内存、优化 SQL 查询等。你应该根据这些建议来调整数据库的配置或优化 SQL 查询。

例如,假设 ADDM 报告中建议增加 SGA 的大小,你可以按照以下步骤修改数据库的参数:

  1. 登录到 SQL*Plus 作为 SYSDBA。
  2. 运行以下命令查看当前的 SGA 大小:
SHOW PARAMETER sga_target;
  1. 运行以下命令增加 SGA 的大小:
ALTER SYSTEM SET sga_target = new_value SCOPE=BOTH;

以上就是分析 AWR、ASH 和 ADDM 报告的方法和步骤。我希望这些信息对您有所帮助。

总结

总的来说,AWR、ASH 和 ADDM 可以帮助您更好地理解和管理数据库的性能,从而提高应用的响应时间,提升用户的体验,也可以在出现问题时快速定位并解决问题。

关注公众号:熊猫Jay字节之旅,了解更多 AI 技巧 ~

相关文章
|
1月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
|
2月前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
39 1
|
2月前
|
SQL 监控 Oracle
Oracle SQL性能优化全面指南
在数据库管理领域,Oracle SQL性能优化是确保数据库高效运行和数据查询速度的关键
|
7月前
|
Oracle 关系型数据库 Java
Oracle 19c 查看隐含参数视图
Oracle 19c 查看隐含参数视图
106 7
|
7月前
|
运维 Oracle 关系型数据库
Oracle服务器参数文件:数据王国的“调控大师”
【4月更文挑战第19天】Oracle服务器参数文件,数据库的“调控大师”,掌控着内存管理、进程调度等关键设置。通过参数调整如SGA_MAX_SIZE和PROCESSES,实现性能优化和故障防控。虽然挑战重重,但成功的性能调优带来无尽成就感。它在备份恢复中也扮演重要角色,保障数据一致性与可用性。成为真正的“调控大师”,为数据王国效力!
|
7月前
|
存储 SQL Oracle
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
117 7
|
7月前
修改oracle11g的awr快照参数
修改oracle11g的awr快照参数
54 0
|
SQL 监控 关系型数据库
Oracle10g调优:Oracle10g AWR使用方法及分析
Oracle10g调优:Oracle10g AWR使用方法及分析---来源:TTT BLOG [ http://www.taoyoyo.net/ttt/ ]地址:http://www.taoyoyo.net/ttt/post/301.html ---   为公司做的一个测试DB现在响应非常慢,急需优化,终于找到AWR的优化方法,在这里总结记录一下!(大部分是在网上的资料。
1224 0
|
2月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
192 64
|
11天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
48 11