`
hotjava
  • 浏览: 181246 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

AWR报告日常分析

阅读更多

1.1.1. SQL ordered by Elapsed Time

   记录了执行总和时间TOP SQL(请注意是监控范围内该SQL的执行时间总和,而不是单次SQL执行时间 Elapsed Time = CPU Time + Wait Time)

SQL ordered by Elapsed Time

  • Resources reported for PL/SQL code includes the resources used by all SQL statements called by the code.
  • % Total DB Time is the Elapsed Time of the SQL statement divided into the Total Database Time multiplied by 100

Elapsed Time (s)

CPU Time (s)

Executions

Elap per Exec (s)

% Total DB Time

SQL Id

SQL Module

SQL Text

152,148

150,929

205,218

0.74

24.22

an4rtjrb8tbq5

 

update SYS.AUD$ set XID = :1 w...

109,969

109,032

2,003

54.90

17.50

0twzs3px5d7wj

 

DECLARE job BINARY_INTEGER := ...

38,797

38,460

8,843

4.39

6.17

6gvch1xu9ca3g

 

DECLARE job BINARY_INTEGER := ...

29,312

13,414

10

2931.15

4.67

26ndjmd3nnmwx

 

BEGIN CS_SLT_DSCLJG(:1, :2, :3...

 

   Elapsed Time(S): SQL语句执行用总时长,此排序就是按照这个字段进行的。注意该时间不是单个SQL跑的时间,而是监控范围内SQL执行次数的总和时间。单位时间为秒。Elapsed Time = CPU Time + Wait Time

  CPU Time(s): SQL语句执行时CPU占用时间总时长,此时间会小于等于Elapsed Time时间。单位时间为秒。

  Executions: SQL语句在监控范围内的执行次数总计。

  Elap per Exec(s): 执行一次SQL的平均时间。单位时间为秒。

  % Total DB Time: SQLElapsed Time时间占数据库总时间的百分比。

  SQL ID: SQL语句的ID编号,点击之后就能导航到下边的SQL详细列表中,点击IE的返回可以回到当前SQL ID的地方。

  SQL Module: 显示该SQL是用什么方式连接到数据库执行的,如果是用SQL*Plus或者PL/SQL链接上来的那基本上都是有人在调试程序。一般用前台应用链接过来执行的sql该位置为空。

  SQL Text: 简单的sql提示,详细的需要点击SQL ID

 

1.1.2. SQL ordered by CPU Time:

  记录了执行占CPU时间总和时间最长的TOP SQL(请注意是监控范围内该SQL的执行占CPU时间总和,而不是单次SQL执行时间)

1.1.3. SQL ordered by Gets:

  记录了执行占总buffer gets(逻辑IO)TOP SQL(请注意是监控范围内该SQL的执行占Gets总和,而不是单次SQL执行所占的Gets).

 

1.1.4. SQL ordered by Reads:

记录了执行占总磁盘物理读(物理IO)TOP SQL(请注意是监控范围内该SQL的执行占磁盘物理读总和,而不是单次SQL执行所占的磁盘物理读)

 

1.1.5. SQL ordered by Executions:

  记录了按照SQL执行次数排序的TOP SQL。该排序可以看出监控范围内的SQL执行次数。

 

1.1.6. SQL ordered by Parse Calls:

  记录了SQL软解析次数TOP SQL

  说到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oraclesql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:

  1、语法检查(syntax check)

  检查此sql的拼写是否语法。

  2、语义检查(semantic check)

  诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。

  3、对sql语句进行解析(prase)

  利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execution plan)

  4、执行sql,返回结果(execute and return)

  其中,软、硬解析就发生在第三个过程里。

  Oracle利用内部的hash算法来取得该sqlhash值,然后在library cache里查找是否存在该hash值;

  假设存在,则将此sqlcache中的进行比较;

  假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这也就是软解析的过程。

  诚然,如果上面的2个假设中任有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作。这个过程就叫硬解析。

  创建解析树、生成执行计划对于sql的执行来说是开销昂贵的动作,所以,应当极力避免硬解析,尽量使用软解析。这就是在很多项目中,倡导开发设计人员对功能相同的代码要努力保持代码的一致性,以及要在程序中多使用绑定变量的原因。

/****************************************************/

大家都在说在Sql中使用了Bind Var(绑定变量)会提高不少性能,那他到底是如何提高性能的呢?

使用了Bind Var能提高性能主要是因为这样做可以尽量避免不必要的硬分析(Hard Parse)而节约了时间,同时节约了大量的CPU资源。

当一个Client提交一条SqlOracle后,Oracle首先会对其进行解析(Parse),然后将解析结果提交给优化器(Optimiser)来进行优化而取得Oracle认为的最优的Query Plan,然后再按照这个最优的Plan来执行这个Sql语句(当然在这之中如果只需要软解析的话会少部分步骤)。

但是,当Oracle接到Client提交的Sql后会首先在共享池(Shared Pool)里面去查找是否有之前已经解析好的与刚接到的这一个Sql完全相同的Sql(注意这里说的是完全相同,既要求语句上的字符级别的完全相同,又要求涉及的对象也必须完全相同)。当发现有相同的以后解析器就不再对新的Sql在此解析而直接用之前解析好的结果了。这里就节约了解析时间以及解析时候消耗的CPU资源。尤其是在OLTP中运行着的大量的短小Sql,效果就会比较明显了。因为一条两条Sql的时间可能不会有多少感觉,但是当量大了以后就会有比较明显的感觉了。

上面说到了硬解析(Hard Parse),那这个Hard Parse到底是个啥呢?

Parse主要分为三种:

1Hard Parse (硬解析)

2Soft Parse (软解析)

3Soft Soft Parse(好像有些资料中并没有将这个算在其中)

Hard Parse就是上面提到的对提交的Sql完全重新从头进行解析(当在Shared Pool中找不到时候将会进行此操作),总共有一下5个执行步骤:

1:语法分析

2:权限与对象检查

3:在共享池中检查是否有完全相同的之前完全解析好的如果存在,直接跳过45,运行Sql(此时算soft parse

4:选择执行计划

5:产生执行计划

Soft Parse就如果是在Shared Pool中找到了与之完全相同的Sql解析好的结果后会跳过Hard Parse中的后面的两个步骤。

Soft Soft Parse实际上是当设置了session_cursor_cache这个参数之后,Cursor被直接Cache在当前SessionPGA中的,在解析的时候只需要对其语法分析、权限对象分析之后就可以转到PGA中查找了,如果发现完全相同的Cursor,就可以直接去取结果了,也就就是实现了Soft Soft Parse

不过在计算解析次数的时候是只计算Hard ParseSoft Parse的(其实Soft Soft Parse好像也并不能算是做了Parse  ):

Soft Parse百分比计算:Round(100*(1-:hprs/:prse),2) [hprs:硬解析次数;prse:解析次数]

Parse比率计算: Round(100*(1-prse/exec) ,2) [exec:执行次数]

   软解析过多的意思就是说session_cursor_cache的数值有可能小了,一些频繁调用的SQLCache中找不到相同的Cursor

 

1.1.7. SQL ordered by Sharable Memory:

  记录了SQL占用library cache的大小TOP SQL

Sharable Mem (b)占用library cache的大小。单位是byte

 

1.1.8. SQL ordered by Version Count:

  记录了SQL打开子游标TOP SQL

 在硬解析的过程中,进程会一直持有library cach latch,直到硬解析结束。硬解析结束以后,会为该SQL产生两个游标,一个是父游标,另一个是子游标。父游标里主要包含两种信息:SQL文本以及优化目标(optimizer goal)。父游标在第一次打开时被锁定,直到其他所有的session都关闭该游标后才被解锁。当父游标被锁定的时候是不能被交换出library cache的,只有在解锁以后才能被交换出library cache,这时该父游标对应的所有子游标也被交换出library cache。子游标包括游标所有的信息,比如具体的执行计划、绑定变量等。子游标随时可以被交换出library cache,当子游标被交换出library cache时,oracle可以利用父游标的信息重新构建出一个子游标来,这个过程叫reload。可以使用下面的方式来确定reload的比率:
SELECT 100*sum(reloads)/sum(pins) Reload_Ratio FROM v$librarycache;
一个父游标可以对应多个子游标。子游标具体的个数可以从v$sqlareaversion_count字段体现出来。而每个具体的子游标则全都在v$sql里体现。当具体的绑定变量的值与上次的绑定变量的值有较大差异(比如上次执行的绑定变量的值的长度是6位,而这次执行的绑定变量的值的长度是200位)时或者当SQL语句完全相同,但是所引用的对象属于不同的schema时,都会创建一个新的子游标

 

1.1.9. SQL ordered by Cluster Wait Time:

  记录了集群的等待时间TOP SQL

 

1.2. 其他管理员相关问题解析:

1.2.1. Load Profile

 

Per Second

Per Transaction

Redo size:

65,768.90

17,459.39

Logical reads:

31,757.56

8,430.54

Block changes:

271.06

71.96

Physical reads:

188.86

50.13

Physical writes:

11.90

3.16

User calls:

197.15

52.34

Parses:

241.40

64.08

Hard parses:

1.90

0.50

Sorts:

12.46

3.31

Logons:

0.15

0.04

Executes:

313.88

83.32

Transactions:

3.77

 

 

<td style="background: #ffffcc;

% Blocks changed per Read:

0.85

Recursive Call %:

95.92

Rollback per transaction %:

30.79

分享到:
评论
1 楼 tsimgsong 2008-11-28  
不错,挺有用的

相关推荐

    awr报告分析

    ### AWR报告分析 #### 一、概述 自动工作负载资料库(Automatic Workload Repository,简称AWR)是...无论是对于日常维护还是紧急故障处理,AWR报告都能发挥重要作用。希望本文能帮助读者更好地理解和运用这一强大工具。

    AWR报告管理与分析

    综上所述,AWR报告的管理与分析是Oracle DBA日常工作中不可或缺的一部分,它提供了对数据库性能的全面洞察,帮助确保系统的稳定性和高效运行。了解并熟练运用AWR,能够极大地提升数据库的运维水平。

    oracle抓取指定时间段AWR报告实例说明 .docx

    通过对AWR报告的分析,可以有效地帮助我们发现并解决数据库性能问题。 #### 抓取指定时间段AWR报告的步骤详解 **第一步:登录至Oracle应用服务器** 使用具备Oracle应用程序执行权限的用户(例如:oracle用户)登录...

    AWR-Format(谷歌浏览器看awr报告插件)

    AWR(Automatic Workload Repository)是Oracle...总之,"AWR-Format"插件是提升Oracle数据库性能管理效率的一个实用工具,通过其强大的解析和展示功能,可以帮助DBA更高效地分析AWR报告,从而更好地优化数据库性能。

    oracle awr报告详解

    Oracle AWR(Automatic Workload Repository)报告是Oracle数据库性能监控的重要工具,自10g版本开始...报告内容丰富,涵盖了从系统资源利用到SQL执行的各个层面,是Oracle数据库日常管理和性能调优不可或缺的工具。

    AWR报告生成详解.doc

    Oracle AWR(Automatic Workload Repository)...在日常维护中,定期生成和分析AWR报告是确保数据库高效运行的关键步骤之一。对于新手来说,熟悉这个过程是非常必要的,能够快速定位和解决问题,提升数据库的运行效率。

    数据库AWR报告的获取方式

    数据库性能分析是数据库管理员(DBA)日常工作中的一项重要任务,而Oracle数据库提供了一种强大的性能分析工具——Automatic Workload Repository(AWR)。AWR报告是AWR的主要输出,它详细记录了数据库在一段时间内...

    解读awr报告

    总的来说,"解读AWR报告"是Oracle DBA日常工作中必不可少的一项技能,它可以帮助我们及时发现和解决问题,保障数据库系统的高效运行。通过学习和实践,每一个IT专业人员都可以成为一名出色的性能优化专家。

    ACOUG-如何分析AWR报告.pdf

    ### ACOUG-如何分析AWR报告 #### AWR概述 AWR(Automatic Workload Repository)作为Oracle 10g引入的重要组件之一,主要用于存储数据库近期内(默认为7天)活动状态的详细信息。通过对AWR视图的查询,可以生成AWR...

    AWR日常数据库分析V02.doc

    AWR日常数据库分析V02

    Oracle 导出某时间段AWR与ASH性能报告操作日志

    在日常运维工作中,定期导出和分析这些报告是非常重要的。 此外,Oracle还提供了多种工具和技术来进一步提升数据库性能,如SQL优化器、索引策略调整、内存管理等。综合运用这些技术和工具,可以显著提高Oracle...

    ORACLE性能AWR报告的使用和分析[归纳].pdf

    Oracle性能分析是数据库管理的关键环节,特别是在处理大型系统和海量数据时。自动工作负载仓库(AWR)报告是Oracle 10g及更高版本中的一个重要工具,用于...在日常数据库维护中,定期查看和分析AWR报告是必不可少的环节。

    oracle几个awr报告

    Oracle AWR(Automatic Workload Repository)报告是Oracle数据库性能监控的重要...总之,Oracle的A WR报告是DBA日常维护和性能调优的重要工具,通过深入理解和有效利用这些报告,能够有效地提升数据库系统的整体性能。

    Oracle11生成AWR

    Oracle AWR(Automatic Workload Repository)是Oracle数据库中一个强大的性能监控工具,它定期收集数据库的性能数据,并生成详细的分析报告,帮助DBA诊断和优化系统性能。在Oracle 11g版本中,AWR的功能得到了...

    AWR-Format.rar

    在日常运维中,定期分析AWR报告并进行相应的优化工作是保证数据库健康运行的关键步骤之一。 由于"AWR-Format.rar"是一个压缩文件,用户需要解压后运行其中的程序或脚本,根据提供的说明进行操作。需要注意的是,...

    rac生成AWR

    - **日常维护**:定期运行此脚本,可以确保管理员定期收到性能报告,便于及时发现问题。 - **故障排查**:当系统出现性能下降时,可以调出最近一段时间内的AWR报告,通过比较找出问题所在。 - **容量规划**:通过...

    ORACLE11g AWR脚本

    `awrrpti.sql` 和 `awrginp.sql`:这些脚本用于生成AWR报告,AWR报告通常包含大量的性能指标和图表,如等待事件分布、Top SQL分析、缓冲区命中率等,是DBA日常性能调优的重要参考。 在使用这些脚本时,确保你有适当...

    利用AWR工具收集数据库信息

    AWR通过周期性地收集数据库的统计信息,包括系统资源使用情况、SQL语句执行情况等,为数据库管理员提供了深入的性能分析报告,有助于识别和解决问题。 在AWR报告的生成过程中,首先,你需要以Oracle用户的身份,如...

    Oracle AWR与ASH性能报告深入解析

    - **集成应用**:ASH信息可以与AWR报告结合使用,以更全面地分析数据库性能。 #### 三、示例:SGA信息提取 以下是一个具体的示例,展示如何查询173-174快照之间的SGA信息: ```sql SELECT SNAP_ID, NAME, VALUE ...

Global site tag (gtag.js) - Google Analytics