如何从awr中分析硬解析较高的语句
发布网友
发布时间:2022-04-07 21:19
我来回答
共1个回答
热心网友
时间:2022-04-07 22:48
AWR的数据主要有两部分组成:1)保存在内存中的系统负载和性能统计数据,主要通过v$视查询;
2)mmon进程定期以快照(snapshot)的方式将内存中的AWR数据保存到SYSAUX表空间中,主要通过dbA_*视访问。
1.AWR快照的生成默认情况下,每隔一小时自动产生一个快照,保存最近7天的信息,可以通过以下语句查询:sql>selectSNAP_INTERVAL,RETENTIONfromdba_hist_wr_control;SNAP_INTERVALRETENTION----------------------------------------------------------+0000001:00:00.0+0000700:00:00.0可以通过以下语句修改时间间隔和保存时间(以分钟为单位):execdbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>10*24*60);
也可以根据需要随时手动生成快照:execdbms_workload_repository.create_snapshot;2.AWR报告的生成以sysdba运行如下命令:@?/rdbms/admin/awrrpt.sql3.AWR报告的分析策略因为AWR报告非常长,不可能从头到尾一字不漏的去看,要有选择的去看重点部分。
最好能对照的来读,即和系统正常情况下的AWR报告对比,找差异。
AWR报告采用总分的形式,前面是系统的整体情况,后面是各个部分细节,一开始不要陷入细节,先分析系统的整体状况,对于后面的专题分析,要根据关注点的不同,采取跳跃式分析。
还要根据具体业务的不同,决定某种现象是否正常。
系统整体状况方面1)LoadProfile:分析系了解系统整体负载状况,如每秒中的事务数/语句数,每秒/每事务物理读写次数(PhysicalReads/Writes),逻辑读写次数(LogicalReads/Writes),sql语句的解析(Parse),特别是硬解析次数等。
2)InstanceEfficiencyPercentages:各指标都应接近100%,除了:executetoparse(70%以上)和parsecputoparseelapsed。
如果不符合,基本可以确定系统存在性能问题;
但是如果反过来,即都符合,也不能说明系统完全正常,还要看实际情况。
具体状况方面1)Top5TimedEvents:这里列出消耗时间最多的5个等待事件,每种等待说明,都表示一种原因,如:dbfilesequentialread表示按索引访问出现等待,dbfilescatteredreade表示全表扫描访问出现等待事件。
2)TopNsql:根据时间消耗,内存消耗,物理I/O等排序,对相关sql分析执行计划3)如果是rac环境,需要特别关注racStatistic中的相关指标4)sgapga分析5)分析表空间、数据文件I/O
请教一个性能问题,AWR中Redo Size很高
1、REDO 每秒2M并不大吧。2、逻辑读较高,每秒大约10G(1,131,707.0*8K)3、物理读IO也不少。每秒432.5M。4、硬解析也偏高。综上,建议从以下几方面着手:1、查看运行次数较多的SQL,看看是否存在未使用绑定变量的情况。2、查看逻辑读较多的SQL,看看是否可以优化。3、看看是否存在频繁提交的情况。
非结构化数据如何可视化呈现?
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准...
如何每天从awr抓取top sql
1. AWR快照的生成默认情况下,每隔一小时自动产生一个快照,保存最近7天的信息,可以通过以下语句查询:sql>select SNAP_INTERVAL,RETENTION from dba_hist_wr_control;SNAP_INTERVAL RETENTION---+00000 01:00:00.0 +00007 00:00:00.0可以通过以下语句修改时间间隔和保存时间(以分钟为单位):ex...
direct path read高是什么原因
如何分析:*在看awr报告的时候,我们并不需要知道所有性能指标的含义,就可以判断出问题的所在,这些性能指标其实代表了oracle内部实现,对oracle理解的越深,在看awr报告的时候,对数据库性能的判断也会越准确*在看性能指标的时候,心里先要明白,数据库出现性能问题,一般都在三个地方,io,内存,cpu,这三个又是息息相关的(...
如何获取Oracle的当前负载情况
查询sql语句如下:SELECT FROM ( SELECT A.INSTANCE_NUMBER,A.SNAP_ID,B.BEGIN_INTERVAL_TIME + 0 BEGIN_TIME,B.END_INTERVAL_TIME + 0 END_TIME,ROUND(VALUE - LAG( VALUE, 1 , '0')OVER(ORDER BY A.INSTANCE_NUMBER, A.SNAP_ID)) "DB TIME"FROM (SELECT B.SNAP_ID,INSTANCE_NUMBER,...