Как стать автором
Обновить

Комментарии 14

Сигналы теряются, т.к. при эмиссии нескольких сигналов до вызова метода dbms_alert.waitone, он возвращает только последний. Т.е. если между вызовами waitone было более одного сигнала остальные будут потеряны.
Ну и подписываться/отписываться (dbms_alert.register/remove) на сигнал внутри процедуры не имеет смысла.
Да, действительно работает без register/remove. В статье поправил, спасибо!
Странный выбор… Это больше похоже на логгирование, а не отладку. Для дебага есть как раз plsql_debug, позволяющий устанавливать breakpoint'ы, получать значения переменных и т.д. Кстати, PL/SQL Developer умеет с ним работать, но только для сессий запущенных в нем самом.
А для логгирования лучше использовать что-то более гибкое и стандартное, например, всяческие аналоги логгеров из Java:
github.com/OraOpenSource/Logger
log4plsql.sourceforge.net
Для дебага есть как раз plsql_debug, позволяющий устанавливать breakpoint'ы, получать значения переменных и т.д.

Я правильно понимаю что ты говоришь про: docs.oracle.com/cd/B19306_01/server.102/b14237/initparams161.htm#REFRN10254?

Ошибся имел ввиду DBMS_debug

Кстати, PL/SQL Developer умеет с ним работать, но только для сессий запущенных в нем самом.

Конкретно эта статья нацелена на отладку веба/среднего слоя, поэтому данный материал не рассматривался.
Оба этих «инструмента» не подходят ни для отладки, ни для логгирования.
Это будет дикий overkill — логгировать инструментами, рассчитанными на синхронную/полусинхронную работу. Особенно, для каких-нибудь bulk-операций да еще и параллельных, да с высокой скоростью обработки — тут же упретесь в ограничения. Да еще и не дает возможности «заглянуть в прошлое».
А для логгирования лучше использовать что-то более гибкое и стандартное, например, всяческие аналоги логгеров из Java:
github.com/OraOpenSource/Logger
log4plsql.sourceforge.net

Спасибо за обзор инструментов, но в рамках данной статьи была цель показать как пользоваться оракловыми средвами без внешних инструментов ;)
А разве dbms_pipe работает между разными нодами Oracle RAC?
Не пробовал, если есть возможность проверь и отпишись в коменты. ;)
Конечно, не работает. Читать пайпы можно только внутри одной ноды, чтобы читать с другой — надо подключаться и к другой ноде тоже.
только pipe периодически забивается и приходится использовать метод: dbms_pipe.purge

Надо использовать при открытии pipe параметр maxpipesize с адекватным значением и не забывать выбирать из pipe все сообщения. И ничего забиваться не будет.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории