首页 > 数据库 >通过 AWR报告查看oracle 数据库服务器的负载(load average)异常高的原因

通过 AWR报告查看oracle 数据库服务器的负载(load average)异常高的原因

时间:2024-11-14 10:20:37浏览次数:1  
标签:load 数据库 AWR 查询 SQL oracle 磁盘 CPU

要诊断 Oracle 数据库服务器的负载(load average)异常高的原因,通过 AWR(Automatic Workload Repository)报告可以帮助你识别潜在的瓶颈或负载源。AWR 报告提供了数据库的详细性能数据,涵盖了系统负载、SQL 执行、I/O 性能、内存使用等多方面的信息。以下是通过 AWR 报告查看和诊断高负载原因的一些关键指标:

1. Top Wait Events(等待事件)

在 AWR 报告中,最重要的指标之一是 等待事件,它能帮助你识别系统资源的瓶颈。常见的等待事件包括:

  • DB CPU:表示数据库服务器的 CPU 时间。如果 DB CPU 占用很高,可能是查询过于复杂或数据库操作过于密集。
  • log file sync:通常与事务提交相关。如果这个事件的等待时间很长,可能表示事务提交过程中存在瓶颈。
  • buffer busy waits:表示在数据缓冲区上发生的竞争。如果这个事件占用大量时间,说明数据库中存在竞争,可能是因为频繁的读写操作导致。
  • read/write IO waits:如 db file sequential readdb file scattered read。这些等待事件通常表明磁盘 I/O 性能瓶颈。如果磁盘 I/O 是瓶颈,可能是数据库无法快速读写数据,导致负载升高。
  • enq: TX - row lock contention:表示行锁争用。如果该等待事件显著,可能是应用程序或查询频繁进行行级锁操作,导致并发性能问题。

如何查看:

  • 在 AWR 报告中找到 "Top 5 Wait Events" 部分,查看占用最多时间的等待事件。

2. SQL Statistics(SQL 统计信息)

AWR 报告中会列出执行时间最长的 SQL 查询,这些查询可能是系统负载的主要原因。查看以下指标:

  • Top SQL by Elapsed Time:这部分列出了占用系统最多 CPU 时间的 SQL 查询。如果某些 SQL 查询执行时间异常长,可能是造成高负载的根本原因。
  • Top SQL by Buffer Gets:表示数据库在执行 SQL 查询时访问的缓冲区次数。如果某些查询频繁读取缓冲区,可能是查询没有优化好,导致系统资源消耗过高。
  • Top SQL by Disk Reads:表示 SQL 查询在执行过程中从磁盘读取的数据量。高磁盘读取通常意味着索引或查询不够优化,导致数据库频繁从磁盘读取数据。

如何查看:

  • 查找 AWR 报告中的 "SQL ordered by Elapsed Time""SQL ordered by Gets""SQL ordered by Reads" 部分,分析消耗时间、缓冲区访问和磁盘读取最多的 SQL 语句。

3. System Statistics(系统统计信息)

AWR 报告中的 System Statistics 部分会提供关于 CPU 使用、I/O 操作、内存使用等方面的详细数据。可以关注以下几个关键指标:

  • CPU Usage:如果 CPU 使用率接近 100%,则说明系统的计算资源不足,可能是由于查询或后台任务的 CPU 占用过高。查看 "CPU Time""User Time",如果数据库占用了过多的 CPU 时间,可能是查询效率低下或某些并发操作过多。
  • I/O Usage:查看磁盘 I/O 使用情况(如 "Physical Reads""Physical Writes")。如果 I/O 活动非常频繁,说明磁盘读写可能是瓶颈,通常是由于不合理的查询或索引缺失。
  • Memory Usage:观察 "PGA""SGA" 的使用情况,特别是内存是否已达到瓶颈。内存不足可能会导致磁盘交换(swap),从而影响系统性能。

如何查看:

  • 查找 AWR 报告中的 "System Statistics" 部分,重点关注 CPU 使用、I/O 等相关数据。

4. Instance Efficiency Metrics(实例效率指标)

AWR 报告中的 "Instance Efficiency Metrics" 部分会列出一些与实例效率相关的关键指标:

  • Buffer Cache Hit Ratio:理想情况下,缓冲池命中率应接近 100%。如果命中率较低,可能表示数据库查询频繁访问磁盘而不是内存,从而增加负载。
  • Library Cache Hit Ratio:库缓存命中率低意味着 SQL 解析过程中存在大量的硬解析。硬解析会消耗 CPU 资源,降低系统性能。
  • Latch Hit Ratio:低命中率可能表示锁争用过高,可能是由于数据库并发操作引起的。

如何查看:

  • 查找 AWR 报告中的 "Instance Efficiency" 部分,关注这些关键效率指标的值。

5. Active Sessions (活动会话)

AWR 中的 "Active Sessions" 统计信息可以显示在给定时间内系统中活动会话的分布情况。如果大量会话处于某种等待状态或 CPU 占用过高,可能会导致负载升高。

如何查看:

  • 在 AWR 报告中查找 "Active Session History" 部分,分析系统中活动会话的等待情况和 CPU 使用情况。

6. Operating System Statistics (操作系统统计信息)

这部分提供了关于操作系统层面的统计信息,例如 CPU、内存、磁盘和网络使用情况。可以结合这些数据与数据库级别的性能数据一起分析负载的来源。

如何查看:

  • 查找 "Operating System Statistics" 部分,重点查看 CPU 使用率、内存消耗和磁盘 I/O 使用情况。

总结:

  • 等待事件:主要关注 db file sequential readdb file scattered readlog file sync 等与 I/O 和事务提交相关的等待事件。
  • SQL 性能:查看最耗时的 SQL 查询,尤其是执行时间、缓冲区读取和磁盘读取较高的查询。
  • 系统资源使用:查看 CPU 使用、内存消耗、I/O 活动等。
  • 实例效率指标:检查缓冲池和库缓存的命中率,找出性能瓶颈。
  • 活动会话分析:通过活跃会话的等待情况找出可能的瓶颈。

根据这些数据,你可以定位到可能导致负载过高的原因,并根据实际情况优化查询、调整资源配置、增加索引、优化内存使用等,从而解决性能问题。

标签:load,数据库,AWR,查询,SQL,oracle,磁盘,CPU
From: https://www.cnblogs.com/dll102/p/18545468

相关文章

  • C#不装Oracle客户端,连接数据库的方法
      前几天临时碰到个项目需求,让从Oracle数据库中直接查询视图数据。  按照正常的模式,首先问清楚Oracle版本,然后安装Oracle客户端,更改“listener.ora”监听文件,安装PLSQL,连接、查询。  再在代码中引用“System.Data.OracleClient.dll”,配置连接字符串使用。  太麻烦了! ......
  • 数据库运维实操优质文章文档分享(含Oracle、MySQL等) | 2024年10月刊
    本文为大家整理了墨天轮数据社区2024年10月发布的优质技术文章/文档,主题涵盖Oracle、MySQL、PostgreSQL等主流数据库系统以及国产数据库的技术实操,从基础的安装配置到复杂的故障排查,再到性能优化的实用技巧及常用脚本等,分享给大家:Oracle优质技术文章概念梳理&安装配置OracleR......
  • oracle数据库的begin backup状态
    Oracle数据库的BEGINBACKUP状态是数据库热备份过程中的一个重要阶段。以下是对Oracle数据库BEGINBACKUP状态的详细解释:一、BEGINBACKUP状态的作用在Oracle数据库中,BEGINBACKUP状态主要用于启动热备份模式。此状态下,数据库允许用户在进行备份的同时,仍然可以对数据库进行正......
  • Goffloader:内存执行,无需磁盘
    免责声明该公众号分享的安全工具和项目均来源于网络,仅供安全研究与学习之用,如用于其他用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。安全公司Praetorian发布了GoffLoader,这是一种旨在简化BOF文件和非托管CobaltStrikePE文件直接在内存中执行的工具,而......
  • [极客大挑战 2019]Upload
    直接上传shell.php,发现提示不是图片,这时先修改后缀名或者Content-Type数。我们使用burpsuite进行操作抓包后发送到repeater,直接修改后缀名不行,看来是通过Content-Type属性来判断是否为图片的,将Content-Type修改为image/jpeg,回显not!php!将文件后缀名修改为phtml,回显包含了<?......
  • Oracle/DM:LEFT OUTER JOIN排除数据(代替:not in)
    为了使用LEFTOUTERJOIN来排除表1中那些id在表2中有匹配的记录,我们可以按照以下步骤进行操作:数据表:表1(table1):idname112234表2(table2):id12目标:我们希望排除table1中那些在table2中有匹配的id,即排除id=1和id=2的记......
  • linux下oracle数据库重起
    切换到Oracle用户,使用SQLPlus作为系统管理员关闭和启动数据库,查看和重启监听进程。使用lsnrctl工具管理监听,检查状态。1、切换到oracle用户,进入sql命令窗口su-oraclesqlplus/assysdba2、关闭数据库shutdownimmediate;关掉exit退出3、查看......
  • Oracle数据库归档模式的开启和关闭
       一、Oracle环境 Oracle服务器:oracle11goracle版本:11.2.0.1.0操作系统版本:RedHatEnterpriseLinuxServerrelease7.6(Maipo) 二、归档模式介绍    oracle是款高安全性的数据库,刚安装好的数据库一般没有开启归档模式,我们需要开启归档模式,特别是业务数......
  • flink Uploaded Jars 路径 flink提交jar包
    flinkUploadedJars路径flink提交jar包漏洞描述:2019年11月11号,安全工程师HenryChen披露了一个ApacheFlink未授权上传jar包导致远程代码执行的漏洞。由于ApacheFlinkDashboard默认无需认证即可访问,通过上传恶意jar包并触发恶意代码执行,从而获取shell。影响范围<=1......
  • 导图-Oracle基础之网络监听器
    关于Jady:★工作经验:近20年IT技术服务经验,熟悉业务又深耕技术,为业务加持左能进行IT技术规划,右能处理综合性故障与疑难杂症;★成长历程:网络运维、主机/存储运维、程序/数据库开发、大数据运维、数据库运维、数据管理;★擅长技术:Oracle/MySQL/PGSQL/SQLServer/ClickHouse/Elastic......