Возможность исчерпывающей трассировки сессий можно назвать одним из самых прекрасных свойств БД Oracle.
По результатам трассировки (*.trc файлам) не всегда просто сделать вывод о причине проблемы, но почти всегда рано или подзно можно понять в чём корень зла.
Как же включить трассировку сессии? Существует масса (больше десяти) способов сделать это. На наш взгляд большинство из них представляют просто праздный интерес. Достаточно знать только пару способов:
- Если Вы собираетесь трассировать свою сессию, то выполняйте команду:
SQL
alter session set events '10046 trace name context forever, level 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.
Выключается трассировка своей сессии так:
SQL
alter session set events '10046 trace name context off';
- Если Вы собираетесь трассировать чужую сессию, то вызывайте процедуру set_ev из пакета dbms_system:
SQL
exec dbms_system.set_ev(sid,serial,10046,N,'');
где sid, serial -- это понятно что, а N -- требуемый level.
Выключается трассировка чужой сессии так:
SQL
exec dbms_system.set_ev(sid,serial,10046,0,'');
Источник: oracledba.ru