Основная база данных в компании знает обо всём и про всех. В Oracle уже есть заказы, остатки, платежи, статусы документов, журналы обмена, сервисные заявки и результаты ночных заданий. Но пока кто-то не откроет отчет или не проверит лог, эта информация остается внутри базы.
Отсюда частый практический вопрос: как отправить сообщение из Oracle PL/SQL в чат, мессенджер или webhook, чтобы люди получили уведомление сразу?
В этой статье покажем такой сценарий на примере корпоративного мессенджера MyChat. База данных Oracle в PL/SQL формирует JSON, отправляет HTTP POST через UTL_HTTP, а MyChat показывает сообщение пользователю или в конференции. Для сотрудника это выглядит как обычное сообщение в корпоративном чате, на компьютере или в смартфоне. Для Oracle-специалиста — как небольшой PL/SQL-пакет, ACL и вызов REST API. Максимально компактно и практично.
Почему это нужно не только администраторам Oracle
Уведомления из базы данных нужны не ради красивой интеграции. Они нужны, чтобы важные события не терялись между отчетами, почтой и ручными проверками.
Примеры из обычной корпоративной жизни:
- товар на складе опустился ниже минимального остатка;
- заказ клиента завис на согласовании;
- платеж по счету просрочен;
- ночной импорт из внешней системы завершился с ошибкой;
- регламентное задание Oracle отработало дольше обычного;
- появилась сервисная заявка с высоким приоритетом;
- документ нужно подписать сегодня, но ответственный еще не открыл систему;
- операция в ERP, CRM или на сайте-магазине вернула ошибку.
Во всех этих случаях можно отправить email. Но email часто превращается в склад непрочитанных писем. К тому же есть шанс попасть в спам, если вы не контролируете почтовый ящик получателя. А короткое сообщение в рабочий чат обычно замечают быстрее, особенно если оно попадает не всем подряд, а в правильную конференцию или ответственному человеку в приват.
Чем сложнее и больше система — тем важнее оперативные уведомления в чат. Очень тоскливо прийти на работу в понедельник и увидеть, что бекап начался в пятницу ночью и застрял, потому что закончилось свободное место на диске (реальный кейс из жизни).
Почему MyChat, а не Slack, Teams или Telegram
Если искать в интернете похожие задачи, чаще всего встречаются запросы вроде Oracle PL/SQL Slack webhook, send Teams notification from Oracle, PL/SQL Telegram sendMessage, UTL_HTTP webhook. Это понятный класс задач: событие в базе данных превращается в HTTP-запрос, а на другой стороне появляется сообщение.
Но у корпоративной инфраструктуры есть своя специфика. Не каждая компания хочет отправлять номера заказов, суммы счетов, имена клиентов, складские остатки или технические ошибки во внешний публичный сервис.
MyChat в этом сценарии удобен тем, что сервер мессенджера устанавливается внутри вашей инфраструктуры. Сообщения остаются в корпоративном контуре, а уведомления попадают туда, где сотрудники уже работают: в приват, отдел продаж, складскую конференцию, технический канал или чат дежурной смены. Не в чужое облако в интернете, а на ваш self-hosted сервер, который вы контролируете. Он тоже может быть в облаке, не обязательно в LAN. Но в вашем облаке, под вашим контролем.
Как выглядит уведомление для пользователя
Пользователь не видит всех этих UTL_HTTP, JSON и Oracle ACL. Он получает понятное сообщение:
Склад: остаток товара "Картридж X-120" ниже минимума. Осталось: 4 шт. Минимум: 10 шт. Склад: Центр, Основной. Ответственный: отдел закупок.
Или такое:
Финансы: счет № INV-2026-01845 просрочен на 3 дня. Клиент: ООО "Стена". Сумма: 148 500. Менеджер: Джон Сноу.
Хорошее уведомление из Oracle Database в мессенджер должно отвечать на четыре вопроса: что произошло, где произошло, насколько это важно и кто должен действовать.

Реальные кейсы для Oracle Database
Низкие остатки на складе
В Oracle есть таблица остатков и минимальных норм. DBMS_SCHEDULER раз в час запускает PL/SQL-процедуру, которая ищет позиции ниже порога. Если товар обычный, сообщение уходит в конференцию закупок. Если товар критичный, Oracle дополнительно отправляет приватное сообщение ответственному менеджеру.
Зависший заказ клиента
Заказ создан, сумма большая, но статус «ожидает согласования» не меняется больше двух часов. PL/SQL-процедура отправляет руководителю отдела продаж сообщение с номером заказа, клиентом, суммой и ответственным согласующим.
Ошибка ночного обмена
Каждую ночь база принимает данные из внешней системы: цены, накладные, остатки, платежи. Если пакет обмена завершился с ошибкой, техническая конференция MyChat получает сообщение: имя задания, время, код ошибки и ссылка на внутренний журнал.
Просроченный платеж
Финансовый модуль видит, что счет не оплачен в срок. Менеджеру уходит приватное сообщение, а руководитель получает только крупные просрочки выше заданного порога. Так чат не превращается в шум, но важные деньги не выпадают из внимания.
Критичная сервисная заявка
В таблице заявок появляется обращение с приоритетом «критично». Oracle отправляет сообщение в конференцию дежурных инженеров: номер заявки, объект обслуживания, город, клиент и краткое описание проблемы.
Oracle PL/SQL webhook: как это устроено
Технически это похоже на обычный webhook, только инициатором выступает Oracle Database. В базе происходит событие, PL/SQL формирует JSON, затем выполняется HTTP POST на REST API MyChat.
В примере используются стандартные механизмы Oracle:
- UTL_HTTP — отправка HTTP/HTTPS-запроса из PL/SQL;
- JSON_OBJECT — аккуратная сборка JSON без ручного склеивания строк;
- UTL_I18N.STRING_TO_RAW — отправка тела запроса в UTF-8, чтобы можно было писать на национальных языках, а не только на английском;
- Oracle ACL — разрешение конкретной схеме подключаться к host-у MyChat-сервера;
- DBMS_SCHEDULER — запуск регулярных проверок и отправка уведомлений по расписанию.
Oracle отправляет JSON методом POST на MyChat Server через его Integration API.
Что умеет пакет MYCHAT_API
В нашем примере создается PL/SQL-пакет MYCHAT_API. Он закрывает две самые частые операции:
- отправить приватное сообщение пользователю;
- отправить сообщение в текстовую конференцию.
Ключ Integration API и базовый URL сервера мессенджера MyChat сохраняются внутри отдельной Oracle-схемы. Рабочая схема приложения может получить только право execute на пакет. Это удобнее, чем разбрасывать ключ API по процедурам, триггерам и job-ам. Ключевое правило — не хардкодим. Настройки должны быть в одном месте и их легко изменять.
В MyChat есть основные две сущности, это пользователи и конференции. У кадого пользователя есть уникальный номер, UIN. А у конференции — UID. На них можно опираться, это удобные числовые идентификаторы. Их можно увидеть в админке сервера в списке пользователей и в списке активных конференций.
Пример: отправить приватное сообщение из Oracle
После установки пакета можно выполнить запрос прямо из SQL*Plus, SQL Developer, PL/SQL-процедуры или job-а:
select dbms_lob.substr(
mychat_api.send_private_message(
p_user_to => '6',
p_msg => 'Тестовое сообщение из Oracle PL/SQL'
),
4000,
1
) as response
from dual;В реальном сценарии вместо тестового текста обычно подставляют данные из таблиц:
Заказ № 15842 ожидает согласования больше 2 часов. Клиент: ООО "Стена". Сумма: 248 000.
Так Oracle может отправить сообщение из процедуры, job-а или прикладного PL/SQL-пакета без отдельного внешнего сервиса.
Пример: отправить сообщение в конференцию MyChat
Если уведомление нужно не одному человеку, а отделу или дежурной группе, удобнее отправлять его в конференцию:
select dbms_lob.substr(
mychat_api.send_conference_message(
p_uid => 2,
p_msg => 'Тестовое сообщение из Oracle PL/SQL'
),
4000,
1
) as response
from dual;p_uid — это UID текстовой конференции MyChat. Такой формат подходит для складских уведомлений, технических ошибок, событий продаж, бухгалтерии и дежурных смен.


Где лучше запускать отправку
Есть три типовых варианта.
Ручная проверка из SQL*Plus или SQL Developer
Так удобно убедиться, что Oracle видит MyChat Server, ACL настроен, ключ Integration API правильный, а русский текст не превращается в кракозябры.
Вызов из существующей PL/SQL-процедуры
Если бизнес-событие уже обрабатывается процедурой, можно добавить вызов MYCHAT_API рядом с существующей логикой. Например, после смены статуса заказа или после завершения обмена.
Регулярное задание через DBMS_SCHEDULER
Для большинства уведомлений это самый спокойный вариант. Oracle выбирает события, по которым еще не было сообщения, отправляет уведомления в MyChat и помечает записи как обработанные.
Триггеры тоже возможны, но с ними лучше осторожно. HTTP-запрос внутри триггера может замедлить транзакцию и привязать бизнес-операцию к доступности сети. Часто надежнее записать событие в таблицу очереди, а отправку делать отдельным job-ом.
Частые технические проблемы: ACL, HTTPS и кодировка
Когда люди ищут Oracle ACL UTL_HTTP, обычно они уже столкнулись с ошибкой вроде:
ORA-24247: network access denied by access control list
Это значит, что Oracle не разрешает текущей схеме сетевой доступ к нужному host-у. Для отправки сообщений в MyChat нужно выдать схеме право connect через DBMS_NETWORK_ACL_ADMIN.
Вторая частая зона — HTTPS. UTL_HTTP умеет работать с HTTPS, но в некоторых конфигурациях может понадобиться Oracle Wallet и сертификаты. В локальных тестах проще сначала проверить обычный GET/POST к серверу, затем уже разбираться с сертификатами, proxy и политиками безопасности.
Чтобы проверить, какой протокол (HTTP или HTTPS) и порт использует ваш MyChat Server — загляните в админку.
Третья проблема — кодировка. Если сообщение содержит национальные символы UNICODE, тело JSON надо отправлять в UTF-8. В нашем пакете это делается через UTL_I18N.STRING_TO_RAW(…, ‘AL32UTF8’).
Почему не просто email
Email остается хорошим каналом для документов, отчетов и длинных уведомлений. Но для оперативных событий он часто слишком тяжелый.
Чат лучше подходит, когда нужно быстро привлечь внимание: «остаток ниже минимума», «обмен упал», «заказ завис», «платеж просрочен», «критичная заявка создана», «регламентное задание не завершилось».
Сообщение в MyChat можно сразу обсудить с коллегами, переслать ответственному, закрепить контекст в конференции или использовать как старт разговора внутри отдела.
Как не превратить чат в помойку
Главное правило: отправлять только то, что требует реакции.
Плохое уведомление:
В таблице ORDERS есть свежие заказы.
Хорошее уведомление:
Продажи: заказ № 15842 ожидает согласования больше 2 часов. Клиент: ООО "Стена". Сумма: 248 000. Ответственный: Джон Сноу.
Лучше меньше сообщений, но каждое по делу. Тогда сотрудники начинают доверять автоматическим уведомлениям и не раздражаются, а наоборот, привыкают к удобству и надёжности.
Что получает компания
Интеграция Oracle с корпоративным мессенджером дает быстрый эффект без больших усилий:
- ответственные узнают о проблемах раньше;
- руководители видят зависшие процессы без ручной проверки отчетов;
- склад реагирует на критичные остатки;
- техподдержка получает ошибки обменов сразу после сбоя;
- внутренние данные остаются в корпоративной инфраструктуре;
- база данных становится активным участником процесса, а не молчаливым архивом.
Если сформулировать совсем коротко: Oracle не должна ждать, пока человек сам придет за информацией. Если событие важно, Oracle может отправить сообщение в MyChat сам. Все в выигрыше, и администраторы, и менеджеры, и исполнители.
Если вы искали Slack, Teams или Telegram
Эта статья может быть полезна и тем, кто искал:
- Oracle send message to chat;
- PL/SQL send webhook notification;
- Oracle PL/SQL Slack webhook;
- Oracle PL/SQL Telegram sendMessage;
- Oracle send Teams notification;
- UTL_HTTP POST JSON example.
Общая архитектура похожа: PL/SQL формирует JSON и отправляет HTTP-запрос. Отличие MyChat в том, что это корпоративный мессенджер, который можно держать на своем сервере и использовать для внутренних уведомлений без внешнего SaaS. Но вы вполне можете просто взять пакет по ссылке в конце статьи и переиначить его на свой лад, схема работы останется +/- очень близкой.
Короткие шаблоны сообщений
Начинать лучше с двух-трех понятных сценариев: низкие остатки, ошибки обмена, просроченные платежи. Если эти уведомления помогают людям работать быстрее, дальше станет ясно, какие события стоит подключать следующими.
Склад
Склад: остаток товара "{Товар}" ниже минимума. Осталось: {Остаток}, минимум: {Минимум}. Склад: {Склад}.
Финансы
Финансы: счет № {Номер} просрочен на {Дней} дн. Клиент: {Клиент}. Сумма: {Сумма}.
Техподдержка
Oracle: задание "{JobName}" завершилось с ошибкой {Код}. Время: {Время}. Подробности в журнале импорта.
Продажи
Продажи: заказ № {Номер} ожидает согласования больше {Часы} ч. Клиент: {Клиент}. Сумма: {Сумма}.
Скачать готовый пакет для DBA-админов
MyChat Integration API позволяет отправлять сообщения из Oracle PL/SQL в корпоративный чат. Для пользователя это обычное уведомление в MyChat. Для разработчика или DBA — PL/SQL-пакет, UTL_HTTP, JSON POST и ACL.
Скачать пакет mychat-oracle.zip (readme, sql-скрипты и cmd-установщик). Пакет тестировался в SQL*Plus: Release 23.26.1.0.0 на Oracle AI Database 26ai Free Release.
Такая интеграция полезна не потому, что база «умеет писать в чат», а потому что важные события начинают доходить до людей вовремя.
Берите, пробуйте, пишите ваши впечатления и вопросы на официальном форуме поддержки MyChat.





