Базы данных Oracle - статьи

         

Пример отслеживания запросов SQL со стороны приложения и его элементов


Процедура SERV_MOD_ACT_TRACE_ENABLE пакета DBMS_MONITOR позволяет следить за выдачей запросов SQL отдельными «приложениями», «модулями» в составе приложений и «действиями» в рамках модулей. Пример:

DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE ( service_name => 'prima.class' , module_name => 'SQL*Plus' , action_name => DBMS_MONITOR.ALL_ACTIONS

, waits => TRUE , binds => TRUE , instance_name => NULL ); /* * ... выжидаем, пока длится работа

*/ DBMS_MONITOR.SERV_MOD_ACT_TRACE_DISABLE ( service_name => 'prima.class' , module_name => 'SQL*Plus' , action_name => DBMS_MONITOR.ALL_ACTIONS , instance name => NULL );

Для параметра MODULE_NAME по аналогии можно указать ALL_MODULES.

Таким же образом включается трассирование запросов, поступающих из текущего или чужого сеансов (SESSION_TRACE_ENABLE/DISABLE), сеансов, помеченных CLIENT_IDENTIFIER (CLIENT_ID_TRACE_ENABLE/DISABLE) и из всех сеансов подряд, или же порождаемых определенным экземпляром СУБД, например, из конфигурации RAC (DATABASE_TRACE_ENABLE/DISABLE).

Просмотр профиля выдачи запросов SQL выполняется с помощью программ tkprof и trcsess. Последняя программа стала поставляться в ПО версии Oracle 10 и как раз таки и выбирает из трассировочных файлов разных процессов данные, относящиеся к указанным единицам слежения. Вот пример, как может выглядеть совместное использование этих программ:

>trcsess output=out.txt module=SQL*Plus c:\oracle\admin\prima\udump\* >tkprof out.txt final.txt

Упражнение. Включить трассирование всех запросов SQL, поступающих от сеансов SQL*Plus, и наблюдать накопление профиля выдачи запросов. Отключить трассирование.



Содержание раздела