首页 > 数据库 >Oracle AWR 报告指标全解析:深入理解数据库性能优化的关键

Oracle AWR 报告指标全解析:深入理解数据库性能优化的关键

时间:2024-11-19 13:16:44浏览次数:3  
标签:快照 数据库 AWR per Oracle 解析 redo

一、引言

在 Oracle 数据库管理与性能优化领域,AWR(Automatic Workload Repository)报告扮演着极为重要的角色。它犹如一位精准的诊断专家,能够对数据库的运行状况进行全面、细致的剖析,为数据库管理员(DBA)提供丰富且关键的信息,助力其深入洞察数据库的性能表现,精准定位潜在问题,并制定出切实有效的优化策略。本文将深入且系统地对 Oracle AWR 报告中的各项指标展开详细解析,旨在帮助读者全面掌握这些指标的内涵、相互关系以及在数据库性能优化过程中的实际应用。

二、AWR 基础概述

(一)AWR 与 SYSAUX 表空间
AWR 和 SYSAUX 均是在 Oracle 10g 版本中引入的重要特性,它们紧密协作,共同为数据库性能调优提供坚实支持。AWR 所收集的大量历史性能数据就存储在 SYSAUX 表空间之上。这些数据涵盖了数据库运行过程中的诸多关键信息,犹如一座数据宝库,为后续的性能分析提供了丰富的素材。

(二)快照间隔与保存时长
默认情况下,AWR 快照的间隔设定为 1 小时。在不同的 Oracle 版本中,快照的保存时长有所差异,10g 版本保存 7 天,而 11g 版本则延长至 8 天。这些快照犹如数据库在不同时间点的“快照照片”,通过对比不同时间点的快照,能够清晰地捕捉到数据库性能的变化趋势。

(三)AWR 程序核心
AWR 程序的核心是 dbms_workload_repository 包。在本实例中,可通过 @?/rdbms/admin/awrrpt 来调用相关功能;在 RAC(Real Application Clusters)环境中,则需使用 @?/rdbms/admin/awrrpti 并选择相应的实例号。这一核心包犹如 AWR 的“大脑中枢”,掌控着数据的收集、存储与报告生成等关键操作。

(四)维护者:MMON 及其小工进程
负责维护 AWR 的主要是 MMON(Manageability Monitor Process)及其小工进程(m00x)。MMON 承担着多项重要职责:

  1. 它能够启动 slave 进程 m00x 去执行 AWR 快照的采集工作,确保数据的及时获取与更新。
  2. 当某个度量阈值被超越时,MMON 会迅速发出 alert 告警,如同数据库的“预警哨兵”,及时提醒管理员关注潜在的性能风险。
  3. 它还会为最近发生改变的 SQL 对象捕获相关指标信息,为深入分析 SQL 语句的性能变化提供有力依据。

(五)手动操作

  1. 手动执行一个快照可使用如下语句:Exec dbms_workload_repository.create_snapshot; 这一操作在特定场景下,如需要立即获取当前数据库状态数据时非常有用。
  2. 创建一个 AWR 基线可通过:Exec DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id,end_snap_id,baseline_name); 基线的创建有助于在性能对比分析中确定一个稳定的参考标准,以便更准确地评估数据库性能的变化。

三、AWR 报告主要部分解析

(一)报告总结

  1. 基本信息
    • 报告首先呈现出数据库的基本概况,包括 DB Name(数据库名称)、DB Id(数据库标识符)、Instance(实例名)、Inst num(实例编号)、Startup Time(启动时间)、Release(数据库版本)以及是否为 RAC 环境等关键信息。例如,在示例中展示的数据库相关信息能够让管理员快速确定所分析的数据库对象的基本属性。
    • 同时还会给出 Host Name(主机名)、Platform(操作系统平台)、CPUs(CPU 数量)、Cores(CPU 核心数)、Sockets(CPU 插槽数)以及 Memory (GB)(内存大小)等硬件资源信息,这些信息对于理解数据库运行的硬件环境以及评估资源是否充足具有重要意义。
  2. 快照信息
    • Snap Id(快照编号)、Snap Time(快照时间)、Sessions(会话数)、Cursors/Session(每个会话的游标数)等信息展示了不同快照点的数据库会话相关状态。其中,Elapsed(时间跨度)表示该 AWR 性能报告所涵盖的自然时间长度,例如从一个快照生成时间到另一个快照生成时间的间隔。DB Time(数据库时间)则是所有前台 session 花费在 database 调用上的总和时间,它是衡量数据库总体负载的一个关键指标,但需要注意的是,DB TIME 高并不一定意味着响应慢,低也不一定表示响应快,需要与 Elapsed Time 结合起来综合判断。例如,当 DB Time = 60min,Elapsed Time = 60min 时,Average Active Session AAS = 60/60 = 1,负载一般;若 DB Time = 1min,Elapsed Time = 60min,则 AAS = 1/60,负载很轻;而当 DB Time = 60000min,Elapsed Time = 60min 时,AAS = 1000,系统可能出现 hang 住的情况。

(二)内存参数大小

  1. 缓存区大小
    • Buffer Cache(缓冲区缓存)、Shared Pool Size(共享池大小)、Log Buffer(日志缓冲区)等缓存区的大小信息在 AWR 报告中清晰可见。例如,Buffer Cache 的大小在示例中显示了其在快照开始和结束时的容量,这些缓存区的大小设置直接影响数据库的性能。合理设置 Buffer Cache 大小能够减少物理读,提高数据读取效率;Shared Pool Size 的合理配置则与 SQL 语句的解析和执行密切相关;Log Buffer 的大小会影响日志写入的性能,过小可能导致频繁的日志切换等问题。

(三)Load Profile(负载概况)

  1. 指标含义
    • redo size(重做日志大小):单位为 bytes,它可用于估量 update/insert/delete 的频率。较大的 redo size 往往会对 lgwr 写日志和 arch 归档造成 I/O 压力。例如,在一个 OLTP 系统中,如果 redo size 过大,可能意味着有大量的数据修改操作,需要关注存储的 I/O 性能是否能够承受。Per Transaction(每个事务)这一维度可以用来分辨事务的类型,是大量小事务还是少量大事务。如每秒 redo 约 1MB,每个事务 800 字节,符合 OLTP 特征。
    • Logical Read(逻辑读):单位为(次数*块数),逻辑读会消耗 CPU 资源,主频和 CPU 核数对其性能有重要影响。逻辑读高则 DB CPU 往往也高,并且可能会出现 latch: cache buffer chains 等待事件。例如,在一个查询频繁的应用中,如果逻辑读过高,可能需要优化查询语句或者调整缓存区大小以减少逻辑读操作。
    • Block changes(数据块变化):单位为(次数*块数),它描绘了数据变化的频率,能够反映出数据库中数据更新的活跃程度。
    • Physical Read(物理读):单位为(次数*块数),物理读消耗 IO 读资源,体现在 IOPS(每秒输入/输出操作数)和吞吐量等不同维度上。减少物理读可能意味着需要消耗更多 CPU 资源,例如通过增大缓存区来减少物理读,但这可能会增加内存管理的开销。好的存储每秒物理读能力能够达到几 GB,如 Exadata。这里的 physical read 包含了 physical reads cache 和 physical reads direct。
    • Physical writes(物理写):单位为(次数*块数),主要是 DBWR 写 datafile,也有 direct path write。dbwr 长期写出慢会导致定期 log file switch(checkpoint no complete)检查点无法完成的前台等待。这个 physical write 包含了 physical writes direct + physical writes from cache。
    • User Calls(用户调用数):单位次数,反映了用户对数据库的操作请求数量。
    • Parses(解析次数):包括软解析和硬解析,软解析优化得不好,则可能几乎等于每秒 SQL 执行次数,理想情况是解析一次到处运行,减少不必要的解析开销。
    • Hard Parses(硬解析):被视为“万恶之源”,因为它会消耗更多的 CPU 时间片并产生解析争用,如 Cursor pin s on X,library cache: mutex X,latch: row cache objects shared pool 等问题都可能与硬解析相关。硬解析最好少于每秒 20 次。
    • W/A MB processed(工作区处理数据量):单位 MB,结合 In - memory Sort%可进一步分析内存排序的情况。
    • Logons(登陆次数):结合 AUDIT 审计数据一起看,能够了解数据库的用户登录情况。
    • Executes(执行次数):反应 SQL 语句的执行频率,对于评估数据库的繁忙程度有重要参考价值。
    • Rollbacks(回滚次数):反应回滚频率,但这个指标不太精确,不过较高的回滚次数可能暗示着事务处理过程中存在问题,如数据不一致或者业务逻辑错误等。
    • Transactions(每秒事务数):是数据库层的 TPS(每秒事务处理量),可作为压力测试或比对性能时的一个重要指标,但孤立看无意义,需要结合其他指标综合评估数据库的性能。
    • % Blocks changed per Read(每次逻辑读导致数据块变化的比率):如果’redo size’,‘block changes’‘pct of blocks changed per read’三个指标都很高,则说明系统正执行大量 insert/update/delete 操作。
    • Recursive Call %(递归调用的比率):Recursive Call%=(recursive calls)/(user calls),递归调用的比例过高可能暗示着数据库内部存在一些复杂的操作或者函数调用导致额外的开销。
    • Rollback per transaction %(事务回滚比率):Rollback per transaction %=(rollback)/(transactions),较高的事务回滚比率需要深入分析事务处理过程中的问题根源。
    • Rows per Sort(平均每次排序涉及到的行数):Rows per Sort=(sorts(rows))/(sorts(disk)+sorts(memory)),这一指标对于评估排序操作的效率和资源消耗有一定帮助。
  2. 维度分析
    • Load Profile 负载指标提供了 per second(每秒)和 per transaction(每个事务)两个维度。per Second 主要是把快照内的时间值除以快照时间的秒数,例如对于 table scans (long tables) 这一指标,如果在 A 快照中 V$SYSSTAT 视图反应其值为 100,在 B 快照中为 3700,而 A 快照和 B 快照之间间隔了一个小时(3600 秒),则对于 table scans (long tables) per second 就是(3700 - 100)/3600 = 1。per transaction 则是基于事务的维度,与 per second 相比是把除数从时间的秒数改为了该段时间内的事务数。这个维度的很大用户是用来识别应用特性的变化。若两个 AWR 性能报告中该维度指标出现了大幅变化,例如 redo size 从本来 per transaction 1k 变化为 10k per transaction,则说明 SQL 业务逻辑肯定发生了某些变化。

(四)Instance Efficiency Percentages(实例效率百分比)

  1. 目标与指标含义
    • 所有指标的目标均为 100%,越大越好。
    • Buffer Nowait %(缓冲区无等待百分比):session 申请一个 buffer(兼容模式)不等待的次数比例,即需要访问 buffer 时立即可以访问的比率,反映了缓冲区获取的效率。
    • buffer HIT%(缓冲区命中率):高速缓存命中率,反应物理读和缓存命中间的纠结。需要注意的是,即便该指标达到 99%,也不能说明物理读等待就少了。不合理的 db_cache_size,或者在 SGA 自动管理(ASMM)或 AMM(Automatic Memory Management)下因 db_cache_size 过小都可能引起大量的 db file sequential scattered read 等待事件。此外,与 buffer HIT%相关的指标还有 table scans(long tables)大表扫描、Buffer Pool Statistics、Buffer Pool Advisory 等,这些指标相互关联,共同影响数据库的读取性能。
    • Redo nowait%(重做日志无等待百分比):session 在生成 redo entry 时不用等待的比例,redo 相关的资源争用例如 redo space request 争用可能造成生成 redo 时需求等待。此项数据来源于 v$sysstat 中的(redo log space requests/redo entries)。一般来说 10g 以后不太用关注 log_buffer 参数的大小,但需要关注是否有十分频繁的 log switch;过小的 redo logfile size 如果配合较大的 SGA 和频繁的 commit 提交都可能造成该问题,可考虑增大 redo logfile 的尺寸,如 1 - 2G 每个,10 - 15 组都是合适的,同时优化 redo logfile 和 datafile 的 I/O。
    • In - memory Sort%(内存排序百分比):这个指标因为它不计算 workarea 中所有的操作类型,纯粹在内存中完成的排序比例,较高的内存排序比例有助于提高排序操作的效率,减少磁盘 I/O 开销。
    • Library Hit%(库缓存命中率):申请一个 library cache object 例如一个 SQL cursor 时,其已经在 library cache 中的比例,合理值应大于 95%。较高的库缓存命中率意味着 SQL 语句的重用性较好,减少了解析和编译的开销。
    • Soft Parse(软解析比例):经典指标,合理值>95%。Soft Parse %是 AWR 中另一个重要的解析指标,该指标反应了快照时间内软解析次数和总解析次数(soft + hard 软解析次数 + 硬解析次数)的比值,若该指标很低,那么说明了可能存在剧烈的 hard parse 硬解析,大量的硬解析会消耗更多的 CPU 时间片并产生解析争用,此时可考虑使用 cursor_sharing = FORCE 等措施来优化解析过程。理论上我们总是希望 Soft Parse %接近于 100%,但并不是说 100%的软解析就是最理想的解析状态,通过设置 session_cached_cursors 参数和反复重用游标我们可以让解析来的更轻量级,即通俗所说的利用会话缓存游标实现的软软解析(soft soft parse)。
    • Execute to Parse%(执行解析比):指标反映了执行解析比,其公式为 1-(parse/execute),目标为 100%及接近于只执行而不解析。在 Oracle 中解析往往是执行的先提工作,但是通过游标共享可以解析一次执行多次。不同的执行解析场景会导致该指标的不同结果,如 hard coding(代码硬解析一次,执行一次,理论上其执行解析比为 1:1,则理论上 Execute to Parse = 0 极差,且 soft parse 比例也为 0%);绑定变量但是仍软解析(软解析一次,执行一次,这种情况虽然比前一种好,但是执行解析比仍是 1:1,理论上 Execute to Parse = 0 极差,但是 soft parse 比例可能很高);使用静态 SQL、动态绑定、session_cached_cursor、open cursors 等技术实现的解析一次,执行多次,执行解析比为 N:1,则 Execute to Parse = 1-(1/N),执行次数越多 Execute to Parse 越接近 100%,这种是我们在 OLTP 环境中希望看到的。通俗地说 soft parse%反映了软解析率,而软解析在 Oracle 中仍是较昂贵的操作,我们希望的是解析 1 次执行 N 次,如果每次执行均需要软解析,那么虽然 soft parse% = 100%但是 parse time 仍可能是消耗 DB TIME 的大头。Execute to Parse 反映了执行解析比,Execute to Parse 和 soft parse%都很低那么说明确实没有绑定变量,而如果 soft parse%接近 99%而 Execute to Parse 不足 90%则说明没有执行解析比低,需要通过静态 SQL、动态绑定、session_cached_cursor、open cursors 等技术减少软解析。
    • Latch Hit%(闩命中率):willing - to - wait latch 闩申请不要等待的比例,对于高并发的 latch 例如 cache buffers chains,其 Pct Misses 应当十分接近于 0。一般的调优原则是,如果 latch: cache buffers chains 是 Top 5 事件,则需要考虑优化 SQL 减少全表扫描并减少 Top buffer gets SQL 语句的逻辑读;如果 latch: redo copy、redo allocation 等待较多,则可以考虑增大 LOG_BUFFER;如果 latch:library cache 发生较多,则考虑增大 shared_pool_size。

(五)Top 10 Foreground Events by Total Wait Time(按总等待时间排名的前 10 个前台事件)

  1. 事件信息
    • 该部分详细列出了等待事件的相关信息,包括 Waits(等待事件发生的次数)、Total Wait Time (sec)(该等待事件消耗的总计时间,单位为秒)、Wait Avg(ms)(该等待事件平均等待的时间,实际就是 Times/Waits,单位 ms)、% DB time(该等待事件占 DB 时间的百分比)、Wait Class(等待类型)。常见的等待类型有 Concurrency(并发)、SystemI/O(系统 I/O)、UserI/O(用户 I/O)、Administrative(管理)、Other(其他)、Configuration(配置)、Scheduler(调度)、Cluster(集群)、Application(应用)、Idle(空闲)、Network(网络)、Commit(提交)等。
  2. 常见等待事件分析
    • db file scattered read:Avg wait time 应当小于 20ms,如果数据库执行全表扫描或者是全索引扫描会执行 Multi block I/O,此时等待物理 I/O 结束会出现此等待事件。一般从应用程序(SQL)、I/O 方面

欢迎关注公众号《小周的数据库进阶之路》,更多精彩知识和干货尽在其中。

标签:快照,数据库,AWR,per,Oracle,解析,redo
From: https://blog.csdn.net/qq_36936192/article/details/143856481

相关文章

  • HHDB数据库介绍
    背景随着互联网的崛起,海量数据的存储、计算、分析需求越来越普遍。在各种计算机应用场景中,传统集中式数据库面临着理论升级和技术升级两大难题。21世纪以来,随着以Hadoop及其衍生技术为代表的大规模数据处理技术的崛起,数据库技术开始由集中式走向分布式计算与存储的模式。经过10......
  • Springboot大学生个人财务管理系统13bek(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学校简介,学生,省钱妙招,收支类型,收入,消费等级,消费预算,借入记录,归还记录,支出开题报告内容一、研究背景随着社会经济的发展和大学教育的普及,大学生经济活......
  • Springboot大学生防诈骗网站设计与开发n0803(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,法规信息,骗局曝光,举报信息,法规类型开题报告内容一、课题背景与意义随着互联网技术的飞速发展,网络诈骗案件频发,大学生作为网络用户的重要群体,由于缺乏足......
  • Springboot大学生防诈骗网站chc9l(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学生,法律法规,诈骗案例开题报告内容一、课题背景与意义随着互联网技术的飞速发展,网络诈骗案件频发,大学生作为网络用户的重要群体,也频繁成为网络诈骗的受害者。......
  • Springboot创业园员工流动管理平台al084(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,经理,公司信息,部门信息,员工信息,请假信息,薪资信息,社保信息,入职统计,离职统计,请假统计开题报告内容一、研究背景随着创业园的快速发展,员工流动管理成......
  • windows下oracle安装
    windows下oracle安装本次在windows2019操作系统下安装oralce11g服务端和客户端 准备工作:1,windows2019虚拟服务器一台。2,oralce11gserver安装包下载。3,win32_11gR2_client 客户端安装包下载,以及常用测试用应用软件PLSQLDeveloper。 安装包解压,将两个安装包解压到......
  • Oracle数据库安全扫描1158/3938端口出现弱SSL加密算法解决方法之一
    问题复述某国企项目现场反应安全扫描出部署某历史项目的Windows服务器上的1158及3938两个端口出现了弱SSL加密算法漏洞,要求整改。经过核实,该Windows服务器上部署了tomcat与Oracle11g数据库,其中1158和3938两个端口均为Oracle数据库所使用。处理思路确认1158和3938作用:如果没......
  • SpringBoot心理树洞在线公益网站hu239 本系统(程序+源码+数据库+调试部署+开发环境)带论
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:学生,心理老师,咨询预约开题报告内容一、研究背景与意义随着现代生活节奏的加快,越来越多的人面临着心理压力和困扰。然而,由于种种原因,很多人并不愿意......
  • 数据库的三大范式
    数据库的三大范式是规范化数据库设计的基本原则,旨在减少数据冗余并确保数据一致性。以下是三大范式的核心内容:1.第一范式(1NF)定义:第一范式要求数据库表中的每个字段都是原子的,即每个字段只能包含一个值,不能有重复的列。要求:表中的每个列都是不可分割的原子数据。每个字段的......
  • springboot美容院管理系统(代码+数据库+LW)
    摘  要如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式就不适合。为了让美容院信息的管理模式进行升级,也为了更好的维护美容院信息,美容院管理系统的开发运用就显得很有必要。并且通过开发美容院管理系统,不仅可以让所学的SpringBoot框架得到实际运用......