大家好,对于Oracle我是外行,但是目前在做一个性能分析的时侯急需要一些Oracle的监控数据,目前我希望实现这样的功能:每隔一定时间(比如5秒)取得Oracle的总连接数和用户标示为“test“的连接数,然后将这些数据保存(可以为任何形式,只要以后能够调用到就可以了),最后最好能有一个汇总的结果,即平均连接数。Oracle数据库部署在一台redhat es4上,版本为10g
目前我用select count(*) from v$session可以取得总连接数,但是不知道怎么定时动态存取,还有要查询一定条件的连接数(比如特定用户)不知道怎么做?由于项目时间紧急,希望得到各位大侠的协助。先行谢过了!

解决方案 »

  1.   

    做statspack.
    里面会的.你可以半小时一个快照.
      

  2.   

    1.先创建个数据分析表。
    2.写个过程,取得数据后往这个表里插入,用job定时调用。
    3.对表数据进行分析。
      

  3.   

    -- 按用户查看连接数和active连接数
    select decode(grouping(t.username),1,'合计',t.username) machine ,count(*) num, sum(decode(t.STATUS,'ACTIVE',1,0)) active 
    from v$session t 
    --where t.STATUS='ACTIVE'
    group by rollup(t.USERNAME)
    order by num desc
      

  4.   

    用sql语句:
    select username,count(*) from v$session group by username;
      

  5.   

    操作系统里统计
    ps -ef | grep oracle | wc
      

  6.   

    多谢CathySun118(斯年),但是要把数据存下来好像还得在里面建表,有没有不用动数据库的方法?
      

  7.   

    在操作系统中用
    ps -ef | grep oracle | wc
    命令取得的数据和直接在sqlplus中用select count(*) from v$session取得数据不同,有一次一个操作系统中取得的是47,sqlplus中取得的是33,请问是怎么回事?
      

  8.   

    用utl_file包中的方法可以解决, 直接读写磁盘文件