目录标题
- AWR 性能诊断与报告生成
- 1. 检查 AWR 系统状态
- 2. 查看数据库中的所有表空间
- 3. 查看现有的 AWR 快照
- 4. 设置 AWR 快照的时间间隔
- 5. 创建 AWR 快照
- 6. 查看最新的 AWR 快照
- 7. 生成 AWR HTML 报告
- 8. 将 AWR 报告保存到指定文件
- 链接
- 总结
- 自动工作集负载信息库 AWR 报告解析指南
- 一、AWR 概述
- 二、AWR 报告结构及各部分详细解析
- (一)HEAD INFO(AWR 报告头部信息)
- (二)Report Summary(AWR 报告摘要)
- (三)Main Report(AWR 报告主体部分)
- 三、总结
AWR 性能诊断与报告生成
AWR(自动工作负载仓库)用于收集、处理和保存数据库性能数据。通过 AWR,用户可以生成数据库性能报告,诊断潜在的性能瓶颈。
1. 检查 AWR 系统状态
首先,可以检查 AWR 系统的状态,确认是否启用。
SELECT sf_check_awr_sys;
2. 查看数据库中的所有表空间
如果需要分析数据库中表空间的使用情况,可以先查询数据库的所有表空间信息。
SELECT tablespace_name FROM dba_tablespaces;
3. 查看现有的 AWR 快照
AWR 快照是数据库性能数据的记录,查看当前系统中已有的快照。
SELECT * FROM SYS.WRM$_SNAPSHOT;
4. 设置 AWR 快照的时间间隔
可以通过 DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL
来设置 AWR 快照的采集间隔。假设我们想设置为 10 分钟。
DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(10);
此命令会设置快照生成的时间间隔为 10 分钟。
5. 创建 AWR 快照
可以手动创建 AWR 快照,以便收集当前数据库的性能数据。
DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
执行此命令后,AWR 快照将被创建并保存,方便后续查看和分析。
6. 查看最新的 AWR 快照
再次查询 WRM$_SNAPSHOT
表,查看新生成的快照记录。
SELECT * FROM SYS.WRM$_SNAPSHOT;
7. 生成 AWR HTML 报告
可以通过 DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML
函数生成 AWR 报告,以 HTML 格式展示。以下示例生成的是快照 6 和快照 7 之间的报告:
SELECT * FROM TABLE (DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(6, 7));
8. 将 AWR 报告保存到指定文件
如果希望将生成的 AWR 报告保存到指定的文件路径,可以使用 SYS.AWR_REPORT_HTML
。以下命令将报告保存为 AWR6_7.HTML
文件,存储路径为 /home/dmdba/
。
SYS.AWR_REPORT_HTML(6, 7, '/home/dmdba/', 'AWR6_7.HTML');
这会将快照 6 和快照 7 之间的报告输出为 HTML 文件,并保存到 /home/dmdba/
目录。
链接
DBMS_WORKLOAD_REPOSITORY 包 - 创建、检测、删除语句
总结
通过上述步骤,你可以利用 AWR 进行数据库性能诊断,设置快照采集间隔,手动创建快照,并生成 HTML 格式的 AWR 报告。生成的报告可以用于分析数据库性能,发现潜在的瓶颈和优化点。
确保你有足够的权限执行这些操作,特别是在使用 DBMS_WORKLOAD_REPOSITORY
包时。如果有任何问题,可以根据生成的报告进一步诊断数据库性能。
ka cp dameng-753de107-0-0:/home/dmdba/AWR6_7.HTML ./AWR6_7.HTML
自动工作集负载信息库 AWR 报告解析指南
AWR 报表解析说明
一、AWR 概述
自动工作集负载信息库 AWR(Automatic Workload Repository)是数据库性能监控和分析的重要工具,它能够提供某一时间段内整个系统的报表数据。通过生成并解读 AWR 报告,用户可以深入了解指定时间段内数据库系统的性能状况,发现潜在的性能瓶颈和问题,从而采取相应的优化措施。
二、AWR 报告结构及各部分详细解析
(一)HEAD INFO(AWR 报告头部信息)
该部分包含数据库基本信息(DB INFO)、实例运行环境基本信息(HOST INFO)、快照统计基本信息(SNAP INFO)三个关键子部分,为后续的性能分析提供基础背景数据。
- DB INFO(数据库基本信息)
- 字段名:数据库名称、数据库版本、字符集等。
- 说明:这些信息有助于识别当前分析的数据库的基本特征,不同版本的数据库可能在性能表现和优化策略上存在差异,字符集也可能影响某些操作的性能。
- 计算方式:这些信息通常是数据库系统在安装和配置时确定的,直接从数据库的元数据中获取,无需计算。
- HOST INFO(实例运行环境基本信息)
- 字段名:主机名、操作系统类型、CPU 核心数、内存总量等。
- 说明:了解数据库实例运行的硬件和软件环境,对于判断系统资源是否充足以及是否存在硬件瓶颈非常重要。例如,CPU 核心数不足可能导致高并发情况下的性能下降。
- 计算方式:主机名和操作系统类型从操作系统的配置信息中获取,CPU 核心数和内存总量可以通过操作系统的系统调用或监控工具获取。
- SNAP INFO(快照统计基本信息)
- 字段名:快照开始时间、快照结束时间、快照间隔、快照编号等。
- 说明:这些信息明确了 AWR 报告所涵盖的时间段,有助于分析在特定时间段内数据库的性能变化情况。例如,对比不同时间段的快照数据可以发现性能的波动规律。
- 计算方式:快照开始时间和结束时间由数据库系统在生成快照时记录,快照间隔为结束时间减去开始时间,快照编号是数据库系统为每个快照分配的唯一标识符。
(二)Report Summary(AWR 报告摘要)
该部分提供了数据库性能的关键摘要信息,涵盖内存池信息报告、缓存池信息报告、两次快照之间的数据库负载概况、内存命中率及数据库实例操作的效率报告、系统中最严重的 5 个等待等方面。
- Memory Pool(内存池信息报告)
- 字段名:内存池总大小、已使用内存池大小、空闲内存池大小、内存池使用率等。
- 说明:内存池是数据库用于存储各种数据结构和缓存的重要资源,了解内存池的使用情况可以判断是否存在内存不足的问题,以及是否需要调整内存分配策略。
- 计算方式:内存池总大小在数据库配置时确定,已使用内存池大小通过统计当前内存池中已分配的内存块大小得到,空闲内存池大小为总大小减去已使用大小,内存池使用率 = 已使用内存池大小 / 内存池总大小 * 100%。
- Buffer Pool(缓存池信息报告)
- 字段名:缓存池总大小、缓存命中率、缓存未命中率、缓存读次数、缓存写次数等。
- 说明:缓存池用于缓存数据库中的数据块,提高数据访问速度。缓存命中率是衡量缓存池性能的重要指标,命中率越高,说明缓存的效果越好,减少了磁盘 I/O 操作。
- 计算方式:缓存命中率 = 缓存命中次数 / (缓存命中次数 + 缓存未命中次数) * 100%,缓存未命中率 = 1 - 缓存命中率,缓存读次数和缓存写次数通过数据库系统的计数器统计得到。
- Load Profile(两次快照之间的数据库负载概况)
- 字段名:每秒事务数(TPS)、每秒查询数(QPS)、CPU 使用率、磁盘 I/O 速率等。
- 说明:这些指标反映了数据库在指定时间段内的负载情况,有助于判断数据库是否处于高负载状态,以及哪些资源成为了性能瓶颈。例如,高 TPS 和 QPS 可能导致 CPU 或磁盘 I/O 压力过大。
- 计算方式:TPS = 事务总数 / 时间间隔(秒),QPS = 查询总数 / 时间间隔(秒),CPU 使用率通过操作系统的监控工具获取,磁盘 I/O 速率 = 磁盘读写总字节数 / 时间间隔(秒)。
- Instance Efficiency Percentages(内存命中率及数据库实例操作的效率报告)
- 字段名:缓冲缓存命中率、库缓存命中率、SQL 解析效率等。
- 说明:这些指标衡量了数据库实例在不同方面的操作效率,高命中率和效率表明数据库的性能较好。例如,高缓冲缓存命中率意味着大部分数据可以从缓存中获取,减少了磁盘 I/O。
- 计算方式:缓冲缓存命中率 = 缓冲缓存命中次数 / (缓冲缓存命中次数 + 缓冲缓存未命中次数) * 100%,库缓存命中率和 SQL 解析效率的计算方式类似,根据相应的命中和未命中次数统计得出。
- Top 5 Timed Foreground Events(系统中最严重的 5 个等待)
- 字段名:等待事件名称、等待时间、等待次数等。
- 说明:等待事件是数据库性能分析的重要关注点,这些事件表示数据库在某些操作上需要等待资源或完成特定任务。了解最严重的等待事件可以定位性能瓶颈所在,例如,大量的锁等待可能表示存在并发问题。
- 计算方式:等待时间通过数据库系统的计时器统计每个等待事件的总时间,等待次数统计每个等待事件发生的次数。
(三)Main Report(AWR 报告主体部分)
该部分包含多个方面的详细统计信息,是深入分析数据库性能的核心内容。
- Wait Events Statistics(等待事件统计信息)
- 字段名:等待事件名称、总等待时间、平均等待时间、等待次数、等待事件占比等。
- 说明:详细记录了各种等待事件的发生情况,通过分析这些数据可以了解数据库在哪些方面存在性能瓶颈,例如,长时间的磁盘 I/O 等待可能表示磁盘性能不佳。
- 计算方式:总等待时间是该等待事件在指定时间段内的累计等待时间,平均等待时间 = 总等待时间 / 等待次数,等待事件占比 = 该等待事件总等待时间 / 所有等待事件总等待时间 * 100%。
- SQL Statistics(SQL 语句相关统计)
- 字段名:SQL 语句文本、执行次数、总执行时间、平均执行时间、CPU 时间、磁盘 I/O 时间等。
- 说明:分析 SQL 语句的执行情况有助于找出性能较差的 SQL 语句,进行针对性的优化。例如,执行次数多且执行时间长的 SQL 语句可能需要优化索引或查询逻辑。
- 计算方式:总执行时间是该 SQL 语句在指定时间段内的累计执行时间,平均执行时间 = 总执行时间 / 执行次数,CPU 时间和磁盘 I/O 时间通过数据库系统的性能计数器统计得到。
- Instance Activity Statistics(实例活动统计信息)
- 字段名:事务总数、查询总数、插入总数、更新总数、删除总数等。
- 说明:这些统计信息反映了数据库实例在指定时间段内的活动情况,有助于了解数据库的业务操作模式和负载分布。例如,大量的插入操作可能对数据库的性能产生不同的影响。
- 计算方式:通过数据库系统的事务和操作计数器分别统计事务、查询、插入、更新和删除操作的总数。
- IO Stats(IO 信息)
- 字段名:磁盘读次数、磁盘写次数、磁盘读字节数、磁盘写字节数、磁盘 I/O 响应时间等。
- 说明:磁盘 I/O 是数据库性能的重要瓶颈之一,了解磁盘 I/O 的情况可以判断磁盘设备是否满足数据库的需求,是否需要进行磁盘优化或升级。
- 计算方式:磁盘读次数和写次数通过磁盘设备的计数器统计,磁盘读字节数和写字节数是相应操作的总字节数,磁盘 I/O 响应时间通过测量每次 I/O 操作的开始和结束时间计算得出。
- Buffer Pool Statistics(缓存区统计信息)
- 字段名:缓存区大小、缓存区命中率、缓存区替换次数、缓存区老化时间等。
- 说明:进一步详细分析缓存区的性能,缓存区替换次数过多可能表示缓存区大小设置不合理,需要调整。
- 计算方式:缓存区命中率的计算方式与前面提到的类似,缓存区替换次数通过数据库系统的计数器统计,缓存区老化时间是指缓存块在缓存区中停留的平均时间。
- Wait Statistics(等待统计信息)
- 字段名:等待类型、总等待时间、等待次数、等待资源等。
- 说明:与等待事件统计信息类似,但从不同的维度进行统计,有助于更全面地了解数据库的等待情况。
- 计算方式:总等待时间和等待次数的计算方式与前面相同,等待资源明确了等待事件所涉及的具体资源。
- Undo Statistics(撤销的统计信息)
- 字段名:撤销段使用大小、撤销段扩展次数、撤销事务数等。
- 说明:撤销段用于回滚事务和提供读一致性,了解撤销段的使用情况可以判断是否存在撤销段不足或过度使用的问题。
- 计算方式:撤销段使用大小通过统计撤销段中已分配的空间得到,撤销段扩展次数通过数据库系统的计数器统计,撤销事务数是在指定时间段内执行撤销操作的事务数量。
- Lock Statistics(锁统计信息)
- 字段名:锁类型、锁等待时间、锁等待次数、锁持有时间等。
- 说明:锁是保证数据库并发操作一致性的重要机制,但过多的锁等待会影响数据库的性能。分析锁统计信息可以找出锁竞争的热点,优化并发控制策略。
- 计算方式:锁等待时间和锁等待次数通过数据库系统的锁管理模块统计,锁持有时间是指事务持有锁的平均时间。
- Dead Lock Statistics(死锁统计信息)
- 字段名:死锁发生次数、死锁涉及的事务数、死锁发生时间等。
- 说明:死锁是数据库并发操作中可能出现的严重问题,了解死锁的发生情况有助于找出死锁的原因,采取相应的预防措施。
- 计算方式:死锁发生次数通过数据库系统的死锁检测机制统计,死锁涉及的事务数是每次死锁事件中涉及的事务数量,死锁发生时间由数据库系统记录。
- Seg Activity Statistics(隔离区活动统计信息)
- 字段名:隔离区使用大小、隔离区读写次数、隔离区清理次数等。
- 说明:隔离区用于存储临时数据和中间结果,了解隔离区的活动情况可以判断是否存在隔离区资源使用不合理的问题。
- 计算方式:隔离区使用大小通过统计隔离区中已分配的空间得到,隔离区读写次数通过数据库系统的计数器统计,隔离区清理次数是在指定时间段内对隔离区进行清理操作的次数。
- Dictionary Cache Statistics(数据库缓存信息)
- 字段名:数据库缓存大小、缓存命中率、缓存未命中率、缓存刷新次数等。
- 说明:数据库缓存用于缓存数据库的元数据信息,提高元数据访问速度。分析数据库缓存的性能可以优化数据库的元数据管理。
- 计算方式:缓存命中率和未命中率的计算方式与前面类似,缓存刷新次数通过数据库系统的缓存管理模块统计。
- Library Cache Statistics(库缓存统计信息)
- 字段名:库缓存大小、库缓存命中率、库缓存加载次数、库缓存失效次数等。
- 说明:库缓存用于缓存 SQL 语句的执行计划和其他相关信息,提高 SQL 执行效率。了解库缓存的使用情况可以优化 SQL 执行计划的管理。
- 计算方式:库缓存命中率的计算方式与前面相同,库缓存加载次数是将 SQL 语句的执行计划加载到库缓存中的次数,库缓存失效次数是库缓存中执行计划失效的次数。
- Memory Statistics(内存池的统计信息)
- 字段名:内存池分配次数、内存池释放次数、内存池碎片率等。
- 说明:进一步详细分析内存池的使用情况,内存池碎片率过高可能影响内存的分配效率,需要进行内存整理。
- 计算方式:内存池分配次数和释放次数通过数据库系统的内存管理模块统计,内存池碎片率 = 碎片内存大小 / 内存池总大小 * 100%。
- Sort Statistics(分类统计信息)
- 字段名:排序操作次数、排序内存使用量、排序磁盘使用量等。
- 说明:排序操作是数据库中常见的操作之一,了解排序操作的资源使用情况可以优化排序算法和内存分配策略。
- 计算方式:排序操作次数通过数据库系统的排序模块统计,排序内存使用量和磁盘使用量分别是排序操作所使用的内存和磁盘空间大小。
- Resource Limit Statistics(空间限制信息)
- 字段名:各类资源的限制值、已使用量、剩余量等。
- 说明:明确数据库系统中各种资源的使用限制和剩余情况,有助于及时发现资源即将耗尽的问题,进行资源调整。
- 计算方式:资源的限制值在数据库配置时确定,已使用量通过数据库系统的资源管理模块统计,剩余量 = 限制值 - 已使用量。
- Mail Statistics(邮箱视图信息)
- 字段名:邮箱视图数量、邮箱视图读写次数等。
- 说明:邮箱视图可能用于数据库系统内部的消息传递或监控信息存储,了解其使用情况有助于分析数据库的内部通信和监控机制。
- 计算方式:邮箱视图数量通过数据库系统的元数据统计,邮箱视图读写次数通过数据库系统的计数器统计。
- dm.ini Parameters(dm.ini 参数信息)
- 字段名:各项参数名称、参数值等。
- 说明:
dm.ini
是数据库的配置文件,这些参数影响着数据库的各种行为和性能。分析这些参数的设置是否合理对于优化数据库性能至关重要。 - 计算方式:这些参数值直接从
dm.ini
配置文件中读取。
- Top SQL with Top Events(顶级等待事件中的高负载 SQL 语句)
- 字段名:SQL 语句文本、关联的顶级等待事件、总执行时间、执行次数等。
- 说明:找出与顶级等待事件相关的高负载 SQL 语句,这些语句通常是导致数据库性能问题的关键因素,需要重点优化。
- 计算方式:总执行时间和执行次数的计算方式与前面的 SQL 统计信息部分相同,关联的顶级等待事件通过数据库系统的性能监控模块记录。
三、总结
AWR 报告为数据库性能分析提供了全面而详细的信息,通过对报告各部分的深入解读,可以准确地定位数据库的性能瓶颈和问题所在,从而采取针对性的优化措施,提高数据库的性能和稳定性。在实际应用中,应定期生成和分析 AWR 报告,及时发现并解决潜在的性能问题。