Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Некоторые недокументированные процедуры пакета DBMS_SYSTEM.

В В. Бегун. Некоторые недокументированные процедуры пакета DBMS_SYSTEM

21 сентября 2000 г.

Системный пакет Oracle DBMS_SYSTEM содержит ряд весьма интересных недокументированных процедур, которые могут оказаться полезными в определенных ситуациях, таких как трассировка событий и вывод отладочной информации в рабочие файлы Oracle—trace и alert.

Процедура dbms_system.set_ev устанавливает событие для сессии.

PROCEDURE set_ev ( si BINARY_INTEGER , se BINARY_INTEGER , ev BINARY_INTEGER , le BINARY_INTEGER , nm VARCHAR2 ); si – идентификатор сессии sid из представления v$session se – идентификатор сессии serial# из представления v$session ev – номер события ["event number"] le – уровень выдачи отладочной информации
nm – имя события

Процедура dbms_system.read_ev проверяет уровень выдачи отладочной информации для сессии.

PROCEDURE read_ev ( iev BINARY_INTEGER , oev OUT BINARY_INTEGER ); iev – номер проверяемого события ["event number"] oev – уровень выдачи отладочной информации Процедура возвращает следущие значения: 0 – событие для сессии не установлено n – где n > 0, уровень выдачи отладочной информации для текущей сессии

Процедура dbms_system.ksdwrt выводит отладочную информацию в рабочие файлы Oracle.

PROCEDURE ksdwrt ( dest BINARY_INTEGER , tst VARCHAR2 ); dest – определяет файл для выдачи сообщений: 1 – trace файл 2 – alter файл 3 – trace и alter файл tst – сообщение, максимальная длина 1023 символа. Следует также обратить внимание на то, что NULL значения параметра tst не будут выводиться в файл.

Процедура dbms_system.ksdddt выводит текущую дату и время в пользовательский trace файл.

PROCEDURE ksdddt;

Формат вывода 2000.09.18.09.16.47.467

Процедура dbms_system.ksdind печатает разделитель в trace файл.

PROCEDURE ksdind ( lvl BINARY_INTEGER );

lvl – определяет сколько раз печатать разделитель ":". Максимальное значение lvl – 30.

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

Пример использования:

Рассмотрим две открытых сессии SQL*PLUS:
пусть сессия "A" – сессия, отрытая пользователем SYS, а сессия "B" – сессия, отрытая пользователем J.
Пользователю J дана привилегия на запуск кода пакета dbms_system["GRANT EXECUTE ON dbms_system TO j;"]

Сессия "A":
Начало трассировки SQL для сессии пользователя J

SQL> SELECT sid, serial# 2 FROM v$session 3 WHERE username = 'J' 4 / SID SERIAL# --------- --------- 7 27 BEGIN dbms_system.set_ev(7, 27, 10046, 10, ''); END; /

Сессия "B":
Проверка пользователем J статуса его сессии.

VAR n NUMBER; BEGIN sys.dbms_system.read_ev(10046, :n); sys.dbms_system.ksdwrt(3, 'Hello, DBA! =;)'); sys.dbms_system.ksdwrt(1,
'1 TRACE FILE: event level = ' || :n); sys.dbms_system.ksdind(:n); sys.dbms_system.ksdddt; sys.dbms_system.ksdwrt(2,
'2 ALERT FILE: event level = ' || :n); sys.dbms_system.ksdind(:n); sys.dbms_system.ksdddt; sys.dbms_system.ksdwrt(3,
'3 TRACE AND ALERT FILE: event level = ' || :n); sys.dbms_system.ksdddt; END; / PRINT n N --------- 10

Итак, пользователь J выяснил, что его сессия находиться под "контолем", с уровнем выдачи отладочной информации 10. Он передал привет DBA и записал уровень отладочной информации в trace и alert файлы.

Сессия "A":
Завершения трассировки SQL для сессии пользователя J

BEGIN dbms_system.set_ev(7, 27, 10046, 0, ''); END; /

Пример для сессии "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

 



  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте