Дорогие подписчики!
Дорогие подписчики! → В Digital Q.DataBase мы последовательно расширяем набор встроенных пакетов, обеспечивающих совместимость с PL/SQL-окружением Oracle. Сегодня я расскажу Вам о двух важных пакетах, которые были добавлены (в числе прочих) в последнюю вышедшую версию Digital Q.DataBase. DBMS_ALERT — уведомления между сеансами → Пакет DBMS_ALERT предоставляет механизм асинхронной передачи уведомлений между различными сеансами работы с базой данных. Это позволяет одному сеансу отправить сигнал о наступлении определенного события, а другим сеансам — ожидать его и реагировать. Основные возможности: · Регистрация на получение уведомлений с указанием имени сигнала; · Отправка уведомлений с возможностью передачи короткого текстового сообщения; · Ожидание уведомления с настройкой таймаута; · Возможность одного сеанса подписаться на несколько сигналов одновременно. Пример использования: ```sql -- Сеанс 1: регистрируется на получение уведомления EXEC DBMS_ALERT.REGISTER('my_alert'); -- Сеанс 2: отправляет уведомление EXEC DBMS_ALERT.SIGNAL('my_alert', 'Данные обновлены'); -- Сеанс 1: ожидает уведомление DECLARE v_name VARCHAR2(100); v_msg VARCHAR2(1000); v_status INTEGER; BEGIN DBMS_ALERT.WAITONE('my_alert', v_name, v_msg, v_status, 30); IF v_status = 0 THEN DBMS_OUTPUT.PUT_LINE('Получено: ' || v_msg); END IF; END; ``` Области применения: · Оповещение прикладных модулей об изменении справочных данных; · Координация работы параллельных процессов; · Информирование администраторов о наступлении пороговых событий. DBMS_APPLICATION_INFO — мониторинг выполнения операций → Пакет DBMS_APPLICATION_INFO позволяет приложению передавать в СУБД информацию о текущей выполняемой операции. Эти данные становятся доступными через системные представления и могут использоваться для мониторинга, отладки и аудита. Основные возможности: · Установка имени модуля (MODULE), который в данный момент выполняется; · Установка имени действия (ACTION) внутри модуля; · Передача дополнительной клиентской информации (CLIENT_INFO); · Отслеживание прогресса выполнения длительных операций. Пример использования: ```sql -- Начало выполнения отчета EXEC DBMS_APPLICATION_INFO.SET_MODULE('Отчетность', 'Формирование годового отчета'); -- Уточнение действия внутри модуля EXEC DBMS_APPLICATION_INFO.SET_ACTION('Загрузка данных'); -- Выполнение длительной операции INSERT INTO annual_report SELECT * FROM operations WHERE period = 2025; -- Обновление прогресса EXEC DBMS_APPLICATION_INFO.SET_ACTION('Агрегация данных'); -- Дальнейшие операции... -- Завершение EXEC DBMS_APPLICATION_INFO.SET_MODULE(NULL, NULL); ``` Области применения: · Отслеживание длительных операций в системах мониторинга; · Идентификация источника нагрузки в представлениях сессий; · Аудит действий прикладного кода; · Отладка сложных хранимых процедур. → В ближайшее время расскажем Вам и о других DBMS пакетах, добавленных в вышедшую 21 марта версию.