《高消耗SQL之AWR报告导出及分析》由会员分享,可在线阅读,更多相关《高消耗SQL之AWR报告导出及分析(8页珍藏版)》请在金锄头文库上搜索。
1、-高消耗SQL之AWR报告导出与分析测试部邹家勇c*0069目录高消耗SQL之AWR报告导出与分析1前言3报告导出3获取高消耗语句3语句分析法:31.查看SQL执行时间:32.查看SQL执行方案33.查看trace信息最详细3SQL语句编写考前须知3性能优化3前言由于现网及均出现高消耗现象,导致效劳器性能下降,甚至超时,无法受理业务现象,为了防止这种问题再出现在生产环境。我们可以定时(每天/每两天)抓取部测试环境或测试环境的高消耗,进展分析、优化,使高消耗不再上生产环境,下面是高消耗的获取法,实用于所有基于_10G及以上数据库版本的系统。报告导出AWR由ORACLE自动产生的oracle_10
2、及以上版本,是oracle性能分析的利器,很好很强大,默认1小时采集一次采集时间可修改,采集时间不宜太小,对本身有性能影响,保存天的记录。但是也可以通过DBMS_WORKLOAD_REPOSITORY包来手工创立、删除和修改。使用脚本awrrpt.sql或awrrpti.sql来导出AWR报告,报告格式保存为文本文件或HTML文件。生成AWR报告的步骤如下:前提:登录要有oracle_dba权限1.cd $ORACLE_HOME/RDBMS/ADMIN2.e*port ORACLE_SID=要导出报告的数据库实例名称 如testdb3.sqlplus 用户名/密码testdb4.SQLawrr
3、pt.sql 注:调用awrrpt.sql文件5.输入report_type的值:html 注:确定报告的格式6.输入num_days的值:1 注:选择快照的天数7.输入begin_snap的值:425 注:起始快照8.输入end_snap的值:437 注:完毕快照9.输入report_name的值:testdb_20121224_425_427.html 注:报告生成的名称和位置,默认放在当前路径下10.将报告下载到本地,用浏览器翻开。获取高消耗语句报告中有很多性能分析数据,是常用的性能工具之一,我们主要是获取报告中的语句。翻开我们刚刚生成的“testdb_20121224_425_427.
4、html,找到“SQL Statistics这一节。列表说明SQL ordered by Elapsed TimeSQL 语句执行用总时长,此排序就是按照这个字段进展的。注意该时间不是单个SQL 跑的时间,而是监控围SQL 执行次数的总和时间。单位时间为秒。Elapsed Time = CPU Time + Wait TimeSQL ordered by CPU Time为SQL 语句执行时CPU 占用时间总时长,此时间会小于等于Elapsed Time 时间。单位时间为秒SQL ordered by User I/O Wait Time为等待最长的语句topSQL ordered by Ge
5、ts记录了执行占总buffer gets( 逻辑IO ) 的TOP SQLSQL ordered by Reads记录了执行占总磁盘物理读( 物理IO ) 的TOP SQLSQL ordered by Physical Reads (UnOptimized)记录了执行占总磁盘物理读( 物理IO ) 的TOP SQL系统优化统计,新功能SQL ordered by E*ecutionsSQL 语句在监控围的执行次数总计哪些执行的次数最多,如果是生产环境的话代表业务较频繁。SQL ordered by Parse CallsSQL 的软解析次数的TOP SQLSQL ordered by Shar
6、able Memory录了SQL 占用library cache 的大小的TOP SQL SQL ordered by Version Count记录了SQL 的翻开子游标的TOP SQL SQL ordered by Cluster Wait Time记录了集群的等待时间的SQLplete List of SQL Te*tsql语句列表语句分析法:1. 查看SQL执行时间:Set timing onSQL语句例:SQL set timing onSQL Insert Into Hscdiff.Hc_Subs_Product_Fs_Ch_d (Subsid, Region, Subsprodi
7、d, Prodid, Packageid, Packageprodid, Tariffitemid, Standardtariff, Price, Startdate, Enddate, Status, Changedate, Seqnum, Groupid) Select Subsid, Region, Subsprodid, Prodid, Packageid, Packageprodid, Tariffitemid, Standardtariff, Price, Startdate, Enddate, Status, Changedate, Seqnum, Groupid From Fs
8、hsc.Hsc_Subs_Product2002 Where Tariffitemid Is Not Null And Tariffitemid In (Select Tariffitemid From Fshsc.Hsc_Ps_Ratingrelation a Where a.Tariffitemcode In (Select Disccode From Fshsc.Hsc_Ps_Ratingdisccode Where Length(Disccode) = 4) And Rownum e*plain plan for Insert Into Hscdiff.Hc_Subs_Product_
9、Fs_Ch_d (Subsid, Region, Subsprodid, Prodid, Packageid, Packageprodid, Tariffitemid, Standardtariff, Price, Startdate, Enddate, Status, Changedate, Seqnum, Groupid) Select Subsid, Region, Subsprodid, Prodid, Packageid, Packageprodid, Tariffitemid, Standardtariff, Price, Startdate, Enddate, Status, C
10、hangedate, Seqnum, Groupid From Fshsc.Hsc_Subs_Product2002 Where Tariffitemid Is Not Null And Tariffitemid In (Select Tariffitemid From Fshsc.Hsc_Ps_Ratingrelation a Where a.Tariffitemcode In (Select Disccode From Fshsc.Hsc_Ps_Ratingdisccode Where Length(Disccode) = 4) And Rownum select * from TABLE
11、(dbms_*plan.display()PLAN_TABLE_OUTPUT-Plan hash value: 1406724898-| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |-| 0 | INSERT STATEMENT | | 4 | 452 | 5632 (1)| 00:01:08 | 1 | LOAD TABLE CONVENTIONAL | HC_SUBS_PRODUCT_FS_CH_D | | | | |* 2 | COUNT STOPKEY | | | | | | 3 | NESTED LOOPS | | | | | | 4 | NESTED L