Для сеансов, помеченных CLIENT_IDENTIFIER, и для приложений, помеченных комбинациями SERVICE_NAME – MODULE – ACTION, пакет DBMS_MONITOR позволяет собирать не только профиль выдачи запросов SQL, но и статистику затрат СУБД на обработку запросов.
Пример со сбором статистики о работе определенных клиентов. Выдадим:
CONNECT / as sysdba EXECUTE DBMS_MONITOR.CLIENT_ID_STAT_ENABLE ( 'Web client' ) HOST sqlplus scott/tiger EXECUTE DBMS_SESSION.SET_IDENTIFIER ( 'Web client' ) SELECT COUNT ( * ) FROM dual; EXIT
Здесь с помощью команды HOST программы SQL*Plus был осуществлен короткий запуск сеанса, помеченного значением CLIENT_IDENTIFIER = 'Web client'.
Продолжим в изначальном сеансе от имени SYS:
SYS> SELECT aggregation_type, primary_id 2> FROM dba_enabled_aggregations;
AGGREGATION_TYPE PRIMARY_ID ------------------------------------------------------------------------ CLIENT_ID Web client
SYS> COLUMN client_identifier FORMAT A20 SYS> COLUMN stat_name FORMAT A35 SYS> COLUMN value FORMAT 99999999 SYS> SELECT client_identifier, stat_name, value 2> FROM v$client_stats
3> ;
CLIENT_IDENTIFIER STAT_NAME VALUE ----------------------------------------------------------------------- Web client user calls 4 Web client DB time 3807 Web client DB CPU 3807 Web client parse count (total) 2 Web client parse time elapsed 421 Web client execute count 4 Web client sql execute elapsed time 1940 Web client opened cursors cumulative 2 ...
SYS> EXECUTE DBMS_MONITOR.CLIENT_ID_STAT_DISABLE ( 'Web client' )
PL/SQL procedure successfully completed.
Вот перечень системных таблиц, позволяющих контролировать сбор статистики и наблюдать результаты:
DBA_ENABLED_AGGREGATIONS
V$CLIENT_STATS
V$SERVICE_STATS
V$SERV_MOD_ACT_STATS
V$SERVICEMETRIC
V$SERVICEMETRIC_HISTORY
Последние две дают подробную информацию о расходовании процессорного времени.
Это был пример с использованием процедур CLIENT_ID_STAT_ENABLE/DISABLE. Процедуры SERV_MOD_ACT_STAT_ENABLE/DISABLE используются аналогично.
Упражнение. Включить сбор обобщенной статистики выполнения запросов SQL всех соединений к СУБД по SQL*Plus и наблюдать ее накопление. Отключить сбор статистики.