Oracle数据库性能分析工具介绍

        最近在做一个性能监控的项目,主要是监控主机和数据库的基本性能,主机采用JNI方式采集,数据通过各种方式进行采集(根据不同的数据库使用不同的方式),主要以JDBC方式为主其他数据库分析工具辅助。做项目的过程中对Oracle的Statspack有一定的了解,这个工具将对各种原因造成的数据库性能问题做一个简单的分析,包括sql语句的性能。下面对此做简单介绍。

        Statspack工具是oracle8.1.6以后版本带有的工具,完全是脚本写的,操作过程与运行脚本一致。该工具创建时需要默认表空间、临时表空间以及用户PERFSTAT的密码,用户PERFSTAT是工具创建时创建的用户,该用户对所有需要监控性能的表有只读权限。工具创建是执行脚本SPCREATE.SQL来实现的:


 

For example, on UNIX:

SQL>  CONNECT / AS SYSDBA
SQL>  define default_tablespace='TOOLS'
SQL>  define temporary_tablespace='TEMP'
SQL>  define perfstat_password='my_perfstat_password'
SQL>  @?/rdbms/admin/spcreate


 


        该过程创建40多个表,表名均以STATS$开始,通过调用存储过程DBMS_JOB.INTERVAL(job_number,'SYSDATE+(1/48)')设置采样周期参数。

        SQL>  connect perfstat/my_perfstat_password
        Connected.
        SQL>  @?/rdbms/admin/spreport

需要的性能一般都可以从该报告中得到,如果信息不足可以通过

        EXECUTE STATSPACK.SNAP(i_snap_level=>6);

来设定采集信息的级别,级别越高信息越详细。

这里做的只是一个非常简单的介绍,主要告诉你What to do?而不是How to do?,这种方式对一种代理监控程序来说,有一个致命的弱点:监控中许多指标的时间间隔必须是1秒,这样的时间间隔会造成数据库中数据量迅速增加,必须进行定期清除;另外,由于分析包需要安装,代理监控程序发布也会比较麻烦,需要对被监控的数据库进行大量操作。

整体考虑代理程序监控数据库的解决方案,条件是Oracle数据库里存放的累计值,做命中率、IO性能分析等的报告时必须通过逻辑处理。对于三层业务逻辑来说(监控程序是一个业务逻辑层,只是提供接口返回一定格式的数据),这部分最合理的方式应当是放在业务层,展示层显然是不应该存放大量业务逻辑的;数据层是采集的对象,数量不定,对灵活性和扩展性影响比较大,也就是前面说的原因,使用起来非常不方便,那么这部分放在逻辑层处理显然是比较合理的。这也给实现方式带来了一定的挑战!

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值