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

Материал из START-IP
Перейти к навигации Перейти к поиску

Рекомендуется выполнять трассировку сессии уровня 12. В Oracle 10g аналогичные действия можно выполнить с помощью пакета dbms_monitor.

Для выполнения данного вида трассировки потребуется права на выполнения пакета sys.dbms_system

Перед выполнением трассировки убедитесь в наличии достаточного дискового пространства для трассировочных файлов


Трассировка проблемного кода

Если вы знаете проблемный код и запускаете его из SQLPlus, PSSQL Developer, TOAD и др. то можно воспользоваться следующими запросами:


alter session set events '10046 trace name context forever, level 12';

<тут добавить проблемный код для трассировки>

alter session set events '10046 trace name context off';


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

Если же вы хотите оттрассировать сессию форм, задания (job), radius сессию и др:
Поиск сессий в базе данных


-- to start level 12 tracing with waits and bind parameters
sys.dbms_system.set_ev(sid,serial#,10046,12,''); 

-- to stop the tracing.
sys.dbms_system.set_ev(sid,serial#,10046,0,''); 


В случае трассировки пользовательской сессии ( не job ! ) файл трассировки можно следующим запросом:


select 
  u_dump.value   || '/'     || 
  db_name.value  || '_ora_' || 
  v$process.spid || 
  nvl2(v$process.traceid,  '_' || v$process.traceid, null ) 
  || '.trc'  "Trace File"
from 
             v$parameter u_dump 
  cross join v$parameter db_name
  cross join v$process 
        join v$session 
          on v$process.addr = v$session.paddr
where 
 u_dump.name   = 'user_dump_dest' and 
 db_name.name  = 'db_name'        and
 v$session.sid=<sid> and v$session.serial#=<serial#>;


Трассировка job-ов

Один из вариантов трассировки задания - модифицирует тело задания и вносим следующих обкладки для запуска и остановки трассировки:

DECLARE
VAR NUMBER;
IS_TRACE NUMBER;
BEGIN
IS_TRACE := 0;
IF SYSDATE BETWEEN TO_DATE('2011-07-10 18:18:00','YYYY-MM-DD HH24:MI:SS') AND 
TO_DATE('2011-07-10 18:35:00','YYYY-MM-DD HH24:MI:SS') THEN
IS_TRACE := 1;
EXECUTE IMMEDIATE 'alter session set events ''10046 trace name context forever, level 12'''; 
END IF;
-- сюда добавить текст джоба
IF IS_TRACE<>0 THEN
EXECUTE IMMEDIATE 'alter session set events ''10046 trace name context off''';
END IF;
END;
/


Поиск трэйс файла для джоба

select 
  U_DUMP.VALUE   || '/'     || 
  db_name.instance_name  || '_' || lower(substr(v$session.program,-5,4)) || '_' ||
  v$process.spid || 
  nvl2(v$process.traceid,  '_' || v$process.traceid, null ) 
  || '.trc'  "Trace File"
from 
             V$PARAMETER U_DUMP 
  cross join v$instance db_name
  cross join v$process 
        join v$session 
          on v$process.addr = v$session.paddr
WHERE 
 u_dump.name   = 'background_dump_dest' and 
  v$session.sid=<sid> and v$session.serial#=<serial#>;
 

Файлы трассировок заданий имеют будут иметь другое имя и будут расположены в другом каталоге!!!


Постобработка

Полученный файл с трассировкой необходимо обработать tkprof

tkprof oracl10_j002_18694.trc oracl10_j002_18694.exeela.tk sort=exeela explain=sip_w/password@statip
tkprof oracl10_j002_18694.trc oracl10_j002_18694.fchela.tk sort=fchela explain=sip_w/password@statip


Полученные в результате файлы трассировки, и результаты его обработки tkporf c сортировкой по exeela и fchela необходимо за архивировать и отправить в службу технической поддержки с детальным описанием проблемы и ее анализа.

--Michael 17:27, 12 июля 2011 (MSD)