Более полный мануал здесь — Как трассировать SQL и PL/SQL.
1. Включение режима трассировки и выполнение произвольной процедуры:
BEGIN DBMS_SESSION.SESSION_TRACE_ENABLE; ss_jobs_pkg.run_job(457633170401); COMMIT; DBMS_SESSION.SESSION_TRACE_DISABLE; END;
В данном примере показан запуск задания с идентификатором 457633170401 в режиме трассировки сессии.
2. Если используется Oracle версии 11 или выше, результат трассировки хранится по адресу:
/opt/oracle/diag/rdbms/<db>/<db>/trace
В данной папке необходимо найти файл с расширением *.trc.
3. Полученный *.trc файл необходимо преобразовать в доступный для чтения формат утилитой tkprof, которая поставляется в комплекте с Oracle. Утилита располагается по адресу /opt/oracle/product/<номер версии>/bin/. Вызов осуществляется следующим образом:
oracle@server:~/product/11.2.0.2/bin$ tkprof <путь до *.trc файла>
При запуске утилита попросит указать путь до файла назначения. Можно использовать адрес домашней директории.
Чтобы профилировку было удобно анализировать, можно при этом еще добавить параметры для сортировки:
oracle@server:~/product/11.2.0.2/bin$ tkprof <путь до *.trc файла> SORT="(FCHELA,EXEELA)"
4. Включение режима трассировки для сессии:
Если мы собираемся трассировать свою сессию, то необходимо выполнить команду:
alter session set events '10046 trace name context forever, level N'; -- включение трассировки alter session set events '10046 trace name context off'; -- выключение трассировки
Если мы собираемся трассировать чужую сессию, то необходимо сначала выяснить sid, serial, выполнив команду:
SQL> col sid for 999999 col serial# for 999999 col username for a20 col osuser for a20 select s.sid, s.serial#, s.username, s.osuser from v$session s, v$process p where s.paddr=p.addr;
далее
exec sys.dbms_system.set_ev(sid,serial,10046,N,''); -- включение трассировки exec sys.dbms_system.set_ev(sid,serial,10046,0,''); -- выключение трассировки
где sid, serial -- это понятно что, а N -- требуемый level (уровень трассировки).
level 1 -- в trace файл пишется статистика вида ***, APPNAME, PARSING IN CURSOR, PARSE ERROR, PARSE, EXEC, FETCH, UNMAP, SORT UNMAP, ERROR, STAT и XCTEND
level 4 -- то же, что и в level 1 плюс BINDS секции.
level 8 -- то же, что и в level 1 плюс WAIT строки.
level 12 -- level 1 плюс level 4 плюс level 8.
5. Если сессия трассируется повторно, то надо не забыть удалить старый файл с трассировкой, чтобы результаты предыдущей трассировки не влияли на общую картину.