(完整)ORACLE性能AWR报告的使用和分析101354.pdf
《(完整)ORACLE性能AWR报告的使用和分析101354.pdf》由会员分享,可在线阅读,更多相关《(完整)ORACLE性能AWR报告的使用和分析101354.pdf(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、百学须先立志。朱熹云路鹏程九万里,雪窗萤火二十年。王实甫(完整)ORACLE 性能 AWR 报告的使用和分析 ORACLE 性能诊断 AWR 报告的使用和分析 为满足业务的运行要求,高性能要求是目前 IT 系统普遍面临的最棘手问题,尤其是客户面对着目前越来越庞大系统和数据,系统整合、数据大集中似乎成了趋势.针对系统性能优化的诊断和分析,数据库方向又是其中的重要一环,本文将针对ORACLE 中常用的性能诊断工具 AWR 报告,进行分析说明.一、ORACLE 性能诊断工具 ORACLE 数据库的性能的诊断工具有很多种,在 9i 之前主要通过手工进行采集分析,例如使用动态视图和Statspack报告
2、来获取数据库性能状态信息,10g以后ORACLE数据库的性能诊断和改进建议越来越自动化,不过能够熟悉并掌握 ORACLE 的相关性能诊断工具的使用,仍对性能问题的准确和有效处理提供有利的帮助.以下是 ORACLE 中常用的一些分析工具。动态性能视图 动态性能视图是 ORACLE 中最常用,也是最简单的一种工具。无论何种性能问题,都能在动态性能视图中找到线索,不过仅 10g 中动态性能视图就高达几百个,每个视图都包括很多诊断信息,想在众多的视图中找到问题的根源,也是一件费力的事情.一般常用的动态性能视图有:vsession、v$session_wait、vprocess、v$sql、vlock、
3、v$latch、vsysstat、v$system_event、v$sgastat。Statspack 报告 statspack 是 Oracle 9i 之前使用的一个数据库收集工具,收集了数据库全面信息,包括负载概览、前五个等待事件、高速缓存的大小、共享池中 SQL 语句、表空间和文件 I/O、库高速缓存、SGA 统计等。AWR 和 ADDM 报告 AWR 是 10g 以后提供的一个新工具,Oracle 建议用户用这个取代 Statspack,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题,并自动生成ADDM(自动数据库诊断监控)报告,为用户提供数据库性能诊断分
4、析建议。SQL 执行计划和建议 数据库中 SQL 的执行效率可能是对系统影响最大的一个因素,利用 ORACLE 执行计划的分析,可以准确知道 SQL 执行的代价,并提供多个方面的调整建议,来进行 SQL 代码的优化分析.二、生成 AWR 报告 以下,本文将针对 oracle10g 后提供的常用性能分析报告 AWR,依此来描述和分析数据库的性能点和优化建议。勿以恶小而为之,勿以善小而不为。刘备忍一句,息一怒,饶一着,退一步。增广贤文(完整)ORACLE 性能 AWR 报告的使用和分析 AWR 由 ORACLE 自动产生,默认 30 分钟采集一次,保留 5 天的记录.但是也可以通过DBMS_WOR
5、KLOAD_REPOSITORY 包来手工创建、删除和修改.使用脚本 awrrpt.sql 或 awrrpti。sql来查看 AWR 报告,这两个脚本都在目录ORACLE_HOME/rdbms/admin 中,报告可以保存为文本文件或 HTML 文件。生成 AWR 报告的步骤如下:sqlplus sys/sys127。0.0。1/scmis as sysdba SQL c:/oracle/product/10.2。4/db_1/RDBMS/ADMIN/awrrpt.sql 输入 report_type 的值:html (注:确定报告的格式)输入 num_days 的值:1 (注:选择快照的天数
6、)输入 begin_snap 的值:425 (注:起始快照)输入 end_snap 的值:427 (注:结束快照)输入 report_name 的值:d:scmisawr201110-29。html (注:报告生成的名称和位置)三、AWR 报告分析 AWR 报告头记录了数据库名称和起始快照时间,报告头中主要分析 Elapsed(总时间)和 DB Time(DB 消耗的时间,不包括后台进行的消耗时间),如果 DB Time/Elapsed 比值较大,说明数据库系统压力较大,例如下图中系统包括 16CPU(28 核),每个 cpu 耗时 26.7min,负载为26.7/60.03=44.5%,说明
7、数据库服务器存在较大的负荷。即:427。44/60.316100%=44。5 1、sessions 表示采集是实例连接的会话数,这个数可以让我们了解数据库并发用户的大概情况。如果是新接手的数据库,对判断数据库的类型可以做参考 2、Cursors/Session,平均每个会话卡开的游标数。3、DB Time 4、这个数值比较重要,它表示用户操作花费的时间,包括cpu和等待事件.有时候DB Time会比Elapsed时间要长。因为 AWR 是一个数据的合集,比如说 1 分钟内一个用户等待 10 秒钟,那么 10 个用户是 300 秒(5忍一句,息一怒,饶一着,退一步。增广贤文天行健,君子以自强不息
8、。地势坤,君子以厚德载物。易经(完整)ORACLE 性能 AWR 报告的使用和分析 分钟);cpu 的时间也是一样一分钟之内,一个 cpu 处理 30 秒,那么 4 个 cpu 就是 1。2 分钟,8 个就是 2.4分钟,这些都以累计的方式记录在 awr 报告当中的.AWR 报告总览包括了五个部分:缓存尺寸(Cache Sizes)、负载性能(Load Profile)、数据库效率(Instance Efficiency Percentages)、共享池统计(Shared Pool Statistics)、TOP5事件(Top 5 Timed Events).这五个部分也就是整个报告核心,记录
9、了数据库系统的关键性能参数和状况。1)缓存尺寸(Cache Sizes)主要记录总的缓存大小 Buffer Cache 和 SGA 缓存尺寸 Shared Pool Size,SGA 是 ORACLE中非常重要的内存共享区,对系统内的所有进程都是共享的。当多个用户同时连接到一个例程时,所有的用户进程、服务进程都可以共享使用这个 SGA 区。Shared pool 可以分为库缓存(library cache)和数据字典缓存(dictionary cache).Library cache 存放了最近执行的 SQL语句、存储过程、函数、解析树以及执行计划等.而 dictionary cache 则存
10、放了在执行 SQL 语句过程中,所参照的数据字典的信息,包括 SQL 语句所涉及的表名、表的列、权限信息等。2)负载性能(Load Profile)这个部分记录了数据库负载情况,绝对值的分析意义不大,需要与之前的基线数据比较才具有更多的意义,单个的报告数据只说明应用的负载情况,绝大多数据并没有一个所谓“正确”的值.其中重要的几个对于 Logons 大于每秒 12 个,表明可能有争用问题;对于 Hard parses大于每秒 100,parses 大于每秒 300,表明硬解析太多,SQL 重用率不高,需要解决 SQL 代码变量绑定问题,并调整共享池参数、调整 cursor_sharing 参数;
11、对于 Sorts 大于每秒 100,表明排序过多,需要减少 SQL 代码中排序操作,或调整排序空间。丹青不知老将至,贫贱于我如浮云。杜甫大丈夫处世,不能立功建业,几与草木同腐乎?罗贯中(完整)ORACLE 性能 AWR 报告的使用和分析 Logons:Logons show how many users are logged onto the database per second 这个表里应该注重:1)logical reads 和 physical reads,同时也可以得到平均每个逻辑读导致多少物理读,即 19。1/37410。4=0。05.平均每个事务产生了 9040.68 个逻辑读,
12、这个数字应该越小越好.2)parses 和 hard parses:从表中可以看到 cpu 平均每秒进行了 81。24 个解析(超过 100 个应该注意),每秒进行 5.39(超过 10 个应该注意)次硬解析,即 cpu 每秒要处理 5。39 个全新的 sql.3)数据库效率(Instance Efficiency Percentages)记录了 Oracle 关键指标的内存命中率及数据库实例其它操作的效率,这个部分反应了数据库中最重要指标的命中率。缓冲区未等待率(buffer nowait%):指在缓冲区中获取 buffer 的未等待比率.该指标的值应接近 100%,如果该值较低,则可能要增
13、大 buffer cache,,不应该低于 99。redo 缓冲区未等待率(redo nowait):指在 redo 缓冲区获取 buffer 的未等待比率。该指标的值应接近 100,如果该值较低,则有 2 种可能的情况:古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。苏轼百川东到海,何时复西归?少壮不尽力,老大徒伤悲。汉乐府长歌行(完整)ORACLE 性能 AWR 报告的使用和分析 1)online redo log 没有足够的空间;2)log 切换速度较慢。缓冲区命中率(buffer hit):指数据块在数据缓冲区中的命中率。该指标的值通常应在 90以上(不应该低于 99%),否则,需要
14、调整.如果持续小于 90,可能要加大 db_cache_size。但有时,缓存命中率低并不意味着 cache设置小了,可能是潜在的全表扫描降低了缓存命中率.内存排序率(in-memory sort%):指排序操作在内存中进行的比率。该指标的值应接近 100%,如果指标的值较低,则表示出现了大量排序时的磁盘 i/o 操作,可考虑加大 sort_area_size 参数的值。共享区命中率(library hit):该指标主要代表 sql 在共享区的命中率。该指标的值通常应在95以上,否则需要考虑加大共享池(修改 shared_pool_size参数值),绑定变量,修改 cursor_sharing
15、 等参数。软解析的百分比(soft parse):该指标是指 oracle 对 sql 的解析过程中,软解析所占的百分比。该指标的值通常应在 95%以上,如果低于 80%,那么就可能 sql 基本没被重用,sql没有绑定变量,需要考虑绑定变量。闩锁命中率(latch hit):指获得 latch 的次数与请求 latch 的次数的比率。该指标的值应接近 100%,如果低于 99%,需要分析闩锁竞争,明确是应用锁、数据字典锁、内存控制锁的哪一种。通过进一步分析 Latch Statistics 章节或动态性能视图 vsession_wait,vlatch,v$latch_children。sql
16、 语句执行与解析的比率(execute to parse%):指 sql 语句执行与解析的比率。该指标的值应尽可能到高,如果过低,可以考虑设置 session_cached_cursors 参数。%NonParse CPU:说明花费在十几工作的时间和花费在解析上的时间的对比 execute to parse,说明 sql 语句执行与解析的比率 4)共享池统计(Shared Pool Statistics)记录了在采集点时刻,共享池(share pool)内存被使用的比例。这个指标的值应保持在75%90,如果这个值太低,就浪费内存,如果太高,会使共享池外部的组件老化,如果 sql 语句被再次执行
17、,则就会发生硬分析。其中执行次数大于 1 的 sql 比率(SQL with executions1),如果此值太小,说明需要在应用中更多使用绑定变量,避免过多 SQL 解析。先天下之忧而忧,后天下之乐而乐。范仲淹云路鹏程九万里,雪窗萤火二十年。王实甫(完整)ORACLE 性能 AWR 报告的使用和分析 Memory Usage,说明在 shared pool 中,被使用的部分占 shared pool 总尺寸的百分比。这个值应保持适中,(如 85%),如果太高,则会引起 shared pool 中的对象被刷出内存,从而导致 sql 语句的硬解析增加,太低则浪费内存;SQL with exec
18、utions1,执行次数大于 1 次的 sql 占总 sql 数的百分比,越大越好;Memory for SQL w/exec1,在 shared pool 中执行次数大于 1 次的 sql 语句所消耗的内存占 shared pool 的百分比 5)TOP5 事件(Top 5 Timed Events)这个部分也是 AWR 报告中非常重要的部分,从这里可以看出等待时间在前五位的是什么事件,基本上就可以判断出性能瓶颈在什么地方。通常,在没有问题的数据库中,CPU time 总是列在第一个,其他几类重要影响性能的事件分析如下。缓冲区忙(buffer busy):当一个会话想要访问缓存中的某个块,而
19、这个块正在被其它会话使用时,将会产生该等待事件.这时候,其它会话可能正在从数据文件向缓存中的这个块写入信息,或正在对这个块进行修改。出现这个等待事件的频度不应大于1。如果这个等待事件比较显著,则需要根据等待事件发生在缓存中的哪一块(如字段头部、回退段头部块、回退段非头部块、数据块、索引块等),采取相应的优化方法。文件分散读取(db file scattered read):该等待事件通常与全表扫描有关。因为全表扫描是被放入内存中进行的进行的,通常情况下它不可能被放入连续的缓冲区中,所以就散布在缓冲区的缓存中。如果这个等待事件比较显著,可能说明对于某些全表扫描的表,没有创建索引或没有创建合适的索
20、引。尽管在特定条件下执行全表扫描可能比索引扫描更有效,但如果出现这种等待时,最好检查一下这些全表扫描是否必要.文件顺序读取(db file sequential read):该等待事件通常与单个数据块相关的读取操作有关。如果这个等待事件比较显著,可能表示在多表连接中,表的连接顺序存在问题,或者可能不合适地使用了索引。对于大量事务处理、调整良好的系统,这一数值大多是很正常的,但在某些情况下,它可能暗示着系统中存在问题。应检查索引扫 描,以 保 证 每 个 扫 描 都 是 必 要 的,并 检 查 多 表 连 接 的 连 接 顺 序.另 外db_cache_size?也是这些等待出现频率的决定因素。
21、队列(enqueue):队列是一种保护共享资源的锁定机制。该锁定机制保护共享资源,如记录中的数据,以避免两个人在同一时间更新同一数据。如果 enqueue 等待事件比较显著,则需要根据 enqueue 等待类型,采取相应的优化方法.闩锁释放(latch free):latch 是一种低级排队机制(它们被准确地称为相互排斥机制),用于保护系统全局区域(sga)中共享内存结构.该等待事件意味着进程正在等待其他进程已持有的 latch。对于常见的 latch 等待通常的解决方法:1)share pool latch:在 oltp 应用中应该更多的使用绑定变量以减少该 latch 的等待。2)libr
22、ary cache latch:同样的需要通过优化 sql 语句使用绑定变量减少该 latch 的等待。大丈夫处世,不能立功建业,几与草木同腐乎?罗贯中人不知而不愠,不亦君子乎?论语(完整)ORACLE 性能 AWR 报告的使用和分析 日志文件同步(log file sync):这个等待事件是指当一个会话完成一个事务(提交或者回滚数据)时,必须等待 lgwr 进程将会话的 redo 信息从日志缓冲区写到日志文件后,才能继续执行下去。这个等待事件的时间过长,可能是因为 commit 太频繁或者lgwr 进程一次写日志的时间太长(可能是因为一次 log io size 太大),可调整_log_io
23、_size。wait for a undo record:数据库恢复 read by other session READ BY OTHERS SESSIONS 的根本原因就是因为你某条 SQL 做了大量 block 的扫描,我猜想那条 SQL 至少要 50 万个逻辑读。除了解决 SQL 问题,基本没有别的办法 6)Time Model Statistics Statistic Name Time(s)of DB Time sql execute elapsed time 85,698.49 99。38 DB CPU 26,832.02 31。12 parse time elapsed 369
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 ORACLE 性能 AWR 报告 使用 分析 101354
限制150内