Oracle AWR监控之ASH:了解应用程序性能瓶颈。(oracleash)
Oracle AWR(Automatic Workload Repository)是一种实时报告
Oracle 数据库应用程序性能指标的内部存储库系统。它旨在收集并汇报正在执行的查询、会话和等待,从而帮助DBA了解当前的应用性能的数据。AWR的一个重要组件是ASH(Activity Stream History)。ASH是用来收集和维护最近一段时间内执行的查询、会话和等待的Oracle数据库的性能指标,以便实时显示应用程序的性能情况,并确定部署和优化Oracle数据库的最佳做法。
实时监控应用程序性能的一个关键方面,使用ASH是从这一点上有很大帮助。简而言之,ASH像一个实时快照,捕获会话可能正在执行的最新信息,以及用户对系统执行的活动。与其把最近一部分的会话和查询写入磁盘(作为AWR的snapshot)不同,ASH的信息保存在内存中。ASH内存缓冲器有四个主要部分:会话、等待事件、全局性能指标和实例性能指标。
ASH记录每个会话开始时间和结束时间、活动等待事件、用户SQL排除、全局和实例性能指标,以及有关过程的一些元数据信息。ASH缓冲器每秒收集活动会话数,以及有关活动会话的微秒级数据。当它收集到这些数据时,它计算出性能指标,并将结果储存在内存中,仅以每隔一定的时间将结果写入磁盘,这些结果可以使用AWR(Automatic Workload Repository)报告来查看,以了解用户的性能瓶颈,以及如何改善。
DBA可以使用以下sql来查看ASN的内容:
“`sql
select inst_id,
sample_time,
session_id,
session_state,
session_event
from v$active_session_history;
可以通过上面的代码来显示当前内存中的session,查看他们正在处于什么状态,任务正在处理什么事件,哪些事件等待执行多长时间等,有助于分析性能瓶颈。
总之,ASH是AWR(Automatic Workload Repository)的一个重要组件,它有助于收集和维护最近一段时间内执行的查询、会话和其他活动的数据,从而帮助DBA了解当前应用程序性能瓶颈,从而有助于选择最佳的可扩展性和可优化的解决方案。