Aveact2.sql

From DB Optimizer
Jump to: navigation, search
/*
  PROBLEMS: if the cpu_count doesn't exist for the host this
            script will have no output
            running ashpack.sh on the target should take care of this
*/
column f_days new_value v_days
select &days f_days from dual;
column f_secs new_value v_secs
select 900 f_secs from dual;
--select &seconds f_secs from dual;
column f_bars new_value v_bars
select 5 f_bars from dual;
column aveact format 999.99
column graph format a30
select
       to_char(to_date(tday||' '||tmod*&v_secs,'YYMMDD SSSSS'),'DD HH24:MI:SS') tm,
       samples,
       -- total,
       total/samples aveact,
       --cpu,
       --waits,
       substr(substr(rpad('+',round((cpu*&v_bars)/samples),'+') ||
       rpad('-',round((waits*&v_bars)/samples),'-')  ||
       rpad(' ',p.value * &v_bars,' '),0,(p.value * &v_bars)) ||
       p.value  ||
       substr(rpad('+',round((cpu*&v_bars)/samples),'+') ||
       rpad('-',round((waits*&v_bars)/samples),'-')  ||
       rpad(' ',p.value * &v_bars,' '),(p.value * &v_bars),10) ,0,30)
       graph
from (
  select
      to_char(sample_time,'YYMMDD')                   tday
    , trunc(to_char(sample_time,'SSSSS')/&v_secs) tmod
    , sum(decode(session_state,'ON CPU',1,decode(session_type,81,0,1)))  total
    , (max(sample_id) - min(sample_id) + 1 )      samples
    , sum(decode(session_state,'ON CPU' ,1,0))    cpu
    , sum(decode(session_state,'WAITING',1,0))-sum(decode(session_type,81,1,0))    waits
  from
     sash
  where sample_time > sysdate - &v_days
  group by  trunc(to_char(sample_time,'SSSSS')/&v_secs),
            to_char(sample_time,'YYMMDD')
   order by
            to_char(sample_time,'YYMMDD'),
            trunc(to_char(sample_time,'SSSSS')/&v_secs)
) ash,
 v$ash_params p
where p.name='cpu_count'
order by to_date(tday||' '||tmod*&v_secs,'YYMMDD SSSSS')

/