Документ создан: 15.02.2010

Трассировка сессий в Oracle

Трассировка от SYSDBA

23.11.2008 г. 24.04.2019 г.

  1. Находим интересующую нас сессию и файл трассировки, например, так:
    SELECT s.sid, s.serial# , p.tracefile from v$session s, v$process p where s.paddr=p.addr and and s.username=upper('&uname.');

    или, если знаем SID:

    SELECT s.sid, s.serial# , p.tracefile from v$session s, v$process p where s.paddr=p.addr and s.sid=&sid.;
  2. Включаем сбор временной статистики (иначе трассировочные файлы будут появляться с нулевыми временами):
    ALTER system SET timed_statistics=true;
  3. Включаем трассировку сессии:
    begin
      sys.dbms_system.set_ev(131, 1388, 10046, 12, '');
    end;
    /

    Где:

    • 131 - sid из запроса, описанного в п.1;
    • 1388 - serial# оттуда же;
    • 12 - уровень трассировки:
      • 0 - трассировка выключена.
      • 1 - минимальный уровень. результат не отличается от установки параметра sql_trace=true
      • 4 - в трассировочный файл добавляются значения связанных переменных.
      • 8 - в трассировочный файл добавляются значения ожидании событий на уровне запросов.
      • 12 - добавляются, как значения связанных переменных, так и информация об ожиданиях событий.

  4. Выполняем запрос или просто ожидаем какое-то время для сбора статистики и останавливаем трассировку:
    begin
      sys.dbms_system.set_ev(131, 1388, 10046, 0, '');
    end;
    /
  5. Переходим в каталог с трассировочными файлами или забираем нужный нам файл и обрабатываем утилитой tkprof для получения "читабельной" информации:
    tkprof db01_ora_1756.trc d:\out.txt

Трассировка собственной сессии

Пользователю должны быть выданы полномочия:

GRANT ALTER session TO <USER>;
  1. Включить timed_statistics:
    ALTER session SET timed_statistics=true;
  2. Если нужно, то можно включить ограничение размера файла трассировки:
    ALTER session SET max_dump_file_size='20M';
  3. Можно задать собственный идентификатор имени файла:
    ALTER session SET tracefile_identifier="MyTrace";
  4. Включить трассировку:
    ALTER session SET sql_trace=true;

    или

    ALTER session SET events '10046 trace name context forever, level 12';

    Где level:

    • 1 — Базовая информация
    • 4 — level 1 + значения переменных
    • 8 — level 1 + события ожиданий
    • 12 — максимальный уровень трассировки

Отключить трассировку:

ALTER session SET sql_trace=false;

или

ALTER session SET events '10046 trace name context off';

autotrace в сессии

От SYSDBA.

Пользователю должны быть выданы полномочия:

GRANT ALTER session TO <USER>;
GRANT SELECT any dictionary TO <USER>
От пользователя.

Включить трассировку:

SET autotrace ON;

Выполняем, например:

SELECT table_name FROM user_tables;

Отключить трассировку:

SET autotrace off;
 
Top.Mail.Ru
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate