Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 запрос для отчета о максимальной редо генераcии за три последовательных  [new]
Bardis
Member

Откуда:
Сообщений: 294
друзья, подскажите запрос для отчета о максимальной редо генераcии за три последовательных дня.
29 июл 15, 11:47    [17949115]     Ответить | Цитировать Сообщить модератору
 Re: запрос для отчета о максимальной редо генераcии за три последовательных  [new]
-2-
Member

Откуда:
Сообщений: 15330
Bardis,

select blocks*block_size/1073741824*86400/max(next_time-first_time) "гиба/сек" from v$archived_log;
29 июл 15, 11:51    [17949169]     Ответить | Цитировать Сообщить модератору
 Re: запрос для отчета о максимальной редо генераcии за три последовательных  [new]
Bardis
Member

Откуда:
Сообщений: 294
Спасибо, но это не совсем то что я ищу.
Есть запрос дающий отчет о генерации редо за день за последний месяц. Мне нужен максимум за три последовательных дня из етоого отчета.

SQL> r
1 select round(FIRST_TIME,'DD') "Date", count(*) "Cnt.",
2 round(sum(BLOCKS*BLOCK_SIZE)/1024/1024,2) "Arch Size,MB" from v$archived_log
3 where FIRST_TIME > sysdate -30
4 group by round(FIRST_TIME,'DD')
5* order by 1

Date Cnt. Arch Size,MB
------------------- ---------- ------------
29.06.2015 00:00:00 4 5549.99
30.06.2015 00:00:00 67 90960.71
01.07.2015 00:00:00 150 207741.63
02.07.2015 00:00:00 107 147307.27
03.07.2015 00:00:00 123 169303.29
04.07.2015 00:00:00 84 114743.94
05.07.2015 00:00:00 51 68590.17
06.07.2015 00:00:00 104 143554.85
07.07.2015 00:00:00 97 133267.03
08.07.2015 00:00:00 133 184392.6
09.07.2015 00:00:00 118 162118.77
10.07.2015 00:00:00 147 203404.04
11.07.2015 00:00:00 58 78397.6
12.07.2015 00:00:00 51 68403.88
13.07.2015 00:00:00 124 171090.99
14.07.2015 00:00:00 87 119717.18
15.07.2015 00:00:00 141 195705.2
16.07.2015 00:00:00 109 150452.93
17.07.2015 00:00:00 133 183525.44
18.07.2015 00:00:00 40 53367.4
19.07.2015 00:00:00 84 115629.29
20.07.2015 00:00:00 94 131109.38
21.07.2015 00:00:00 61 82553.67
22.07.2015 00:00:00 133 183453.27
23.07.2015 00:00:00 89 121838.8
24.07.2015 00:00:00 87 118658.11
25.07.2015 00:00:00 75 102880.4
26.07.2015 00:00:00 96 131568.01
27.07.2015 00:00:00 58 79295.35
28.07.2015 00:00:00 67 90788.66
29.07.2015 00:00:00 21 29115.7

31 rows selected.

т.е. в данном случае это сумма за 8,9,10.07 => max three days= 184392.6 + 162118.77+203404.04
29 июл 15, 12:08    [17949284]     Ответить | Цитировать Сообщить модератору
 Re: запрос для отчета о максимальной редо генераcии за три последовательных  [new]
_S_T_O_N_E_
Member

Откуда: Moscow
Сообщений: 196
-2-
Bardis,

select blocks*block_size/1073741824*86400/max(next_time-first_time) "гиба/сек" from v$archived_log;


А вы сами проверяли работоспособность вашего запроса?
29 июл 15, 12:11    [17949309]     Ответить | Цитировать Сообщить модератору
 Re: запрос для отчета о максимальной редо генераcии за три последовательных  [new]
SeaGate
Member

Откуда: Новосибирск
Сообщений: 1635
Bardis,

Если нужен максимум, а не осреднение из v$archived_log, то смотрите
select maxval from dba_hist_sysmetric_summary where metric_name='Redo Generated Per Sec'.
29 июл 15, 12:17    [17949354]     Ответить | Цитировать Сообщить модератору
 Re: запрос для отчета о максимальной редо генераcии за три последовательных  [new]
_S_T_O_N_E_
Member

Откуда: Moscow
Сообщений: 196
SeaGate
Bardis,

Если нужен максимум, а не осреднение из v$archived_log, то смотрите
select maxval from dba_hist_sysmetric_summary where metric_name='Redo Generated Per Sec'.


Ему нужна максимальная сумма за 3 последовательных дня...у вас проблемы с чтением или пониманием?
29 июл 15, 12:21    [17949374]     Ответить | Цитировать Сообщить модератору
 Re: запрос для отчета о максимальной редо генераcии за три последовательных  [new]
Bardis
Member

Откуда:
Сообщений: 294
друзья не сорьтесь.
Были такие аналитические функции, к сожаленику я в ниx не силен. Нужно чтобы мах по окну на три дня считался. может есть кто использующий аналитику.
29 июл 15, 12:27    [17949413]     Ответить | Цитировать Сообщить модератору
 Re: запрос для отчета о максимальной редо генераcии за три последовательных  [new]
SeaGate
Member

Откуда: Новосибирск
Сообщений: 1635
_S_T_O_N_E_,

_S_T_O_N_E_
Ему нужна максимальная сумма за 3 последовательных дня...у вас проблемы с чтением или пониманием?

Я могу считать максимальную редо генерацию за 3 последовательных дня, измеряя минутные кванты, часовые, и какие угодно кванты меньше 3 дней.
Но особо понятливым это не понятно, они сразу знают наверняка по первому посту, что хочет ТС.
Bardis
Были такие аналитические функции, к сожаленику я в ниx не силен. Нужно чтобы мах по окну на три дня считался. может есть кто использующий аналитику.

Да, есть такие. На ваших данных:
+
SQL> with arch_log as (
  2  select to_date('29.06.2015 00:00:00') report_date, 4 log_count, 5549.99 amount from dual union all
  3  select to_date('30.06.2015 00:00:00') report_date, 67 log_count, 90960.71 amount from dual union all
  4  select to_date('01.07.2015 00:00:00') report_date, 150 log_count, 207741.63 amount from dual union all
  5  select to_date('02.07.2015 00:00:00') report_date, 107 log_count, 147307.27 amount from dual union all
  6  select to_date('03.07.2015 00:00:00') report_date, 123 log_count, 169303.29 amount from dual union all
  7  select to_date('04.07.2015 00:00:00') report_date, 84 log_count, 114743.94 amount from dual union all
  8  select to_date('05.07.2015 00:00:00') report_date, 51 log_count, 68590.17 amount from dual union all
  9  select to_date('06.07.2015 00:00:00') report_date, 104 log_count, 143554.85 amount from dual union all
 10  select to_date('07.07.2015 00:00:00') report_date, 97 log_count, 133267.03 amount from dual union all
 11  select to_date('08.07.2015 00:00:00') report_date, 133 log_count, 184392.6 amount from dual union all
 12  select to_date('09.07.2015 00:00:00') report_date, 118 log_count, 162118.77 amount from dual union all
 13  select to_date('10.07.2015 00:00:00') report_date, 147 log_count, 203404.04 amount from dual union all
 14  select to_date('11.07.2015 00:00:00') report_date, 58 log_count, 78397.6 amount from dual union all
 15  select to_date('12.07.2015 00:00:00') report_date, 51 log_count, 68403.88 amount from dual union all
 16  select to_date('13.07.2015 00:00:00') report_date, 124 log_count, 171090.99 amount from dual union all
 17  select to_date('14.07.2015 00:00:00') report_date, 87 log_count, 119717.18 amount from dual union all
 18  select to_date('15.07.2015 00:00:00') report_date, 141 log_count, 195705.2 amount from dual union all
 19  select to_date('16.07.2015 00:00:00') report_date, 109 log_count, 150452.93 amount from dual union all
 20  select to_date('17.07.2015 00:00:00') report_date, 133 log_count, 183525.44 amount from dual union all
 21  select to_date('18.07.2015 00:00:00') report_date, 40 log_count, 53367.4 amount from dual union all
 22  select to_date('19.07.2015 00:00:00') report_date, 84 log_count, 115629.29 amount from dual union all
 23  select to_date('20.07.2015 00:00:00') report_date, 94 log_count, 131109.38 amount from dual union all
 24  select to_date('21.07.2015 00:00:00') report_date, 61 log_count, 82553.67 amount from dual union all
 25  select to_date('22.07.2015 00:00:00') report_date, 133 log_count, 183453.27 amount from dual union all
 26  select to_date('23.07.2015 00:00:00') report_date, 89 log_count, 121838.8 amount from dual union all
 27  select to_date('24.07.2015 00:00:00') report_date, 87 log_count, 118658.11 amount from dual union all
 28  select to_date('25.07.2015 00:00:00') report_date, 75 log_count, 102880.4 amount from dual union all
 29  select to_date('26.07.2015 00:00:00') report_date, 96 log_count, 131568.01 amount from dual union all
 30  select to_date('27.07.2015 00:00:00') report_date, 58 log_count, 79295.35 amount from dual union all
 31  select to_date('28.07.2015 00:00:00') report_date, 67 log_count, 90788.66 amount from dual union all
 32  select to_date('29.07.2015 00:00:00') report_date, 21 log_count, 29115.7 amount from dual)
 33  select report_date, log_count, amount,
 34         sum(amount) over (order by report_date range interval '2' day preceding) three_day_amount
 35    from arch_log
 36   order by report_date
 37  /

REPORT_DATE          LOG_COUNT     AMOUNT THREE_DAY_AMOUNT
------------------- ---------- ---------- ----------------
29.06.2015 00:00:00          4    5549.99          5549.99
30.06.2015 00:00:00         67   90960.71          96510.7
01.07.2015 00:00:00        150  207741.63        304252.33
02.07.2015 00:00:00        107  147307.27        446009.61
03.07.2015 00:00:00        123  169303.29        524352.19
04.07.2015 00:00:00         84  114743.94         431354.5
05.07.2015 00:00:00         51   68590.17         352637.4
06.07.2015 00:00:00        104  143554.85        326888.96
07.07.2015 00:00:00         97  133267.03        345412.05
08.07.2015 00:00:00        133   184392.6        461214.48
09.07.2015 00:00:00        118  162118.77         479778.4
10.07.2015 00:00:00        147  203404.04        549915.41
11.07.2015 00:00:00         58    78397.6        443920.41
12.07.2015 00:00:00         51   68403.88        350205.52
13.07.2015 00:00:00        124  171090.99        317892.47
14.07.2015 00:00:00         87  119717.18        359212.05
15.07.2015 00:00:00        141   195705.2        486513.37
16.07.2015 00:00:00        109  150452.93        465875.31
17.07.2015 00:00:00        133  183525.44        529683.57
18.07.2015 00:00:00         40    53367.4        387345.77
19.07.2015 00:00:00         84  115629.29        352522.13
20.07.2015 00:00:00         94  131109.38        300106.07
21.07.2015 00:00:00         61   82553.67        329292.34
22.07.2015 00:00:00        133  183453.27        397116.32
23.07.2015 00:00:00         89   121838.8        387845.74
24.07.2015 00:00:00         87  118658.11        423950.18
25.07.2015 00:00:00         75   102880.4        343377.31
26.07.2015 00:00:00         96  131568.01        353106.52
27.07.2015 00:00:00         58   79295.35        313743.76
28.07.2015 00:00:00         67   90788.66        301652.02
29.07.2015 00:00:00         21    29115.7        199199.71
29 июл 15, 12:56    [17949616]     Ответить | Цитировать Сообщить модератору
 Re: запрос для отчета о максимальной редо генераcии за три последовательных  [new]
Bardis
Member

Откуда:
Сообщений: 294
если сильно не красиво то получилось как-то так:
SQL> select max(sum_three_days)
  2  from(
  3  select day,cnt,size_mb
  4  ,sum(size_mb) over (order by day rows between 1 preceding and 1 following) as sum_three_days
  5  from
  6  (
  7  select round(FIRST_TIME,'DD') as day, count(*) as cnt,
  8  round(sum(BLOCKS*BLOCK_SIZE)/1024/1024,2) as size_mb from v$archived_log
  9  where FIRST_TIME > sysdate -30
 10  group by round(FIRST_TIME,'DD')
 11  order by 1
 12  )
 13  )
 14  /

MAX(SUM_THREE_DAYS)
-------------------
          549915.41
29 июл 15, 13:00    [17949639]     Ответить | Цитировать Сообщить модератору
 Re: запрос для отчета о максимальной редо генераcии за три последовательных  [new]
Bardis
Member

Откуда:
Сообщений: 294
стыдно такое показывать, может ы кого то покрасивше выйдет?
29 июл 15, 13:07    [17949694]     Ответить | Цитировать Сообщить модератору
 Re: запрос для отчета о максимальной редо генераcии за три последовательных  [new]
SeaGate
Member

Откуда: Новосибирск
Сообщений: 1635
Bardis,
Это 12c. На мой взгляд, в плане красоты приемлемо.
До 12c через подзапрос с rownum.
Я бы еще по dest_id ограничил, чтобы не было сюрпризов, когда у вас новые log_archive_dest добавятся.
select trunc( first_time ) day,
       count (*) cnt,
       round( sum ( sum ( blocks * block_size ) ) over ( order by trunc( first_time ) rows between 1 preceding and 1 following ) / 1024 / 1024, 2) sum_three_days
  from v$archived_log
 where first_time > sysdate-30
 group by trunc( first_time )
 order by sum_three_days desc
 fetch first 1 row only
/
29 июл 15, 13:45    [17950050]     Ответить | Цитировать Сообщить модератору
 Re: запрос для отчета о максимальной редо генераcии за три последовательных  [new]
(... over(...range...) ...) firs
Guest
SeaGate
До 12c через подзапрос с rownum
с rownum это уже будет не один подзапрос.
но можно и без rownum, если излишнюю группировку сделать уместной.
29 июл 15, 14:29    [17950389]     Ответить | Цитировать Сообщить модератору
 Re: запрос для отчета о максимальной редо генераcии за три последовательных  [new]
Bardis
Member

Откуда:
Сообщений: 294
спасибо, очень даже ничего.
29 июл 15, 14:35    [17950434]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить