简单的数据库实例 用Oracle中的Statspack诊断数据库性能实例
用Oracle中的Statspack诊断数据库性能实例
通过Statspack我们可以很容易的确定Oracle数据库的瓶颈所在 记录数据库性能状态 也可以使远程技术支持人员迅速了解你的数据库运行状况 因此了解和使用Statspack对于DBA来说至关重要
整理分析结果
可以通过各种工具建立图表 使我们收集的数据更直观 更有说服力 以下是我给一个客户做的分析报告的实例
.物理读写IO操作
观察物理IO访问 可以看出数据库日常访问的峰值及繁忙程度
脚本 此脚本按时间生成统计数据(注:以下示例以 i为基础 SQL脚本中引用的statistic#在不同版本代表的意义可能不同 对于 i等版本 你应该修改相应参数值)
SQL代码
selectsubstr(to_char(snap_time yyyy mm ddHH :MI:SS ) ) (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 andoldwrites snap_id=sn snap_id andoldreads statistic#= andnewreads statistic#= andoldwrites statistic#= andnewwrites statistic#= and(newreads value oldreads value)> and(newwrites value oldwrites value)>
selectsubstr(to_char(snap_time yyyy mm ddHH :MI:SS ) ) (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 andoldwrites snap_id=sn snap_id andoldreads statistic#= andnewreads statistic#= andoldwrites statistic#= andnewwrites statistic#= and(newreads value oldreads value)> and(newwrites value oldwrites value)> /
图表
)this style width= ; border= ffan= done >
分析
从趋势图中我们可以看出 数据库每日读操作较为平稳 数据量大约在 左右 在下午 点到 点期间比较繁忙 峰值达到 左右
数据库写操作变化也比较平稳 数据改变量在 左右 凌晨一点半到早晨 点半左右数据库访问极少 这是一个以写为主的数据库 我们需要更多注意的是写竞争
.Buffer命中率
Sql代码
selectsubstr(to_char(snap_time yyyy mm ddHH :MI ) ) round( *(((a value e value)+(b value f value)) (c value g value))/((a value e value)+(b value f value))) BUFFERHITRATIO fromperfstat stats$sysstata perfstat stats$sysstatb perfstat stats$sysstatc perfstat stats$sysstatd perfstat stats$sysstate perfstat stats$sysstatf perfstat stats$sysstatg perfstat stats$snapshotsnwherea snap_id=sn snap_idandb snap_id=sn snap_idandc snap_id=sn snap_idandd snap_id=sn snap_idande snap_id=sn snap_id andf snap_id=sn snap_id andg snap_id=sn snap_id anda statistic#= ande statistic#= andb statistic#= andf statistic#= andc statistic#= andg statistic#= andd statistic#=
selectsubstr(to_char(snap_time yyyy mm ddHH :MI ) ) round( *(((a value e value)+(b value f value)) (c value g value))/((a value e value)+(b value f value))) BUFFERHITRATIO fromperfstat stats$sysstata perfstat stats$sysstatb perfstat stats$sysstatc perfstat stats$sysstatd perfstat stats$sysstate perfstat stats$sysstatf perfstat stats$sysstatg perfstat stats$snapshotsnwherea snap_id=sn snap_idandb snap_id=sn snap_idandc snap_id=sn snap_idandd snap_id=sn snap_idande snap_id=sn snap_id andf snap_id=sn snap_id andg snap_id=sn snap_id anda statistic#= ande statistic#= andb statistic#= andf statistic#= andc statistic#= andg statistic#= andd statistic#=
图表
image javascript:return big(this) height= alt= src= //img educity cn/img_ / / / jpg width= javascript:if(this width> )this style width= ; border= ffan= done >
分析
Buffer(bufferhitratio)命中率是考察Oracle数据库性能的重要指标 它代表在内存中找到需要数据的比率 一般来说 如果该值小于 % 则可能说明数据库存在大量代价昂贵的IO操作 数据库需要调整 我们数据库的buffer命中率几乎接近 % 最低值在 %左右 这个比率是比较优化的
安装statspack
borderColorDark=#ffffff cellPadding= width= align=center borderColorLight=# border= > e e >
SQL>connect/assysdba
SQL>@?/rdbms/admin/spcreate
卸载
borderColorDark=#ffffff cellPadding= width= align=center borderColorLight=# border= > e e >
SQL>connect/assysdbaSQL>@?/rdbms/admin/spdrop
收集信息
borderColorDark=#ffffff cellPadding= width= align=center borderColorLight=# border= > e e >
SQL>connectperfstat/perfstatSQL>executestatspack snap;
自动收集 borderColorDark=#ffffff cellPadding= width= align=center borderColorLight=# border= > e e >
SQL>connectperfstat/perfstatSQL>@?/rdbms/admin/spauto
删掉自动收集的job
borderColorDark=#ffffff cellPadding= width= align=center borderColorLight=# border= > e e >
SQL>select*fromuser_jobs;
SQL>execdbms_job remove(JOB_ID)

产生报告
borderColorDark=#ffffff cellPadding= width= align=center borderColorLight=# border= > e e >
SQL>conectperfstat/perfstatSQL>@?/rdbms/admin/spreport
lishixinzhi/Article/program/Oracle/201311/18397