Oracle Developer👨🏻‍💻
3.17K subscribers
583 photos
64 videos
2 files
470 links
🔝 канал о разработке в СУБД Oracle:
SQL, PL/SQL, оптимизация, архитектура и многое другое...

Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ.

Отец-основатель: @denis_dbd Кивилёв Денис
Download Telegram
Пакет dbms_application_info

В Oracle существует очень много встроенных пакетов с различным функционалом. Хочу рассказать вам, о довольно, полезном пакете dbms_application_info.

С помощью него можно установить/получить свойства сессии:
- название приложения, модуля, текущего действия.
- отражение прогресса длительных операций (уже делаю видео).

На скриншоте примеры сессий, для которых я установил эти значения.

Установка значений дает некоторые плюсы:
1. Вы всегда безошибочно найдете в списке сессий ваши приложения/модули и будете иметь представление, что они делают в данный момент.
2. В трейс-файлы будут попадать эти установленные значения, что также удобно.
3. ДБА смогут безошибочно находить владельца определенной сессии.
4. Сразу, облегчается диагностика проблем.

В следующих постах остановлюсь подробней как использовать.

#пакеты #dbms_application_info
Использование dbms_application_info

Рассмотрим приложение относящееся к некой платежной системе.
1. Приложение называется - wallet-app.
2. Модуль, в котором была создана сессия, относится к проведению платежей - payment-processing.
3. Конкретное выполняющееся действие “приватный платеж p2p” - processing private payment.

Как установить эти значения?

Название приложения:
begin
dbms_application_info.set_client_info('wallet-app');
end;
Можно задать сразу после создания сессии.

Название модуля и действия:
begin
dbms_application_info.set_module('payment-processing', 'processing private payment');
end;

Вызываем с разными значениями походу выполнения.

Где посмотреть выставленные значения ?

В системном представлении:
select t.client_info, t.module, t.action, t.*
from v$session t;

или непосредственно в сессии:
dbms_application_info.read_module
dbms_application_info.read_client_info

#пакеты #dbms_application_info
Прогресс для длительных операций

Знакома ли вам такая ситуация? Запускается какой-то тяжелый процесс (джоб, скрипт) и вы понятия не имеете на каком этапе находится выполнение, сколько осталось до конца, сколько прошло? А очень хотелось бы 🔮

Это как скачивание файла. В браузере можно посмотреть прогресс.
Так бы взять и перенести это в Oracle 🧙🏻‍♀️

Однако, в Oracle уже есть встроенный механизм, которые это делает для тяжелых SQL-запросов.
Мы его можем переиспользовать под свои нужны - для отображения прогресса выполнения в PL/SQL-программах.

Используется для этого наш старый знакомый пакет dbms_application_info и процедура - set_session_longops.

Первый вызов инициализирует условный “прогресс бар”, последующие вызовы его инкрементируют.

Сам “прогресс бар” доступен в системном представлении - v$session_longops.

В четверг будет видео на эту тему со всеми подробностями и примерами. Не пропустите 🎥

#пакеты #dbms_application_info