文章目标:本篇介绍Oracle性能优化相关的工具,如AWR、ASH和ADDM。
Oracle 性能优化之AWR、ASH和ADDM
✅ 创作者:Jay…
个人主页:Jay的个人主页
展望:若本篇讲解内容帮助到您,请帮忙点个赞吧,再点点您的小手关注下,您的支持是我继续写作的最大动力,谢谢 作为回馈,对我博客内容感兴趣的小伙伴可以私聊我,我们一起学习 Oracle 和 PostgreSQL的知识,大家一起共同进步。
AWR、ASH 和 ADDM 是 Oracle 数据库性能诊断和优化的重要工具,它们可以帮助您达到以下目标:
假设你需要分析 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 报告时,需要关注几个重要的部分:
例如,假设在报告中看到 “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;
假设你需要诊断最近 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 查询:
例如,假设你在 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 分析来查看诊断结果。
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。
@$ORACLE_HOME/rdbms/admin/addmrpt.sql
按照提示,输入开始和结束快照 ID。报告将生成在指定的文件中。
通过这些案例,你可以了解如何使用 AWR、ASH 和 ADDM 工具来诊断 Oracle 数据库的性能问题,并查看相应的报告以采取适当的优化措施。
ADDM 报告是最容易理解的,因为它提供了自动诊断的结果和优化建议。你只需要关注两个部分:
例如,假设 ADDM 报告中建议增加 SGA 的大小,你可以按照以下步骤修改数据库的参数:
SHOW PARAMETER sga_target;
ALTER SYSTEM SET sga_target = new_value SCOPE=BOTH;
以上就是分析 AWR、ASH 和 ADDM 报告的方法和步骤。我希望这些信息对您有所帮助。
总的来说,AWR、ASH 和 ADDM 可以帮助您更好地理解和管理数据库的性能,从而提高应用的响应时间,提升用户的体验,也可以在出现问题时快速定位并解决问题。