活动会话历史记录
现在您应该很清楚自动工作负载信息库 (AWR) 的重要性和有用性。(如果需要,请阅读有关 AWR 的内容。)简单而言,AWR 以预定时间间隔在用户和系统级别捕获与工作负载相关的性能数据,包括按不同的维度、量度捕获的性能统计信息、操作系统统计信息以及 ASH 数据。
活动会话历史记录 (ASH) 中记录了最近所有活动会话的活动,它通过内存中的循环缓冲区高效地捕获这些活动并将它们高效地写入 AWR ,可将开销降低到最低程度。可以按不同的维度增加 ASH 数据:TOP SQL、对象、文件、会话、模块、操作等。
然而,大多数数据库管理员通常只要诊断临时的性能问题。为诊断此类问题,Oracle 数据库 10g 第 2 版引入了 ASH 报表。ASH 报表可用于整个数据库或特定会话、SQL_ID、模块、操作或这些维度的组合。
访问 ASH 报表的方法之一是从数据库页面进行访问。选择 Performance 选项卡,将出现一个类似下图的屏幕。
注意“Run ASH Report”按钮(位于红色椭圆框内)。单击该按钮将显示 Active Session History 报表:
您可以在该屏幕中输入你期望的时段的起始时间和结束时间的日期和时间。根据需要输入日期和时间,然后按右上角的“Generate Report”按钮。默认的日期和时间将有一个 5 分钟的间隔。
单击该按钮后,您将在屏幕上看到该时段的 ASH 报表。如果仔细观察,您将看到该报表类似于 STASPACK 报表;但由于它源自 AWR 数据,因此其中的量度更为有用。下面显示了该屏幕的一小部分:
可以按按钮“Save to File”将该报表保存到文件,以便以后查看。
注意“ASH Report”部分中的链接。在此处,您可以全览不同类型的与性能相关的可用统计信息。例如,您只需单击 Top Events 链接便会看到该时段中的最重要事件。如果该时段出现性能问题,该信息将为您提供很大的帮助。通过查看 ASH 报表中列出的各个维度的偏差,您通常可以确定导致瞬时尖峰的瓶颈。
注意,该报表是根据相应的从 AWR 收集的或从内存中缓冲区提取的数据而得出的;因此,如果要诊断先前出现的性能问题,只需激活该时段的 ASH 报表便会看到任何可能已经出现的问题。
也可以通过命令行运行 ASH 报表,方法是运行位于 $OH/rdbms/admin/ashrpt.sql 中的由 Oracle 附带的 SQL 脚本。