суббота, 6 февраля 2010 г.

EVENTS in oracle

EVENTS в основном применяются для снятия трейсов, дампов, включения/выключения различных фич, патчей и т.д.
Задаются при помощи параметра инициализации EVENT - например для трассировки служебных процессов при старте экземпляра, утилиты ORADEBUG или с помощью команды
alter session/system SET EVENTS 'event_number trace name context forever, level event_level'
forever означает, что событие будет действовать пока мы его не отключим. Если forever нет, то событие повторяется ровно 1 раз. Так
ALTER SESSION SET EVENTS '10046 trace name context level 1'запишет в трейс ровно 1 команду ALTER и отключится.
Перечень событий можно посмотреть:
1. В интернете, например тут
2. В файле $ORACLE_HOME/rdbms/mesg/oraus.msg или используя oerr (для linuxов)

>;oerr ora 10046
10046, 00000, "enable SQL statement timing"
// *Cause:
// *Action:
Номера большинства event от 10000 до 10999.

Интересные события
ALTER SYSTEM SET EVENTS '10231 trace name context forever, level 10';
пропуск бед-блоков при скинировании таблицы. Может помочь, если база вдруг нагнулась.

Снятие дампов
EVENTS можно использовать для снятия различных дампов, в случае возникновения ошибки:
ALTER {SESSION|SYSTEM} SET EVENTS 'error_code TRACE NAME dump_name LEVEL lvl'
Список доступных дампов посмотреть oradebug dumplist
Дамп "просто так":
ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME dump_name LEVEL lvl'например
ALTER SESSION SET EVENTS 'immediate trace name systemstate level 10';

P.S. Примеры взяты из книжки Norbert Debes "Secrets of the Oracle Database". Книга очень достойная



Комментариев нет: