您现在的位置是:首页 >

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

火烧 2022-07-09 10:07:25 1069
用Oracle中的Stat ack诊断数据库性能实例   通过Stat ack我们可以很容易的确定Oracle数据库的瓶颈所在 记录数据库性能状态 也可以使远程技术支持人员迅速了解你的数据库运行状况

用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)

  

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

  产生报告

   borderColorDark=#ffffff cellPadding= width= align=center borderColorLight=# border= > e e >

  SQL>conectperfstat/perfstatSQL>@?/rdbms/admin/spreport

lishixinzhi/Article/program/Oracle/201311/18397  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码