Добавить в корзинуПозвонить
Найти в Дзене
Oracle Developer

Друзья, всем привет

! 👋 На связи Паша, ваш куратор и специалист в мире Oracle. Сегодня будет пост про релизы PL/SQL-кода на высоконагруженных системах и то, какие возможности для снижения Downtime предлагает Oracle. Итак, поехали 🚀 Зачем катить "на горячую"❓ Идеальный мир — это плановые релизы раз в 2 недели. В реальности же мы можем столкнуться с критическим багом, который не сможет "дожить до понедельника". Риски при классическом накате 1. ORA-04021 (ожидание блокировки) — пакет кто-то выполняет, вы висите в ожидании, время релиза увеличивается. ⏳ 2. ORA-04068 (existing state discarded) — пакет скомпилировался, но у активных сессий "сбросилось" состояние. 3. Каскадная инвалидация зависимых объектов. Какие есть варианты❓ • Установить ddl_lock_timeout: в некоторых случаях может помочь, но не является best practice. • Технологические окна (даунтайм): гасим приложение, выгоняем пользователей, накатываем, поднимаем. Круто, но не всегда доступно. Есть риск отказа. • Решения наподобие Oracle GoldenGa

Друзья, всем привет! 👋

На связи Паша, ваш куратор и специалист в мире Oracle. Сегодня будет пост про релизы PL/SQL-кода на высоконагруженных системах и то, какие возможности для снижения Downtime предлагает Oracle.

Итак, поехали 🚀

Зачем катить "на горячую"❓

Идеальный мир — это плановые релизы раз в 2 недели. В реальности же мы можем столкнуться с критическим багом, который не сможет "дожить до понедельника".

Риски при классическом накате

1. ORA-04021 (ожидание блокировки) — пакет кто-то выполняет, вы висите в ожидании, время релиза увеличивается. ⏳

2. ORA-04068 (existing state discarded) — пакет скомпилировался, но у активных сессий "сбросилось" состояние.

3. Каскадная инвалидация зависимых объектов.

Какие есть варианты❓

• Установить ddl_lock_timeout: в некоторых случаях может помочь, но не является best practice.

• Технологические окна (даунтайм): гасим приложение, выгоняем пользователей, накатываем, поднимаем. Круто, но не всегда доступно. Есть риск отказа.

• Решения наподобие Oracle GoldenGate: мощно, можно поднять копию базы, обновить её и переключить трафик. Подходит для систем 24/7, но очень дорого. 💸

Выход — EBR (Edition-Based Redefinition) 💡

Начиная с Oracle Database 11g Release 2, появилась возможность создавать изолированное пространство (Edition). Текущие сессии работают в старой эдиции, а вы спокойно компилируете код в новой. Никаких блокировок. Затем вы просто переключаете сессии на новую эдицию (zero-downtime).

Как это работает❓

1. Включаем поддержку EBR для конкретного пользователя:

ALTER USER my_schema ENABLE EDITIONS.

2. Выдаем права на создание/удаление эдиций:

GRANT CREATE ANY EDITION, DROP ANY EDITION TO my_schema.

3. Выдать права на использование конкретной эдиции:

GRANT USE ON EDITION release_v2 TO my_app_user;

Что МОЖНО и НЕЛЬЗЯ версионировать

✅ пакеты, процедуры, функции, представления, триггеры.

❌ таблицы, индексы, мат.представления, последовательности и т.п.

Примеры, где EBR поможет на 100%

1. Чистые изменения PL/SQL логики без создания/изменения физических объектов.

2. Мгновенный откат (Rollback) — если нужно откатить релиз, вы просто делаете ALTER DATABASE DEFAULT EDITION = old_release;, и все новые сессии мгновенно возвращаются на старый, рабочий код. Это занимает 1 секунду.

Резюме 🧩

EBR — очень мощный инструмент деплоя pl/sql-кода на production. Хотите узнать больше про его применение на практике? Тогда приходите на вебинар

📅 Когда: В четверг, 09.04, в 19:15 мск

👇 Ссылку пришлем в день эфира.

А пока пишите в наш чатик, сталкивались ли вы с необходимостью оперативного наката PL/SQL в прод ? Если да, то как выходили из ситуации?

#oracle #plsql #devops #технологии #архитектура #разработка #базы_данных #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬

Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads

RUTUBE