通过Statspack我们可以很容易的确定Oracle数据库的瓶颈所在,记录数据库性能状态,也可以使远程技术支持人员迅速了解你的数据库运行状况。因此了解和使用Statspack对于DBA来说至关重要。
整理分析结果
可以通过各种工具建立图表,使我们收集的数据更直观,更有说服力。
以下是我给一个客户做的分析报告的实例。
1.物理读写IO操作:
观察物理IO访问,可以看出数据库日常访问的峰值及繁忙程度。
脚本:此脚本按时间生成统计数据(注:以下示例以8i为基础,SQL脚本中引用的statistic#在不同版本代表的意义可能不同,对于9i等版本,你应该修改相应参数值)
SQL代码:
selectsubstr(to_char(snap_time,’yyyy-mm-ddHH24:MI:SS’),12),(newreads.value-oldreads.value)reads,(newwrites.value-oldwrites.value)writesfromperfstat.stats$sysstatoldreads,perfstat.stats$sysstatnewreads,perfstat.stats$sysstatoldwrites,perfstat.stats$sysstatnewwrites,perfstat.stats$snapshotsnwherenewreads.snap_id=sn.snap_idandnewwrites.snap_id=sn.snap_idandoldreads.snap_id=sn.snap_id-1andoldwrites.snap_id=sn.snap_id-1andoldreads.statistic#=40andnewreads.statistic#=40andoldwrites.statistic#=41andnewwrites.statistic#=41and(newreads.value-oldreads.value)>0and(newwrites.value-oldwrites.value)>0 selectsubstr(to_char(snap_time,’yyyy-mm-ddHH24:MI:SS’),12),(newreads.value-oldreads.value)reads,(newwrites.value-oldwrites.value)writesfromperfstat.stats$sysstatoldreads,perfstat.stats$sysstatnewreads,perfstat.stats$sysstatoldwrites,perfstat.stats$sysstatnewwrites,perfstat.stats$snapshotsnwherenewreads.snap_id=sn.snap_idandnewwrites.snap_id=sn.snap_idandoldreads.snap_id=sn.snap_id-1andoldwrites.snap_id=sn.snap_id-1andoldreads.statistic#=40andnewreads.statistic#=40andoldwrites.statistic#=41andnewwrites.statistic#=41and(newreads.value-oldreads.value)>0and(newwrites.value-oldwrites.value)>0/ |
图表:
分析:
从趋势图中我们可以看出,数据库每日读操作较为平稳,数据量大约在4000左右。在下午2点到5点期间比较繁忙。峰值达到150000左右。
数据库写操作变化也比较平稳,数据改变量在80000左右,凌晨一点半到早晨8点半左右数据库访问极少。这是一个以写为主的数据库,我们需要更多注意的是写竞争。
2.Buffer命中率
Sql代码
select
substr(to_char(snap_time,’yyyy-mm-ddHH24:MI’),12),
round(100*(((a.value-e.value)+(b.value-f.value))-(c.value-g.value))/
((a.value-e.value)+(b.value-f.value)))
“BUFFERHITRATIO”
from
perfstat.stats$sysstata,
perfstat.stats$sysstatb,
perfstat.stats$sysstatc,
perfstat.stats$sysstatd,
perfstat.stats$sysstate,
perfstat.stats$sysstatf,
perfstat.stats$sysstatg,
perfstat.stats$snapshotsn
where
a.snap_id=sn.snap_id
and
b.snap_id=sn.snap_id
and
c.snap_id=sn.snap_id
and
d.snap_id=sn.snap_id
and
e.snap_id=sn.snap_id-1
and
f.snap_id=sn.snap_id-1
and
g.snap_id=sn.snap_id-1
and
a.statistic#=39
and
e.statistic#=39
and
b.statistic#=38
and
f.statistic#=38
and
c.statistic#=40
and
g.statistic#=40
and
d.statistic#=41
select
substr(to_char(snap_time,’yyyy-mm-ddHH24:MI’),12),
round(100*(((a.value-e.value)+(b.value-f.value))-(c.value-g.value))/
((a.value-e.value)+(b.value-f.value)))
“BUFFERHITRATIO”
from
perfstat.stats$sysstata,
perfstat.stats$sysstatb,
perfstat.stats$sysstatc,
perfstat.stats$sysstatd,
perfstat.stats$sysstate,
perfstat.stats$sysstatf,
perfstat.stats$sysstatg,
perfstat.stats$snapshotsn
where
a.snap_id=sn.snap_id
and
b.snap_id=sn.snap_id
and
c.snap_id=sn.snap_id
and
d.snap_id=sn.snap_id
and
e.snap_id=sn.snap_id-1
and
f.snap_id=sn.snap_id-1
and
g.snap_id=sn.snap_id-1
and
a.statistic#=39
and
e.statistic#=39
and
b.statistic#=38
and
f.statistic#=38
and
c.statistic#=40
and
g.statistic#=40
and
d.statistic#=41
图表:
分析:
Buffer(bufferhitratio)命中率是考察Oracle数据库性能的重要指标,它代表在内存中找到需要数据的比率,一般来说,如果该值小于90%,则可能说明数据库存在大量代价昂贵的IO操作,数据库需要调整。我们数据库的buffer命中率几乎接近100%,最低值在95%左右,这个比率是比较优化的。
安装statspack
SQL>connect/assysdba SQL>@?/rdbms/admin/spcreate |
卸载
SQL>connect/assysdbaSQL>@?/rdbms/admin/spdrop/*收集信息前把timed_statistics=true;altersystemsettimed_statistics=true;*/ |
收集信息
SQL>connectperfstat/perfstatSQL>executestatspack.snap; |
自动收集
SQL>connectperfstat/perfstatSQL>@?/rdbms/admin/spauto |
删掉自动收集的job.
SQL>select*fromuser_jobs;SQL>execdbms_job.remove(JOB_ID) /*executestatspack.snap(i_snap_level=>10,i_modify_parameter=>’true’);Levels=5Additionaldata:SQLStatementsLevels=6Thislevelincludesallstatisticsgatheredinthelowerlevel(s). Levels=7segmentslevelstatisticsLevels=10Additionalstatistics:Childlatchesi_modify_parameter=>’true’/’false’决定是否保存level的值,下一次执行继续使用*/ |
产生报告
SQL>conectperfstat/perfstatSQL>@?/rdbms/admin/spreport |
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
甲骨文自治数据库亮相 带来云计算新希望
早前甲骨文还不在云计算公司之列,而现在该公司正在迅速弥补其失去的时间。甲骨文的云计算核心是甲骨文自治数据库(O […]
-
2017年12月数据库流行度排行榜 定格岁末排名瞬间
数据库知识网站DB-engines最近更新的2017年12月份数据库流行度排名情况是否能提供更多的看点呢?TechTarget数据库网站将与您分享12月份的榜单排名情况,让我们拭目以待。
-
2017年11月数据库流行度排行榜 半数以上数据库积分减少
数据库知识网站DB-engines更新了2016年11月份的数据库流行度排行榜。TechTarget数据库网站将与您一同关注11月份的榜单排名情况。
-
控制合约 不再畏惧Oracle
许多公司都与Oracle有无限制授权协议,他们害怕离开这个协议,所以就证明他们在使用Oracle的软件,即使因为需求单独购买部分授权许可也可能总体是省钱的。