В. Бегун. Некоторые недокументированные процедуры пакета DBMS_SYSTEM
21 сентября 2000 г.
Системный пакет Oracle DBMS_SYSTEM содержит ряд весьма интересных недокументированных процедур, которые могут оказаться полезными в определенных ситуациях, таких как трассировка событий и вывод отладочной информации в рабочие файлы Oracle—trace и alert.
Процедура dbms_system.set_ev устанавливает событие для сессии.
· si – идентификатор сессии sid из представления v$session
· se – идентификатор сессии serial# из представления v$session
· ev – номер события ["event number"]
· le – уровень выдачи отладочной информации
· nm – имя события
Процедура dbms_system.read_ev проверяет уровень выдачи отладочной информации для сессии.
· iev – номер проверяемого события ["event number"]
· oev – уровень выдачи отладочной информации
· Процедура возвращает следущие значения:
· 0 – событие для сессии не установлено
· n – где n > 0, уровень выдачи отладочной информации для текущей сессии
Процедура dbms_system.ksdwrt выводит отладочную информацию в рабочие файлы Oracle.
· dest – определяет файл для выдачи сообщений:
· 1 – trace файл
· 2 – alter файл
· 3 – trace и alter файл
· tst – сообщение, максимальная длина 1023 символа. Следует также обратить внимание на то, что NULL значения параметра tst не будут выводиться в файл.
Процедура dbms_system.ksdddt выводит текущую дату и время в пользовательский trace файл.
Формат вывода 2000.09.18.09.16.47.467
Процедура dbms_system.ksdind печатает разделитель в trace файл.
lvl – определяет сколько раз печатать разделитель ":". Максимальное значение lvl – 30.
Процедура может быть полезна для печати трассировочной информации.
Пример использования:
Рассмотрим две открытых
сессии SQL*PLUS:
пусть сессия "A" – сессия, отрытая пользователем SYS, а сессия "B"
– сессия, отрытая пользователем J.
Пользователю J дана привилегия на запуск кода пакета dbms_system["GRANT EXECUTE ON dbms_system TO j;"]
Сессия "A":
Начало трассировки SQL для сессии пользователя J
Сессия "B":
Проверка пользователем J статуса его сессии.
Итак, пользователь J выяснил, что его сессия находиться под "контолем", с уровнем выдачи отладочной информации 10. Он передал привет DBA и записал уровень отладочной информации в trace и alert файлы.
Сессия "A":
Завершения трассировки SQL для сессии пользователя J
Пример для сессии "A", приведенный выше—это аналог функции dbms_system.set_sql_trace_in_session(sid, serial#, sql_trace);
Vladimir Begun
Sunbay Software AG
Oracle DBA/Technical Project Manager
mailto:VladimirBegun@yahoo.com
http://www.sunbay.crimea.ua/~jester http://www.zdnet.ru/advertisement/advertisement.asp?ID=5713http://www.zdnet.ru/advertisement/advertisement.asp?ID=5713