返回顶部
首页 > 资讯 > 数据库 >【oracle性能优化】- 使用AWR定位oracle性能瓶颈
  • 315
分享到

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

2024-04-02 19:04:59 315人浏览 八月长安
摘要

1 AWR简介AWR(全称Automatic Workload Repository)是oracle 10g版本推出的新特性,随数据库一起被安装的性能收集和分析工具。AWR可以收集场景运行期间的各方面性能数

1 AWR简介

AWR(全称Automatic Workload Repository)是oracle 10g版本推出的新特性,随数据库一起被安装的性能收集和分析工具。AWR可以收集场景运行期间的各方面性能数据,还可以从统计数据中分析出度量数据,通过分析报告,可以了解整个系统的运行情况,因而,oracle数据库常用的性能调优利器。

2 生成AWR报告

AWR是通过对比两次快照(snapshot)收集到的统计信息来生成报告。报告格式可以选择TXT或html,通常会选择生成方便阅读的HTML格式的报告。

生成AWR报告的方法如下:
1、使用sqlplus或pl/sql连接数据库,执行快照生成命令,注意执行的用户必须拥有DBA角色:
exec dbms_workload_repository.create_snapshot;

2、执行awr报告生成脚本,命令如下,注意在执行该命令前,通常会在场景执行后和结束前分别执行一次上述的快照命令:
@$ORACLE_HOME/rdbms/admin/awrrpt.sql

效果如下:

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

如果使用pl/sql,在命令窗口(Command Window)指定awrrpt.sql的绝对路径,执行该脚本即可。

3、执行脚本会进入交互模式,输入html,即指定生成html格式的报告,如图:

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

4、输入要读取多少天内的快照信息,通常输入1,即最近1天内的快照,如图:

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

5、指定需要比对的开始快照和结束快照的id,如图:

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

6、输入要生成awr报告的名字,以.html结尾,默认以前面输入的snap_id命名,如图:

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

7、脚本执行完成即可生成awr报告,默认报告会生成在当前路径,如oracle用户的家目录,或者使用pl/sql,默认在工具目录下。

3 分析AWR报告

3.1 AWR报告组成部分

AWR报告提供了详细的数据,通过Main Report部分可以快速了解SQL、实例活动、等待事件、段统计等各部分的度量数据,如图所示:

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

3.2 AWR报告分析

1、前言分析

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

从该部分可以了解到数据库的空闲程度,如果DB Time远远小于Elapsed时间,说明数据库比较空闲。从上图可知,在3.15分钟的时间段内,数据库耗时31.11分钟,该时间是累加了所有CPU的时间,服务器有48个CPU,平均每个CPU耗时0.64(31/48),CPU利用率约20%(0.64/3.15), 说明系统压力不大。

2、Report Summary分析

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

Report Summary的Cache Sizes部分显示了SGA中每个区域的大小,其中,Buffer Cache用于缓存物理磁盘上的磁盘块,加快对磁盘数据的访问速度;shared pool主要包括library cache和dictionary cache。library cache用来存储最近解析(或编译)后SQL、PL/SQL和Java classes等。 dictionary cache用来存储最近引用的数据字典。发生在library cache或dictionary cache的cache miss代价要比发生在buffer cache的代价高得多,因此shared pool的设置要确保最近使用的数据都能被cache。

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

Load Profile 显示数据库整体负载情况。经验上LoGons大于每秒2个、Hard parses大于每秒100、全部parses超过每秒300表示可能有争用问题。

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

该部分数据显示了Oracle关键指标的内存命中率及数据库实例的操作效率。各指标的期望数据是100%,但需要根据应用的特点判断是否存在瓶颈。

Buffer Nowait:表示在内存获得数据的未等待比例,Buffer Nowait的这个值一般需要大于99%,否则可能存在争用;

buffer hit:表示从内存中命中数据块的比率,如果此值低于80%,应该给数据库分配更多的内存。数据块在数据缓冲区中的命中率,通常应在95%以上;

Redo NoWait:表示在LOG缓冲区获得Buffer的未等待比例,这个值一般需要大于90%;

library hit:表示从Library Cache中检索到一个解析过的SQL语句的比率,通常应该保持在95%以上,否则需要要考虑加大共享池、使用绑定变量、修改cursor_sharing等参数;

Latch Hit:通常Latch Hit要大于99%,否则意味着Shared Pool latch争用,可能由于未共享的SQL,或者Library Cache太小,可使用绑定变量或调大Shared Pool解决;

Parse CPU to Parse Elapsd:解析实际运行时间/(解析实际运行时间+解析中等待资源时间),越高越好;

Non-Parse CPU :SQL实际运行时间/(SQL实际运行时间+SQL解析时间),太低表示解析消耗时间过多;

Execute to Parse:是语句执行与分析的比例,如果要SQL重用率高,则这个比例会很高。该值越高表示一次解析后被重复执行的次数越多;

In-memory Sort:在内存中排序的比率,如果过低说明有大量的排序在临时表空间中进行,需考虑调大PGA。如果低于95%,可以通过适当调大初始化参数PGA_AGGREGATE_TARGET或者SORT_AREA_SIZE来解决;

Soft Parse:软解析的百分比(softs/softs+hards),近似sql在共享区的命中率,如果太低,则需要调整应用使用绑定变量;

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

Memory Usage %:对于已经运行一段时间的数据库来说,Memory Usage使用率应该稳定在75%-90%间,如果太小,说明Shared Pool有浪费,而如果高于90,说明共享池中有争用,内存不足;

SQL with executions>1:执行次数大于1的sql比率,如果此值太小(一般是70%),说明需要在应用中更多使用绑定变量,避免过多SQL解析;

Memory for SQL w/exec>1:执行次数大于1的SQL消耗内存的占比;

3、Top 5 Timed Events分析

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

该部分显示了系统中最严重的5个等待,并按所占等待时间的比例倒序列示。性能问题诊断或调优时,通常会首先从这里入手,根据等待事件确定排查和优化方向。在没有性能问题的数据库中,CPU time总是列在第一个。

4、SQL Statistics分析

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

该部分依据资源类别列出了资源消耗最严重的SQL语句,并显示它们在统计期内所占资源的比例,为性能调优提供方向。如CPU资源是系统性能瓶颈时,优化CPU time 最多的SQL语句将获得最大效果,而在I/O等待最严重的系统中,优化Reads最多的SQL语句往往能获得明显效果。

5、IO 分析

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

该部分列出了每个表空间的I/O统计数据。通过,Av Rd(ms)不应该超过30,否则认为有I/O争用。

4 其他资源

关于python学习、分享、交流,笔者开通了微信公众号【小蟒社区】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学Python


您可能感兴趣的文档:

--结束END--

本文标题: 【oracle性能优化】- 使用AWR定位oracle性能瓶颈

本文链接: https://lsjlt.com/news/38287.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【oracle性能优化】- 使用AWR定位oracle性能瓶颈
    1 AWR简介AWR(全称Automatic Workload Repository)是Oracle 10g版本推出的新特性,随数据库一起被安装的性能收集和分析工具。AWR可以收集场景运行期间的各方面性能数...
    99+
    2024-04-02
  • Oracle AWR性能优化一例
    有一个批处理程序运行超过24小时仍然不能完成,采集了程序运行期间的AWR报告如下。 由上可以看到,该系统为AIX的单实例数据库,采样时长1319.96 分钟,DB time 1532.15分钟。 看一下TO...
    99+
    2024-04-02
  • PHP 性能优化:性能瓶颈识别与诊断
    为了优化 php 应用程序的性能,可以识别和诊断性能瓶颈。识别方法包括使用 profiler 工具、监视应用程序日志和审阅代码。诊断步骤包括分析 profiler 结果、调试代码和使用性...
    99+
    2024-05-10
    php 性能优化
  • ODBC Oracle连接性能瓶颈分析
    在使用ODBC连接Oracle数据库时,可能会出现性能瓶颈。以下是一些可能导致性能瓶颈的原因和解决方法: 网络延迟:网络延迟是一个常见的性能瓶颈。可以通过优化网络连接或使用更快速的网络通信方式来减少网络延迟。 数据量过大:如果查询返...
    99+
    2024-07-15
    oracle
  • 摆脱性能瓶颈:ASP 优化指南
    启用 ASP.NET 输出缓存和页面缓存。 使用 Memcached 或 Redis 等内存缓存存储经常访问的数据。 针对 Ajax 调用使用 HTML5 应用程序缓存。 代码优化 尽量减少 ASP.NET 服务器控件的使用。 使用...
    99+
    2024-04-02
  • 【oracle性能监控】- 使用Spotlight监控oracle及瓶颈分析
    1 Spotlight简介Spotlight是Quest公司出品的用于第三方性能监控的图形化工具,Spotlight相关的产品众多,如Spotight on Linux/Unix、Spotight on W...
    99+
    2024-04-02
  • Golang 技术性能优化中如何分析性能瓶颈?
    通过使用 pprof 和 trace 等工具,可以分析 go 应用程序的性能瓶颈。具体步骤包括:使用 pprof 生成阻塞剖析报告以识别阻塞时间最长的函数。使用 trace 记录应用程序...
    99+
    2024-05-13
    golang 性能优化
  • Go函数性能优化:性能瓶颈识别与解决
    识别性能瓶颈对于 go 函数性能优化至关重要。通过使用 trace、pprof 和 flamegraphs 等工具,可以识别导致性能下降的代码区域。go 提供了 pprof 等 prof...
    99+
    2024-04-30
    go 性能优化 git
  • 如何解析MySQL性能瓶颈排查定位
    如何解析MySQL性能瓶颈排查定位,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 导读从一个现场说起,全程解析如何定位性能瓶颈。 排查...
    99+
    2024-04-02
  • PHP 性能分析:识别和优化瓶颈
    识别和优化 php 应用程序中的性能瓶颈:识别瓶颈:使用剖析器、模拟流量和检查日志。优化瓶颈:优化数据库查询、缓存页面和数据、减少 http 请求、启用 gzip 压缩和优化 web 服...
    99+
    2024-05-11
    php 性能分析 css redis
  • SQL级别数据库性能瓶颈定位工具
    SQL性能分析器:通过分析SQL查询语句的执行计划和性能指标,帮助定位数据库性能瓶颈。 数据库监控工具:监控数据库的性能指标,如CPU利用率、内存利用率、磁盘IO等,帮助发现性能瓶颈。 慢查询日志:记录执行时间超过阈值的SQL查询语...
    99+
    2024-08-04
    sql
  • Paddle模型性能分析工具Profiler定位瓶颈点优化程序详解
    目录Paddle模型性能分析Profiler1.使用Profiler工具调试程序性能1.1 使用cifar10数据集卷积神经网络进行图像分类1.1.1 获取性能调试前模型正常运行的i...
    99+
    2023-03-10
    Paddle分析工具Profiler Paddle Profiler模型性能
  • PHP性能优化常见问题解答:轻松解决性能瓶颈!
    PHP是一种广泛使用的服务器端脚本语言,以其简单易学和跨平台性而著称。然而,随着网站和应用程序的日益复杂,PHP性能优化变得越来越重要。本文将介绍一些常见的PHP性能优化问题,并提供相应的解决方案。 程序架构设计不合理,数据库调用的优化...
    99+
    2024-02-05
    PHP 性能优化 瓶颈 代码 数据库 缓存
  • oracle 性能优化
    索引的说明 索引是与表相关的一个可选结构,在逻辑上和物理上都独立于表的数据,索引能优化查询,不能优化DML操作,Oracle自动维护索引,频繁的DML操作反而会引起大量的索引维护。 通常,为检索表数据...
    99+
    2024-04-02
  • Golang函数并发编程中性能瓶颈的定位
    在 go 函数并发编程中定位性能瓶颈的步骤:1. 定位 goroutine 泄漏(使用 runtime/debug.setmaxthreads 和 debug.printstack);2...
    99+
    2024-04-17
    并发编程 性能瓶颈 golang
  • 函数性能优化和瓶颈检测的技巧
    函数性能优化和瓶颈检测的技巧包括:测量性能:使用性能分析器或计时函数确定需要优化的函数的基准性能。识别瓶颈:分析性能报告或计时代码,找出导致函数性能下降的算法复杂度、重复计算或内存泄漏等...
    99+
    2024-04-13
    函数优化 瓶颈检测 linux python c++ macos
  • PHP跨平台开发的性能瓶颈与优化
    php 跨平台开发中常见的性能瓶颈包括:数据库查询速度慢、内存泄漏、缓慢的文件处理、外部 api 集成和代码编写不当。通过数据库查询优化、内存优化、文件处理优化、外部 api 集成优化和...
    99+
    2024-05-22
    php 跨平台开发 redis 跨平台应用
  • Oracle 学习之 性能优化(十五) ASH、ADDM、AWR
    ASH(Active Session History)  ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件。不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成。A...
    99+
    2024-04-02
  • PHP框架的性能优化绝招:从瓶颈识别到性能提升
    通过使用profiler工具、优化查询、缓存字节码和应用其他技术,如cdn、图像优化和gzip压缩,可以显着提高php框架中应用程序的性能,确保满足用户的需求并保持最佳性能。 PHP框...
    99+
    2024-05-24
    php 性能优化 laravel composer 延迟加载 php脚本
  • C++技术中的调试:性能瓶颈优化指南
    调试 c++++ 性能瓶颈的指南:识别瓶颈:使用分析器、基准测试和日志记录来识别内存泄漏和性能问题。优化内存管理:减少分配、释放未使用的内存,并选择合适的容器。优化代码:遵循健壮原则、避...
    99+
    2024-05-08
    调试 c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作