Rumah > pangkalan data > tutorial mysql > 用Oracle中的Statspack诊断数据库性能实例

用Oracle中的Statspack诊断数据库性能实例

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-07 15:15:28
asal
1270 orang telah melayarinya

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 通过Statspack我们可以很容易的确定Oracle数据库的瓶颈所在,记录数据库性能状态,也可以使远程技术支持人员迅速了解你的数据库运行状况。因此了解和使用Statspack对于DBA来说至关重要。 整理分析结

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

  通过Statspack我们可以很容易的确定Oracle数据库的瓶颈所在,记录数据库性能状态,也可以使远程技术支持人员迅速了解你的数据库运行状况。因此了解和使用Statspack对于DBA来说至关重要。

  整理分析结果

  可以通过各种工具建立图表,使我们收集的数据更直观,更有说服力。
以下是我给一个客户做的分析报告的实例。

  1.物理读写IO操作:

  观察物理IO访问,可以看出数据库日常访问的峰值及繁忙程度。

  脚本:此脚本按时间生成统计数据(注:以下示例以8i为基础,SQL脚本中引用的statistic#在不同版本代表的意义可能不同,对于9i等版本,你应该修改相应参数值)

  SQL代码

select<br>substr(to_char(snap_time,'yyyy-mm-ddHH24:MI:SS'),12),<br>(newreads.value-oldreads.value)reads,<br>(newwrites.value-oldwrites.value)writes<br>from<br>perfstat.stats$sysstatoldreads,<br>perfstat.stats$sysstatnewreads,<br>perfstat.stats$sysstatoldwrites,<br>perfstat.stats$sysstatnewwrites,<br>perfstat.stats$snapshotsn<br>where<br>newreads.snap_id=sn.snap_id<br>and<br>newwrites.snap_id=sn.snap_id<br>and<br>oldreads.snap_id=sn.snap_id-1<br>and<br>oldwrites.snap_id=sn.snap_id-1<br>and<br>oldreads.statistic#=40<br>and<br>newreads.statistic#=40<br>and<br>oldwrites.statistic#=41<br>and<br>newwrites.statistic#=41<br>and<br>(newreads.value-oldreads.value)>0<br>and<br>(newwrites.value-oldwrites.value)>0<p></p>
<p>select<br>substr(to_char(snap_time,'yyyy-mm-ddHH24:MI:SS'),12),<br>(newreads.value-oldreads.value)reads,<br>(newwrites.value-oldwrites.value)writes<br>from<br>perfstat.stats$sysstatoldreads,<br>perfstat.stats$sysstatnewreads,<br>perfstat.stats$sysstatoldwrites,<br>perfstat.stats$sysstatnewwrites,<br>perfstat.stats$snapshotsn<br>where<br>newreads.snap_id=sn.snap_id<br>and<br>newwrites.snap_id=sn.snap_id<br>and<br>oldreads.snap_id=sn.snap_id-1<br>and<br>oldwrites.snap_id=sn.snap_id-1<br>and<br>oldreads.statistic#=40<br>and<br>newreads.statistic#=40<br>and<br>oldwrites.statistic#=41<br>and<br>newwrites.statistic#=41<br>and<br>(newreads.value-oldreads.value)>0<br>and<br>(newwrites.value-oldwrites.value)>0<br>/</p>
Salin selepas log masuk

  图表:

用Oracle中的Statspack诊断数据库性能实例

  分析:

  从趋势图中我们可以看出,数据库每日读操作较为平稳,数据量大约在4000左右。在下午2点到5点期
间比较繁忙。峰值达到150000左右。

  数据库写操作变化也比较平稳,数据改变量在80000左右,凌晨一点半到早晨8点半左右数据库访问极少。
这是一个以写为主的数据库,我们需要更多注意的是写竞争。

  2.Buffer命中率

  Sql代码

<br>select<br>substr(to_char(snap_time,'yyyy-mm-ddHH24:MI'),12),<br>round(100*(((a.value-e.value)+(b.value-f.value))-(c.value-g.value))/<br>((a.value-e.value)+(b.value-f.value)))<br>"BUFFERHITRATIO"<br>from<br>perfstat.stats$sysstata,<br>perfstat.stats$sysstatb,<br>perfstat.stats$sysstatc,<br>perfstat.stats$sysstatd,<br>perfstat.stats$sysstate,<br>perfstat.stats$sysstatf,<br>perfstat.stats$sysstatg,<br>perfstat.stats$snapshotsn<br>where<br>a.snap_id=sn.snap_id<br>and<br>b.snap_id=sn.snap_id<br>and<br>c.snap_id=sn.snap_id<br>and<br>d.snap_id=sn.snap_id<br>and<br>e.snap_id=sn.snap_id-1<br>and<br>f.snap_id=sn.snap_id-1<br>and<br>g.snap_id=sn.snap_id-1<br>and<br>a.statistic#=39<br>and<br>e.statistic#=39<br>and<br>b.statistic#=38<br>and<br>f.statistic#=38<br>and<br>c.statistic#=40<br>and<br>g.statistic#=40<br>and<br>d.statistic#=41<p></p>
<p>select<br>substr(to_char(snap_time,'yyyy-mm-ddHH24:MI'),12),<br>round(100*(((a.value-e.value)+(b.value-f.value))-(c.value-g.value))/<br>((a.value-e.value)+(b.value-f.value)))<br>"BUFFERHITRATIO"<br>from<br>perfstat.stats$sysstata,<br>perfstat.stats$sysstatb,<br>perfstat.stats$sysstatc,<br>perfstat.stats$sysstatd,<br>perfstat.stats$sysstate,<br>perfstat.stats$sysstatf,<br>perfstat.stats$sysstatg,<br>perfstat.stats$snapshotsn<br>where<br>a.snap_id=sn.snap_id<br>and<br>b.snap_id=sn.snap_id<br>and<br>c.snap_id=sn.snap_id<br>and<br>d.snap_id=sn.snap_id<br>and<br>e.snap_id=sn.snap_id-1<br>and<br>f.snap_id=sn.snap_id-1<br>and<br>g.snap_id=sn.snap_id-1<br>and<br>a.statistic#=39<br>and<br>e.statistic#=39<br>and<br>b.statistic#=38<br>and<br>f.statistic#=38<br>and<br>c.statistic#=40<br>and<br>g.statistic#=40<br>and<br>d.statistic#=41</p>
Salin selepas log masuk

  图表:

用Oracle中的Statspack诊断数据库性能实例

  分析:

  Buffer(bufferhitratio)命中率是考察Oracle数据库性能的重要指标,它代表在内存中找到需要数据的比
率,一般来说,如果该值小于90%,则可能说明数据库存在大量代价昂贵的IO操作,数据库需要调整。
我们数据库的buffer命中率几乎接近100%,最低值在95%左右,这个比率是比较优化的。

  安装statspack

SQL>connect/assysdba<p></p>
<p>SQL>@?/rdbms/admin/spcreate</p>
Salin selepas log masuk

  卸载

SQL>connect/assysdba<br>SQL>@?/rdbms/admin/spdrop
Salin selepas log masuk
/*<br>收集信息前把timed_statistics=true;<br>altersystemsettimed_statistics=true;<br>*/
Salin selepas log masuk

  收集信息

SQL>connectperfstat/perfstat<br>SQL>executestatspack.snap;
Salin selepas log masuk

  自动收集

SQL>connectperfstat/perfstat<br>SQL>@?/rdbms/admin/spauto
Salin selepas log masuk

  删掉自动收集的job.

SQL>select*fromuser_jobs;<p></p><p>SQL>execdbms_job.remove(JOB_ID)
</p><p>/*<br>executestatspack.snap(i_snap_level=>10,i_modify_parameter=>'true');<br>Levels=5Additionaldata:SQLStatements<br>Levels=6Thislevelincludesallstatisticsgatheredinthelowerlevel(s).
</p><p>Levels=7segmentslevelstatistics<br>Levels=10Additionalstatistics:Childlatches<br>i_modify_parameter=>'true'/'false'决定是否保存level的值,下一次执行继续使用<br>*/</p>
Salin selepas log masuk

  产生报告

SQL>conectperfstat/perfstat<br>SQL>@?/rdbms/admin/spreport
Salin selepas log masuk

用Oracle中的Statspack诊断数据库性能实例

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan