- 浏览: 183774 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
Martin_Bonnie:
第三个怎么解决的啊?
Eclipse的SVN插件报错 -
tsimgsong:
不错,挺有用的
AWR报告日常分析 -
supercode:
哪几款建模工具有 描述用例规约的功能好像pd里没有找到
[转]用例编写说明 -
iamzealotwang:
我觉得lz说的这种团队太理想化了。
“4,5队去东南方向防守 ...
关于团队的一些思考,玩WOW时候的思考 -
hotjava:
我现在刚开始做PM。
感觉到异常的艰辛。有很多事情真的和想象中 ...
关于团队的一些思考,玩WOW时候的思考
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 |
|
update SYS.AUD$ set XID = :1 w... |
|
109,969 |
109,032 |
2,003 |
54.90 |
17.50 |
|
DECLARE job BINARY_INTEGER := ... |
|
38,797 |
38,460 |
8,843 |
4.39 |
6.17 |
|
DECLARE job BINARY_INTEGER := ... |
|
29,312 |
13,414 |
10 |
2931.15 |
4.67 |
|
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: 为SQL的Elapsed 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),就不能不说一下Oracle对sql的处理过程。当你发出一条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算法来取得该sql的hash值,然后在library cache里查找是否存在该hash值;
假设存在,则将此sql与cache中的进行比较;
假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这也就是软解析的过程。
诚然,如果上面的2个假设中任有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作。这个过程就叫硬解析。
创建解析树、生成执行计划对于sql的执行来说是开销昂贵的动作,所以,应当极力避免硬解析,尽量使用软解析。这就是在很多项目中,倡导开发设计人员对功能相同的代码要努力保持代码的一致性,以及要在程序中多使用绑定变量的原因。
/****************************************************/
大家都在说在Sql中使用了Bind Var(绑定变量)会提高不少性能,那他到底是如何提高性能的呢?
使用了Bind Var能提高性能主要是因为这样做可以尽量避免不必要的硬分析(Hard Parse)而节约了时间,同时节约了大量的CPU资源。
当一个Client提交一条Sql给Oracle后,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主要分为三种:
1、Hard Parse (硬解析)
2、Soft Parse (软解析)
3、Soft Soft Parse(好像有些资料中并没有将这个算在其中)
Hard Parse就是上面提到的对提交的Sql完全重新从头进行解析(当在Shared Pool中找不到时候将会进行此操作),总共有一下5个执行步骤:
1:语法分析
2:权限与对象检查
3:在共享池中检查是否有完全相同的之前完全解析好的—如果存在,直接跳过4和5,运行Sql(此时算soft parse)
4:选择执行计划
5:产生执行计划
Soft Parse就如果是在Shared Pool中找到了与之完全相同的Sql解析好的结果后会跳过Hard Parse中的后面的两个步骤。
Soft Soft Parse实际上是当设置了session_cursor_cache这个参数之后,Cursor被直接Cache在当前Session的PGA中的,在解析的时候只需要对其语法分析、权限对象分析之后就可以转到PGA中查找了,如果发现完全相同的Cursor,就可以直接去取结果了,也就就是实现了Soft Soft Parse。
不过在计算解析次数的时候是只计算Hard Parse和Soft 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的数值有可能小了,一些频繁调用的SQL在Cache中找不到相同的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$sqlarea的version_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 |
发表评论
-
实用小SQL
2010-04-08 23:57 9341、刷数据 DECLARE CURSOR T1 IS ... -
热表查询
2008-07-03 10:56 1193SELECT Rownum AS Rank, Se ... -
查看临时表空间占用情况
2008-06-18 16:14 2177select (sum (blocks))*8/1000 &q ... -
ORACLE系统进程[转]
2008-06-04 19:00 2051oracle 数据库有五个必需的后台进程,DBWR,LGWR, ... -
ORACLE架构[转]
2008-06-04 18:52 10831、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归 ... -
SQL优化介绍一(转自kiddwyl博客)
2008-06-04 14:07 1234转自: http://ki ... -
查询索引状态
2008-06-04 11:09 1853select t.index_name, t.ta ... -
查询数据库是基于什么查询的
2008-06-03 14:42 1041select * from V$parameterwhere ... -
根据PID查询正在执行的SQL
2008-05-30 10:24 2910select sql_text from v$sqlarea ... -
查询表空间
2008-05-29 21:00 1178PLSQL中,--> REPORT-->Total ... -
根据sid查询SQL
2008-05-22 11:56 2074select t2.sid, t2.serial#, t3.s ... -
查询库中全表扫描的表
2008-05-15 15:14 1044Select sid, serial#, ... -
测试数据库连接命令
2008-05-12 22:04 1111tnsping b22 -
创建位图索引
2008-05-12 20:18 1840create bitmap index ind_flag_bi ... -
转oracle中的hash join详解
2008-05-09 17:34 1790转自:http://blog.csdn.net/4752234 ... -
转:对oracle执行计划相关概念的理解
2008-05-09 17:30 1322转自:http://blog.csdn.net/4 ... -
转:执行计划和执行顺序
2008-05-09 17:29 1075转自:http://blog.csdn.net/4752234 ... -
转:oracle执行计划的一些概念
2008-05-09 17:27 1075转自:http://blog.csdn.net/4752234 ... -
HASH JOIN 和NESTED LOOP
2008-05-08 16:06 4108NESTED LOOP:对于被连接的数据子集较小的情况,嵌套循 ... -
查看空间大小
2008-05-07 10:22 1065[root@rzzydb1]/bea #cd spstimer ...
相关推荐
awr报告awr报告awr报告awr报告
### AWR报告分析 #### 一、概述 自动工作负载资料库(Automatic Workload Repository,简称AWR)是...无论是对于日常维护还是紧急故障处理,AWR报告都能发挥重要作用。希望本文能帮助读者更好地理解和运用这一强大工具。
综上所述,AWR报告的管理与分析是Oracle DBA日常工作中不可或缺的一部分,它提供了对数据库性能的全面洞察,帮助确保系统的稳定性和高效运行。了解并熟练运用AWR,能够极大地提升数据库的运维水平。
通过对AWR报告的分析,可以有效地帮助我们发现并解决数据库性能问题。 #### 抓取指定时间段AWR报告的步骤详解 **第一步:登录至Oracle应用服务器** 使用具备Oracle应用程序执行权限的用户(例如:oracle用户)登录...
AWR(Automatic Workload Repository)是Oracle...总之,"AWR-Format"插件是提升Oracle数据库性能管理效率的一个实用工具,通过其强大的解析和展示功能,可以帮助DBA更高效地分析AWR报告,从而更好地优化数据库性能。
Oracle AWR(Automatic Workload Repository)报告是Oracle数据库性能监控的重要工具,自10g版本开始...报告内容丰富,涵盖了从系统资源利用到SQL执行的各个层面,是Oracle数据库日常管理和性能调优不可或缺的工具。
Oracle AWR(Automatic Workload Repository)...在日常维护中,定期生成和分析AWR报告是确保数据库高效运行的关键步骤之一。对于新手来说,熟悉这个过程是非常必要的,能够快速定位和解决问题,提升数据库的运行效率。
数据库性能分析是数据库管理员(DBA)日常工作中的一项重要任务,而Oracle数据库提供了一种强大的性能分析工具——Automatic Workload Repository(AWR)。AWR报告是AWR的主要输出,它详细记录了数据库在一段时间内...
总的来说,"解读AWR报告"是Oracle DBA日常工作中必不可少的一项技能,它可以帮助我们及时发现和解决问题,保障数据库系统的高效运行。通过学习和实践,每一个IT专业人员都可以成为一名出色的性能优化专家。
### ACOUG-如何分析AWR报告 #### AWR概述 AWR(Automatic Workload Repository)作为Oracle 10g引入的重要组件之一,主要用于存储数据库近期内(默认为7天)活动状态的详细信息。通过对AWR视图的查询,可以生成AWR...
AWR日常数据库分析V02
在日常运维工作中,定期导出和分析这些报告是非常重要的。 此外,Oracle还提供了多种工具和技术来进一步提升数据库性能,如SQL优化器、索引策略调整、内存管理等。综合运用这些技术和工具,可以显著提高Oracle...
Oracle性能分析是数据库管理的关键环节,特别是在处理大型系统和海量数据时。自动工作负载仓库(AWR)报告是Oracle 10g及更高版本中的一个重要工具,用于...在日常数据库维护中,定期查看和分析AWR报告是必不可少的环节。
Oracle AWR(Automatic Workload Repository)报告是Oracle数据库性能监控的重要...总之,Oracle的A WR报告是DBA日常维护和性能调优的重要工具,通过深入理解和有效利用这些报告,能够有效地提升数据库系统的整体性能。
Oracle AWR(Automatic Workload Repository)是Oracle数据库中一个强大的性能监控工具,它定期收集数据库的性能数据,并生成详细的分析报告,帮助DBA诊断和优化系统性能。在Oracle 11g版本中,AWR的功能得到了...
在日常运维中,定期分析AWR报告并进行相应的优化工作是保证数据库健康运行的关键步骤之一。 由于"AWR-Format.rar"是一个压缩文件,用户需要解压后运行其中的程序或脚本,根据提供的说明进行操作。需要注意的是,...
- **日常维护**:定期运行此脚本,可以确保管理员定期收到性能报告,便于及时发现问题。 - **故障排查**:当系统出现性能下降时,可以调出最近一段时间内的AWR报告,通过比较找出问题所在。 - **容量规划**:通过...
`awrrpti.sql` 和 `awrginp.sql`:这些脚本用于生成AWR报告,AWR报告通常包含大量的性能指标和图表,如等待事件分布、Top SQL分析、缓冲区命中率等,是DBA日常性能调优的重要参考。 在使用这些脚本时,确保你有适当...
AWR通过周期性地收集数据库的统计信息,包括系统资源使用情况、SQL语句执行情况等,为数据库管理员提供了深入的性能分析报告,有助于识别和解决问题。 在AWR报告的生成过程中,首先,你需要以Oracle用户的身份,如...
- **集成应用**:ASH信息可以与AWR报告结合使用,以更全面地分析数据库性能。 #### 三、示例:SGA信息提取 以下是一个具体的示例,展示如何查询173-174快照之间的SGA信息: ```sql SELECT SNAP_ID, NAME, VALUE ...