Февр. 172014
 

This post is also available in: English

Наскоро постнах една заявка, която може да даде средното натоварване на базата по дни, седмици и месеци. Работи чудесно… докато не го пуснах върху RAC база.

При RAC има по един ред за всеки node и моята стратегия да вадя резултатите от предния ред водят до покъртителни резултати. Така че – ето новата, RAC-aware версия:

select trunc(this_day, 'MONTH'), avg(day_db_time), sum(cnt) scnt
  from (select this_day, count(1) cnt,
                sum(case
                       when snap_db_time > 0 then
                        snap_db_time/1000/1000/60/60/24
                       else
                        null
                     end) day_db_time
           from (select trunc(begin_interval_time) this_day, tm.snap_id,
                         value - lag(value, 1) over(order by tm.instance_number, tm.snap_id) snap_db_time
                    from dba_hist_sys_time_model tm, dba_hist_snapshot s
                   where tm.stat_name = 'DB CPU'
                     and s.snap_id = tm.snap_id
                     and s.instance_number = tm.instance_number
                     and s.begin_interval_time > add_months(trunc(sysdate, 'YEAR'), -24)
                     and s.begin_interval_time < trunc(sysdate, 'MONTH')
                     )
          group by this_day)
 group by trunc(this_day, 'MONTH')
 order by 1

Единствената разлика е, че внимавам кой instance е на предния ред, да не вадя някакви глупости. Работи чудесно и за single instance бази.

 Posted by at 19:33

Sorry, the comment form is closed at this time.