怎么理解Oracle响应时间分析报告
本篇内容主要讲解“怎么理解Oracle响应时间分析报告”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Oracle响应时间分析报告”吧!
Oracle响应时间分析报告分为系统级与会话级,报告相比awr报告更加直观清楚有助于快速分析定位性能问题,这里使用OSM工具来生成这两种类型的报告,该工具是由Craig Shallahamer所写。
在数据库中创建osm用户并安装osm脚本所需要使用的对象
[oracle@db1~]$sqlplus/assysdbaSQL*Plus:Release11.2.0.4.0ProductiononWedFeb2715:43:542019Copyright(c)1982,2013,Oracle.Allrightsreserved.Connectedto:OracleDatabase11gEnterpriseEditionRelease11.2.0.4.0-64bitProductionWiththePartitioning,RealApplicationClusters,AutomaticStorageManagement,OLAP,DataMiningandRealApplicationTestingoptionsSQL>createuserosmidentifiedby"osm"defaulttablespacesxtemporarytablespacetemp;Usercreated.SQL>grantconnect,resource,dbatoosm;Grantsucceeded.SQL>connosm/osmConnected.SQL>execsys.dbms_lock.sleep(5);PL/SQLproceduresuccessfullycompleted.SQL>@osmprep.sqlOraPubSystemMonitor-Interactive(OSM-I)installationscript.(c)1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008byOraPub,Inc.(c)2009,2010,2011,2012,2013,2014,2015byOraPub,Inc.Thereisabsolutelynoguaranteewiththissoftware.Youmayusethissoftwareatyourownrisk,notOraPub'srisk.Novalueisimpliedorstated.Youmayneedtorun$ORACLE_HOME/rdbms/admin/catblock.sqlConnectastheuserwhowillbeusingtheOSM.PressENTERtocontinue......TocategorizewaiteventsforOSMreports,run:Forpre-10gsystems,runevent_type_nc.sqlFor10gandbeyond,runevent_type.sqlOnceyoucateogrizethewaitevents,theinstallationiscomplete.Menuisosm.sqlENJOY!!SQL>@event_type.sqlfile:event_type.sqlforOracle10gandbeyond...AbouttocategorizewaiteventsforOSMreports.PressENTERtore-createtheo$event_typetable......OraPubCategorizationSummary-----------------------------------------------TYPECOUNT(*)------------------------------bogus126ior20iow59other1162COUNT(*)----------1367OracleCategorizationSummary-----------------------------------------------WAIT_CLASSCOUNT(*)------------------------------Administrative55Application17Cluster50Commit2Concurrency33Configuration24Idle96Network35Other958Queueing9Scheduler8WAIT_CLASSCOUNT(*)------------------------------SystemI/O32UserI/O4813rowsselected.COUNT(*)----------1367
OSM工具包中的rtsess.sql是用来生成会话级报告,rtsysx.sql,rtpctx.sql用来生成实例级报告
实例级Oracle响应时间分析报告是基于rtsysx.sql脚本,它将捕获指定时间间隔内实例范围内关于响应时间方面的详细信息。这个脚本将对实例级统计信息(v$sysstat,v$sys_time_model)与实例级等待事件统计信息(v$system_event)生成快照。下面的例子在120秒的时间间隔内,脚本每10秒被唤醒一次,从v$session视图中查询活动的SQL并存储当前正在运行的SQL_ID。在报告生命周期结束后,其它的统计住处快照会生成,计算出时间差异并生成报告。几乎报告中的所有信息都可以从Statspack或AWR报告中进行收集。使用rtsysx.sql脚可以生成格式化的输出可以快速的执行Oracle响应时间分析。使用脚本rtsysx.sql脚本生成的报告包括以下几个组成部分:
.第一部分是关注工作量负载情况
.第二部分是高级别的响应时间分类信息
.第三部分是IO与非IO情况
.第四部分是没有使用绑定变量的SQL语句
.对于Oracle 10g及以上版本,第五部分是关于操作系统CPU利用率
下面执行rtsysx.sql脚本,执行生命周期是120秒,脚本每10秒被唤醒一次。
SQL>@rtsysx.sql12010OraPub'sResponseTimeAnalysis(RTA)interactivesystemleveldeltareportInitializingresponsetimedeltaobjects...SleepingandprobingactiveSQLfornext120seconds...Donesleeping...gatheringandstoringcurrentvalues...***ResponseTimeRatioandWorkloadMetricsRTRatioOraTrx/sBlockChanges/sUserCalls/sExecs/s---------------------------------------------------------0.3250.5490.6327.41100.00***ResponseTimeSystemSummary(delta-interactive-systemlevel)TotCPUCPUSPCPUBGCPUParseCPURecurTotWaitIOWaitOtherWaitTimeTimeTimeTimeTimeOraCPUTimeTimeTime%%(sec)(sec)(sec)(sec)(sec)Util%(sec)(sec)(sec)IOWaitOtherWait----------------------------------------------------------------------------------------------342682150.417151928***I/OWaitTimeSummaryw/EventDetails(delta-interactive-systemlevel)IOWaitIOWRITEIOREADTimeWaitTimeWaitTime%IO%IO(sec)(sec)(sec)WriteRead------------------------------------151056634TotCallAvgCallWaitTimeWaitTimeIOWaitEventR,W%(sec)(ms)TotWaits---------------------------------------------------------------------------------------------------LGWRrealtimeapplysyncW578.6965.83132dbfilesequentialreadR314.674.97940LGWR-LNSwaitonchannelW50.711.74408***OtherWaitTime(non-I/O)EventDetail(delta-interactive-systemlevel)TotCallAvgCallWaitTimeWaitTimeNonIO(other)WaitEvent%(sec)(ms)TotWaits------------------------------------------------------------------------------------------------gccurrentblock2-way260.350.62569gccrgrant2-way170.230.48484reliablemessage100.141.21116osthreadstartup100.1423.336enq:US-contention60.080.49163librarycachepin60.080.56144librarycachelock40.060.6198gccurrentgrant2-way40.050.45111***SQLActivityDetailsDuringProbePhysRdsLogRdsTotTimeCPUTimeRowsStmtSQLIDSec/EXE(k)(k)(sec)(sec)Sec/PIOSec/LIORuns(k)SortsType----------------------------------------------------------------------------------------------------gz5bfrcjq060u0.01000.30.3#######0.00124023INSERc77k33u5u7zgc0.060170.10.1#######0.000202SELEC8fb44rrg8a5rh0.130150.10.1#######0.000102SELEC98564h4vavfcm-25.78-0-0-51.6-0.651.5520.276200inser***SQLSimilarStatementsDuringDeltaSQLStatement(showniffirst10chars)Count------------------------------------------------------------------------------SELECTNVL2***OSCPUBreakdownDuringDeltaCategoryPercent-------------------------------------------Idle96.51IOWait0.44Nice0.00System0.38User2.47Deltais123.53secondsNumberofCPUcoresis80
报告的第一部分:Response Time Ratio and Workload Metrics
报告的第一部分提供了与Statspack与AWR中Load Profile部分相同的Workload Metrics。这部分信息在比较响应时间快照之间的差异时非常有用。如果工作负载减少那么可以预期响应时间减少。
***ResponseTimeRatioandWorkloadMetricsRTRatioOraTrx/sBlockChanges/sUserCalls/sExecs/s---------------------------------------------------------0.3250.5490.6327.41100.00
报告的第二部分:Response Time System Summary
这部分信息显示总的CPU时间为34秒,总的等待时间为17秒,也可以说是在120秒的时间间隔内,Oracle进程消耗的CPU时间只有34秒,消耗的等待时间只有17秒。而且还可以看到17秒的等待时间中IO等待时间为15秒,非IO等待时间为1秒。在120秒的时间间隔内,Oracle进程只消耗了总CPU可用时间的0.4%,这个数据是使用Oracle进程消耗的总CPU时间除以主机可用CPU时间。在120秒时间间隔的主机的CPU可用时间为CPU的内核数量乘以报告时间间隔。在这里主机的CPU内核数量为80,报告时间间隔为120秒,所以Oracle所消耗的CPU时间为34/(120*80)=0.4%。如果主机上只运行该实例,那么它也提供了操作系统CPU利用率给我们,因此也不用执行操作系统命令来查看CPU利用情况了。
***ResponseTimeSystemSummary(delta-interactive-systemlevel)TotCPUCPUSPCPUBGCPUParseCPURecurTotWaitIOWaitOtherWaitTimeTimeTimeTimeTimeOraCPUTimeTimeTime%%(sec)(sec)(sec)(sec)(sec)Util%(sec)(sec)(sec)IOWaitOtherWait----------------------------------------------------------------------------------------------342682150.417151928
报告的第三部分:I/O Wait Time Summary w/Event Details
如果IO有问题,那么你肯定想知道是读还是写有问题,管理员可以从了解IO负载类型来给出相关的解决方案。比如一个IO读问题可以通过将常被访问的数据块保存在Oracle Cache中来使用IO读的影响降低到最小,如果一个IO写问题可以通过配置,比如联机重做日志文件的数量与大小来使IO写的影响降低到最小。从报告中可以看到IO总等待时间为15秒,其中IO写为10秒,IO读为5秒。其中LGWR real time apply sync事件平均等待一次的时间是65.83毫秒,这是因为配置了ADG,对于同城异地容灾来说这个等待时间也还是正常的,db file sequential read事件平均等待一次的时间为4.97毫秒也是正常的。
***I/OWaitTimeSummaryw/EventDetails(delta-interactive-systemlevel)IOWaitIOWRITEIOREADTimeWaitTimeWaitTime%IO%IO(sec)(sec)(sec)WriteRead------------------------------------151056634TotCallAvgCallWaitTimeWaitTimeIOWaitEventR,W%(sec)(ms)TotWaits---------------------------------------------------------------------------------------------------LGWRrealtimeapplysyncW578.6965.83132dbfilesequentialreadR314.674.97940LGWR-LNSwaitonchannelW50.711.74408
报告的第四部分:Other Wait Time (non-I/O) Event Detail
这部分显示了非IO等待事件的汇总与底层相关的等待事件详细信息,因为非IO等待时间总共才只有1秒,这并不影响性能。所以相关的等待事件我们也就不用查看了。
***OtherWaitTime(non-I/O)EventDetail(delta-interactive-systemlevel)TotCallAvgCallWaitTimeWaitTimeNonIO(other)WaitEvent%(sec)(ms)TotWaits------------------------------------------------------------------------------------------------gccurrentblock2-way260.350.62569gccrgrant2-way170.230.48484reliablemessage100.141.21116osthreadstartup100.1423.336enq:US-contention60.080.49163librarycachepin60.080.56144librarycachelock40.060.6198gccurrentgrant2-way40.050.45111
报告的第五部分:SQL Activity Details During Probe
为了帮助分析应用程序,报告捕获了直接影响响应时间的SQL语句并显示了资源消耗情况,以下面的数据来看,在捕获的SQL语句所消耗的资源都是很少的不会影响性能,其中语句的物理读为0,逻辑读总大小也才32K。
***SQLActivityDetailsDuringProbePhysRdsLogRdsTotTimeCPUTimeRowsStmtSQLIDSec/EXE(k)(k)(sec)(sec)Sec/PIOSec/LIORuns(k)SortsType----------------------------------------------------------------------------------------------------gz5bfrcjq060u0.01000.30.3#######0.00124023INSERc77k33u5u7zgc0.060170.10.1#######0.000202SELEC8fb44rrg8a5rh0.130150.10.1#######0.000102SELEC98564h4vavfcm-25.78-0-0-51.6-0.651.5520.276200inser
报告的第六部分:SQL Similar Statements During Delta
在执行rtsysx.sql脚本所指定的第二个参数就与查找类似SQL语句相关,类似SQL语句是除了where子句中的过滤与连接条件不同之外其它完全相同的语句。第二个参数我们指定的是10,也就是说类似语句会被统计且统计数大于1的语句的前10个字符才会被显示。
***SQLSimilarStatementsDuringDeltaSQLStatement(showniffirst10chars)Count------------------------------------------------------------------------------SELECTNVL2
报告的第七部分:Operating System CPU Utilization
这部分显示了操作系统使用的详细情况。从Oracle 10g开始,Oracle捕获操作系统CPU的使用的详细信息并且这些信息可以通过v$osstat视图来查看。
***OSCPUBreakdownDuringDeltaCategoryPercent-------------------------------------------Idle96.51IOWait0.44Nice0.00System0.38User2.47Deltais123.53secondsNumberofCPUcoresis80
会话级Oracle响应时间分析报告
执行脚本rtsess9.sql来对指定会话1110来生成会话级Oracle响应时间分析报告,从下面的报告中可以看到会话的响应时间为699.29秒,其中队列时间为608.20秒,非计数时间为91.09秒,而队列时间中IO队列时间只有0.3秒,Net+Client队列时间占了607.73秒。这说明会话一直在等待客户端程序进行调用。
SQL>@rtsess91110===================================================================SessionLevelResponseTimeProfileOraclesession1110CPUstatisticsnumberis12......SessionlevelresponsetimedetailsforSID1110***ResponseTimeSummaryResponseServiceQueueUnaccount%CPU%Queue%UATTime(sec)Time(sec)Time(sec)Time(sec)RTRTRT[rt=st+qt+uat][st][qt][uat][st/rt][qt/rt][uat/rt]---------------------------------------------------------------699.290.00608.2091.090.0086.9713.03***QueueTimeSummaryQTQTQTQueueTime(sec)I/O(sec)Net+Client(sec)Other(sec)[qio+qnc+qot][qio][qnc][qot]------------------------------------------------608.200.03607.730.44***QueueTimeIOTimingDetailQTQTQTI/O(sec)WriteI/O(sec)ReadI/O(sec)%WritesTime%ReadTime[tio=wio+rio][wio][rio][wio/tio][rio/tio]----------------------------------------------------------------0.030.030.0099.970.00***QueueTimeIOEventTimingDetailWaitTimeWaitEventName(sec)-------------------------------------------------directpathwrite0.01logfilesync0.02***QueueTimeOtherEventTimingDetailWaitTimeWaitEventName(sec)-------------------------------------------------gccrblock2-way0.08librarycachepin0.01gccurrentblockcongested0.01gccurrentblock2-way0.31rowcachelock0.01eventsinwaitclassOther0.01librarycachelock0.01***WaitEventTimeNotCategorized(forQA)......
如果应用程序用户与Oracle服务器进程都在等待这是不正常的。如果用户已经执行了命令并且正等待命令执行结束,同时,相关的Oracle服务器进程正等待从客户端进程接收信息,那么在这两者之间存在问题。那么大概问题区域就是网络与客户端进程了。
到此,相信大家对“怎么理解Oracle响应时间分析报告”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。