Хитрый бит записывает соединения. По умолчанию Oracle этого не делает, поэтому, если у вас ничего нет на месте, у вас не будет исторической записи.
Самый простой способ начать запись соединений - это встроенные функции аудита Oracle. Это так просто, как
audit session
/
Мы можем видеть записи каждого соединения в представлении, называемом dba_audit_session
.
И что теперь? В следующем запросе используется общее табличное выражение для генерации диапазона значений даты и времени, охватывающих 8 июля 2009 г., по пять минут. Вывод CTE присоединяется к представлению аудита на эту дату; Подсчет рассчитывается для каждого соединения, которое охватывает пятиминутный прирост.
with t as
( select to_date('08-JUL-2009') + ((level-1) * (300/86400)) as five_mins
from dual connect by level <= 288)
select to_char(t.five_mins, 'HH24:MI') as five_mins
, sum(case when t.five_mins between timestamp and logoff_time
then 1
else 0 end) as connections
from t
, dba_audit_session ssn
where trunc(ssn.timestamp) = to_date('08-JUL-2009')
group by to_char(t.five_mins, 'HH24:MI')
order by t.five_mins
/
Затем вы можете использовать этот запрос в качестве входных данных для запроса, который вычисляет среднее количество соединений.
Это довольно грубая реализация: я выбираю пятиминутные приращения из соображений отображения, но, очевидно, чем более мелкий прирост, тем точнее мера. Будьте осторожны: если вы сделаете приращения слишком мелкозернистыми и у вас будет много соединений, результирующее перекрестное соединение займет много времени!