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



             

Различные способы включить трассировку


Параметр sql_trace можно установить в файле параметров инициализации для всех сеансов. На практике так делают редко, поскольку трассировка всех сеансов может заметно замедлить работу, да и общих объем созданных файлов может оказаться очень большим.

В современных версиях Oracle (например, 9.2) избирательно включить трассировку для сеанса можно несколькими способами.

  • Сеанс или приложение, которое необходимо трассировать, выполняет один из следующих операторов.

    alter session set sql_trace=true;

    Этот способ мы уже рассматривали. В трассировочный файл записывается базовая информация - какие операторы выполнялись и сколько времени потребовалось серверу на выполнение основных стадий обработки.

  • Сеанс или приложение, которое необходимо трассировать, выполняет оператор:

    alter session set events '10046 trace name context forever, level уровень';

    Так, с помощью установки события 10046, можно включить расширенную трассировку. В зависимости от указанного уровня, в трассировочный файл будет включаться дополнительная информация (см. далее). Чтобы завершить трассировку в этом случае надо выполнить:

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

  • АБД может включить и отключить трассировку любого сеанса с помощью процедур пакета dbms_system:

    sys.dbms_system.set_sql_trace_in_session(SID, serial#, true); sys.dbms_system.set_ev(SID, serial#, 10046, уровень, '');

    Значения SID и serial# можно получить из представления v$session, например:

    select sid, serial# from v$session where username = 'SCOTT';

    Допустимые уровни трассировки представлены ниже в .

  • Начиная с версии 8, можно включить и отключить трассировку любого сеанса с помощью процедур пакета dbms_support:

    dbms_support.start_trace_in_session(SID, serial#, true, true) dbms_support.stop_trace_in_session(SID, serial#)

  • Наконец, можно автоматически включать трассировку для сеансов определенных пользователей, создав триггер на событие регистрации, например, следующего вида:

    create or replace trigger logon_trigger after logon on database begin if ( user = '&1' ) then execute immediate 'ALTER SESSION SET EVENTS ''10046 TRACE NAME CONTEXT FOREVER, LEVEL &2'''; end if; end; /




    Содержание  Назад  Вперед