Oracle Developer👨🏻💻
رفتن به کانال در Telegram
🔝 канал о разработке в СУБД Oracle: SQL, PL/SQL, оптимизация, архитектура и другое... Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ. Основатель: @denis_dbd Кивилёв Денис Менеджер: @love_flowerrr Влада
نمایش بیشتر3 402
مشترکین
+124 ساعت
+47 روز
+7530 روز
آرشیو پست ها
3 402
Коллеги, напоминаем, что вебинар по оптимизации Oracle SQL уже через час 🔥
На вебинаре будем учиться читать планы запросов, присоединяйтесь, будет мегаполезно 😉
👉👉 ССЫЛКА НА ЭФИР 👈👈
#вебинар #Оптимизация
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
3 402
Вебинар по оптимизации Oracle SQL уже завтра 🔥
Коллеги, всем привет! 👋
Завтра, 2 июля в 19:00 МСК, проведем вебинар по чтению планов запросов в Oracle. Это не обзорная лекция - это концентрированная практика на 2-3 часа с разбором реальных кейсов.
👉 Если вы работаете с Oracle и хоть раз ловили себя на мысли "смотрю в план и вижу фигу", этот эфир именно для вас.
Что разберём на вебинаре:
🔹 Что такое план запроса, какие виды бывают и зачем это знать в реальной работе - не в теории, а на живых примерах
🔹 Как правильно читать последовательность выполнения операций - это не так очевидно, как кажется большинству разработчиков
🔹 На какие колонки плана смотреть в первую очередь, а какие можно смело игнорировать
🔹 Разбор реальных кейсов: находим узкие места и объясняем, почему "вот здесь надо переписать"
🔹 Бонус, если останется время: сравним планы запросов Oracle и PostgreSQL ИЛИ как читать планы на 800 строк.
🧠 Умение читать планы - это не абстрактная теория, это нужно как на собеседованиях так и в реальной работе.Приходите сами и зовите коллег, которые работают с Oracle или хотят разобраться в оптимизации SQL. Потом скажут спасибо 😉 Всем продуктивного вечера и до встречи на эфире! 🚀 #оптимизация_SQL #Oracle #базы_данных #вебинар #планы_запросов #обучение #карьера_в_IT Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE
3 402
Predicate Information - недооценённый блок 🔍
Друзья, всем привет! С вами Денис.
Казалось бы, блок Predicate Information в плане выполнения - штука всем известная. Но на практике его реальную силу многие недооценивают.
В новом видосе показал конкретный кейс (не выдуманный - взял прямо из нашего чатика 👇)
У Максима был запрос, и было не совсем очевидно, почему не работает секционирование. Хотя ключ секционирования участвует в предикатах. Именно блок Predicate Information дал ответ.Вот как один блок в плане запроса может сэкономить вам часы отладки. И традиционно зову на бесплатный вебинар 🎓 📅 2-го числа - читаем и анализируем планы выполнения запросов в Oracle SQL Буду стараться сжать материал, но честно предупреждаю - часа на 2-3 зависнем точно 😄 Так что запасайтесь водичкой и приходите. Будет интересно 🔥🔥🔥 Всех жду 🤝 #oracle #sql #optimization #execution_plan #вебинар #Denis_Kivilev Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE
3 402
+5
Анонс вебинара по оптимизации Oracle SQL 🔥
Коллеги, всем привет! 👋
2 июля в 19:00 МСК проведу вебинар по чтению планов запросов в Oracle - концентрированная практика без воды, 2-3 часа реальных технических знаний.
Что будет на вебинаре ❓
Ведущий - Денис Кивилев. Программа:
📚 Что такое планы запросов, какие виды бывают и зачем они нужны в реальной работе
🤩 Как правильно читать последовательность выполнения операций - это не так очевидно, как кажется
👨💻 На какие колонки в плане обращать внимание, а какие можно игнорировать
💡 Разбор реальных кейсов - применим знания на практике
🔷 Расскажу про курс по Оптимизации
Если останется время и будет желание - сравним планы запросов в Oracle с PostgreSQL.
⚠️ Несмотря на сжатый формат, это реальная возможность прокачать навык, который постоянно нужен в работе.
Умение читать планы запросов - это не абстрактная теория, а конкретный инструмент, который помогает находить узкие места, ускорять запросы и объяснять коллегам, почему "вот здесь надо переписать".
Итак, коллеги, подытожим:
🗓 Вебинар пройдет 2 июля в 19:00 МСК - чтение планов запросов в Oracle.
Ссылка будет опубликована в канале 🔗
Если вы хотите разобраться в планах запросов системно и с конкретными примерами - приходите на вебинар.🔥
Это 100% вам пригодится в работе или на собесе.
Обязательно приглашайте коллег. Потом они вам спасибо скажут 😉
Всем продуктивной недели! 🚀
P.S. на скринах отзывы с предыдущих вебинаров и марафона
#оптимизация_SQL #Oracle #базы_данных #вебинар #планы_запросов #обучение #карьера_в_IT
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
3 402
🔥ТОП ПОСТОВ за ИЮНЬ месяц, которые вы могли пропустить
Коллеги, всем привет! 👋
Как и говорили ранее, каждое последнее воскресенье месяца мы будем публиковать обзоры на наши посты.
Хотим напомнить, что у нас на канале выходит очень много полезного и интересного материала, и вы 100% могли что-то пропустить.
Обязательно делитесь постами с коллегами и друзьями!
Впереди много интересного 🤗🔥
Посты про мок-собеседования и прочие темы
▫️ Мок-собеседование - это не экзамен. Это способ не провалить реальное интервью 🔥👌
▫️ Денис, а ты сам то учишься? Рассказ об обучении, которое проходит Денис.
▫️ Старт 5-го потока по Секционированию.
▫️ Oracle будет жить🔥
▫️ Рынок постепенно становится сеньорским
ТЕХНИЧЕСКИЕ ПОСТЫ
▫️ Курсоры в Oracle
▫️ Миф: явный курсор работает быстрее неявного
▫️ Блок Column Projection Information в плане запроса
▫️ Что означает колонка Starts в плане выполнения?
Информация о предстоящих мероприятиях:
▫️ Расписание вебинаров этим летом
Коллеги, не забываем записываться на мок-собеседование, это отличная возможность «потренироваться» и проверить свои знания 🔥
Записаться можно у Влады.
#обзорныепосты #топпостов
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
3 402
Коллеги, всем привет! 👋
Сегодня пятница, а значит время расслабиться 🏝✨
Разбавим долгожданный конец рабочей недели пятничным юмором, ставьте реакции 😄👏
Также напоминаем, что уже 2.07 в 19:00 МСК пройдет вебинар по анализу планов запросов 📊💻.
Будем учиться читать планы запросов, ну и как всегда, будет моооре практики, не пропустите, всех ждём! 😉🚀
Ссылка на вебинар будет опубликована здесь 02.07, следите за анонсами 🔥🔗
Всем хороших выходных! 👍🌞
3 402
Что означает колонка Starts в плане выполнения? 🤔
Коллеги, всем привет! 👋
С вами Денис.
Записал небольшое видео, где разбираю один из вопросов, который регулярно задаю на своих mock-собеседованиях по оптимизации Oracle.
Казалось бы, простой вопрос:
Что означает колонка Starts в таблице операций?Но именно на таких вопросах очень быстро становится понятно, человек действительно умеет читать планы запросов или просто выучил теорию или нахватался "по верхам". Одно дело - знать определения. Совсем другое - когда перед вами реальный план и нужно объяснить, что в нем происходит, почему именно так отработал оптимизатор и где искать проблему. Честно говоря, иногда мне самому кажется, что я задаю слишком простые вопросы. Но практика mock-собеседований показывает обратное - даже на такой базе многие начинают путаться. А ведь оптимизация - это один из ключевых навыков для Senior-разработчика. Если вы претендуете на сильные позиции, понимать планы выполнения нужно уверенно. Оптимизация - это ключ к Senior-позициям. Я нисколько не вру, помидоры в чате могут подтвердить 🍅 В видео как раз разбираю один из таких базовых вопросов. — 📅 И напоминаю, что уже в следующий четверг пройдет вебинар по анализу планов запросов. Будем учиться читать планы так, чтобы понимать, что реально происходит внутри Oracle, а не просто смотреть на красивые строчки. Забейте 19:00 02.07 в свой календарь и поставьте напоминалку 🔔 Если же хотите проверить себя в условиях, максимально приближенных к настоящему техническому интервью, всегда можно записаться ко мне на mock-собеседование. Разберем ваши сильные и слабые стороны, и я дам рекомендации, что стоит подтянуть ✅ Всем хорошего дня! 🤝 #oracle #sql #performance #executionplan #оптимизация #собеседование #senior #Denis_Kivilev Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE
3 402
Блок Column Projection Information в плане запроса 📺
Коллеги, всем привет! 👋
С вами Денис.
В преддверии нашего вебинара по анализу планов запросов решил немного «разбудить ваш аппетит» и записал небольшое видео.
Разбираем два важных блока в плане: Predicate Information и Column Projection Information. Если совсем кратко:
🔹 Predicate Information — это про то, как данные фильтруются (Filter) и как происходит доступ (Access). То есть «как мы ищем».
🔹 Column Projection Information — это про то, что операция отдает «наверх». Какие конкретно колонки и данные участвуют в процессе.
Зачем это знать?
Эти блоки — настоящая кладезь при глубоком анализе. Например, они помогают ответить на вопросы:
❓ Почему здесь не подцепился индекс, который я ждал?
❓ Почему не сработал Index Fast Full Scan?
❓ Какие колонки были лишними и «раздули» план?
Посмотрите видео, там нагляднее.
🚀 И напоминаю: жду вас и ваших коллег на вебинаре 2-го июля. Как обычно, будет море практики, разберем хитрости и тонкости, о которых не пишут в учебниках. Залетайте, будет интересно!
Бонусом думаю сравнить планы в Oracle и PG. Если это кому-нибудь надо, конечно 😉
Всем оптимальных планов и хорошего дня! 🤝
#oracle #sql #performance #tuning #план_запроса #оптимизация #вебинар #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
3 402
Рынок постепенно становится «сеньорским» 📊
Коллеги, всем привет! 👋
Этот пост для Oracle-разработчиков, которые хотят понять, куда движется рынок и что с этим делать.
Ещё несколько лет назад компании охотно брали джунов, обучали их под себя и терпеливо ждали результата. Сейчас картина другая.
👉
По данным исследований (SuperJob, hh.ru) за первый квартал 2026 года: объём найма сократился на 20% год к году, а число резюме на рынке выросло на 34% по сравнению с аналогичным периодом 2025-гоКонкуренция за вакансии растёт, а компании становятся всё более избирательными. Что именно меняется: 🔹 Джунов берут неохотно. Бизнес не хочет тратить 6-12 месяцев на «доращивание» - слишком дорого и рискованно в текущих условиях. 🔹 Мидлы без чёткой специализации теряются. «Умею всего понемногу» - уже не аргумент. Работодатель ищет того, кто закроет конкретную задачу с первого дня. 🔹 Сеньоры с глубокой экспертизой в Oracle - в дефиците. Таких специалистов мало, и спрос на них устойчив даже на фоне общего охлаждения рынка. Это не временный тренд. Рынок взрослеет: компании платят за результат, а не за потенциал. 🧠 Что это значит? 🧑🎓Если вы мидл - момент прокачаться до уверенного сеньора лучше, чем ждать, пока разрыв между вашим уровнем и требованиями рынка станет ещё больше. ⚠️ Конкретно: углубляйтесь в оптимизацию запросов, архитектуру БД, работу с большими объёмами данных, PL/SQL-паттерны. Это то, что реально отличает сеньора от мидла на собеседовании и в реальной работе. Если хотите системно закрыть пробелы и выйти на уровень уверенного Senior Oracle-разработчика - заполните анкету предзаписи на наш курс 👇 👉 ЗАПОЛНИТЬ АНКЕТУ 👈 Это вопрос вашей выживаемости в профессии. Нужно становится Senior-специалистом. Всем чистых запросов и стабильного прода! 🚀 #oracle #карьера_в_IT #базы_данных #рынок_труда #обучение #senior #PL_SQL Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE
3 402
Oracle будет жить 🔥
Коллеги, всем привет! 👋
Разговоры об уходе Oracle с российского рынка не утихают уже несколько лет. Но давайте смотреть на факты, а не на заголовки 🧐
👉 Реальность такова: огромный пласт критичных систем в России по-прежнему работает на Oracle - и никуда в ближайшее время не денется.
Что происходит на самом деле:
Да, импортозамещение идёт.
По данным Forbes, крупнейшие банки рассчитывают достичь 90% импортозамещения лишь к 2027 году. А по данным GlobalCIO, сам процесс займёт от 5 до 10 лет в зависимости от конкретных систем.Это не абстрактные цифры. Это годы реальных проектов, поддержки, оптимизации и миграций - где нужны люди, которые глубоко понимают Oracle. 🔹 Там, где системы работают и приносят деньги, их не переписывают ради идеи. 🔹 Легаси на Oracle в банках, промышленности и госсекторе - это не технический долг, это действующий прод. 🔹 Специалистов, которые умеют с этим работать, на рынке меньше, чем открытых вакансий.
По данным Quick-Offer, Senior DBA с экспертизой в Oracle получает в среднем от 290 000 ₽. Потолок по прогнозам SuperJob - от 600 000 ₽ и выше🧠 Парадокс момента: пока одни ждут, "когда Oracle совсем уйдёт", другие прокачивают экспертизу и становятся дефицитными специалистами именно на переходном периоде - самом длинном и самом оплачиваемом. 🔸 Oracle в России - это не прошлое, это настоящее ещё на много лет вперёд. 🔸 Переходный период создаёт спрос на тех, кто умеет оптимизировать и поддерживать существующие системы. 🔸 Прокачивать знания сейчас - значит быть востребованным именно тогда, когда рынок в этом больше всего нуждается. Простая связь: теперь рынок сеньерский, чтобы им быть - нужно знать оптимизацию. Как им стать? Прокачивать себя любимого, вкладываться в своё образование. ⚠️ Если хотите системно разобраться с оптимизацией Oracle - мы открываем предзапись на 8-й поток курса. Заполните анкету, чтобы узнать детали и зафиксировать место 👇 ЗАПОЛНИТЬ АНКЕТУ Удачи в проектах и пусть ваши запросы выполняются быстро! 🚀 #oracle #базы_данных #карьера_в_IT #оптимизация #DBA #импортозамещение #обучение Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE
3 402
Миф: явный курсор работает быстрее неявного 🧐
Друзья, всем привет!
С вами Костя Андронов 👋
Сегодня разберём миф, который дожил с 90-х: «явный курсор эффективнее неявного».
🕰 Откуда ноги растут
В 7 версии Oracle (PL/SQL 2.2) неявный курсор действительно был медленнее. По стандарту ANSI SQL запрос на одну строку обязан убедиться, что строка ровно одна — значит, делается второй FETCH, чтобы поймать
TOO_MANY_ROWS. 2 FETCH вместо 1 — отсюда легенда.
В следующем релизе PL/SQL 2.3 неявные курсоры оптимизировали, и с тех пор они работают чуть быстрее явных. Но миф жив до сих пор 🤯
⚙️ Три варианта на примере
SELECT INTO — короткий, читаемый, но обязан получить ровно одну строку:
declare
v_name employees.last_name%type;
begin
select last_name
into v_name
from employees
where employee_id = 100;
exception
when no_data_found then
null; -- обработка
end;
OPEN/FETCH/CLOSE — больше кода, зато полный контроль: проверяем %NOTFOUND без exception:
declare
cursor c is
select last_name
from employees
where employee_id = 100;
v_name employees.last_name%type;
begin
open c;
fetch c into v_name;
if c%notfound
then
null; -- обработка
end if;
close c;
end;
Cursor FOR Loop — компактно для множества строк, Oracle сам открывает/закрывает:
begin
for r in (select last_name
from employees
where department_id = 10)
loop
dbms_output.put_line(r.last_name);
end loop;
end;
📊 Что говорят цифры
Steven Feuerstein (Oracle ACE, автор книг по PL/SQL) прогнал бенчмарк на 100 000 итераций (оригинальная статья тут) . Поиск одной строки, которая есть в таблице:
🔹 SELECT INTO — 4.703 сек
🔹 Cursor FOR Loop — 4.685 сек
🔹 OPEN/FETCH/CLOSE — 5.209 сек
А вот когда строки нет:
🔸 SELECT INTO — 6.372 сек (NO_DATA_FOUND стоит дорого)
🔸 Cursor FOR Loop — 4.560 сек
🔸 OPEN/FETCH/CLOSE — 4.703 сек
На «холостых» запросах генерация исключения NO_DATA_FOUND из SELECT INTO съедает всё преимущество.
🧭 Когда что выбирать
✅ SELECT INTO — одна строка, и она почти всегда есть. Дефолтный выбор.
✅ OPEN/FETCH/CLOSE — одна строка, и «не нашли» — частый случай. Избегаем дорогого NO_DATA_FOUND.
Но с точки зрения читаемости явные курсоры проигрывают: код громоздкий, сам запрос вынесен в секцию`declare` — и потом приходится возвращаться к нему глазами, чтобы понять, что за данные пошли в бизнес-логику. Плюс важно не забывать закрывать курсор — об этом разработчики регулярно забывают.
🤔А что насчёт цикла FOR для гарантированно одной строки?
Работает он быстро, но при чтении кода интуитивно сбивает: такой цикл обычно ассоциируется с многострочными запросами. Можно добавить явный exit; в конце цикла — тогда видно, что он отработает только для одной строки, но и не будет исключения если запрос вернет несколько строк и результат будет неожиданным. Использовать ли такой вариант — решайте сами, по производительности он не уступает.
Итог 🧩
«Явный курсор быстрее» — это про 7 Oracle из эпохи модемов. Сегодня правило другое: смотрите не на тип курсора, а на то, что вероятнее — найти строку или промахнуться.
А вообще производительность чаще страдает совсем не от выбора типа курсора — а от десятков других причин, которые разбираем на курсе по оптимизации.
А вы какой курсор используете по умолчанию? Делитесь в Чатике — обсудим ваши кейсы 💬
С вами был Костя. Хорошего дня и быстрых запросов! 🚀
#oracle #plsql #курсоры #оптимизация #базы_данных #Konstantin_Andronov
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE3 402
Расписание вебинаров этим летом ☀️
Коллеги, всем привет! 👋
Летом мы НЕ планируем уходить в режим "почитаю потом". Наоборот - собрали серию вебинаров для разработчиков, QA, аналитиков и тех, кто хочет спокойнее проходить собеседования, разбираться в архитектурных решениях и меньше тушить пожары в проде.
👉 Чтобы не ловить анонсы вручную в ленте, лучше сразу подписаться на нашего бота. Он напомнит о вебинарах заранее и не даст пропустить их.
Что запланировали на лето
🌞 Июль - Вебинар на тему «Чтение планов запросов»
Разберем куда смотреть, какие выводы делать, как читать планы по 600-800 строк.
Бонус: сравним чтение планов в Oracle и PostgreSQL на парочке примеров.
☀️ Июль - Вебинар на тему «Методы индексного доступа»
Разберем наиболее популярные методы индексного доступа, посмотрим когда какой подходит, как правильно отвечать на вопросы на собесах.
Бонус: разберем устройство LSM-индекса, который может заменить привычный B-tree
☀️ Август - Вебинар на тему «Методы соединения таблиц»
Разберем все виды соединения таблиц, их особенности, когда/какие применять, на что обращать внимание в планах.
Бонус: сравним с PostgreSQL.
☀️ Август - Вебинар с приглашенным экспертом Любовью Прохоровой.
🍂 Сентябрь - Секреты работы с большими данными в DWH
Как ускорять запросы, какие техники применять, на что обращать внимания.
Бонус: поговорим о параллельных запросах и их возможностях
Как не пропустить?
✅ Подпишитесь на бота - туда будут приходить точные даты, время, ссылки вебинар и напоминания перед стартом.
✅ Если тема вам не подходит, просто пропустите конкретный вебинар.
✅ Если подходит - планируйте время заранее и обязательно приходите, тк записи мероприятий не будут публиковаться в общем доступе.
Лето можно провести без перегруза, но с пользой: по одному точному вебинару в нужный момент часто хватает, чтобы закрыть пробел или пересобрать подход к задаче.
Если хотите не пропустить анонсы - подпишитесь на бота по ссылке 👇
👉 ПОДПИСАТЬСЯ 👈
Будем разбирать практику без воды и магических рецептов. Оставайтесь с нами и обязательно приглашайте в канал ваших коллег 🙂
#вебинары #обучение_IT #карьера_в_IT #разработка #qa #аналитика #базы_данных
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
3 402
Курсоры в Oracle
Друзья, всем привет! 👋
С вами Костя Андронов.
Один из популярных вопросов на собеседовании по Oracle:
Что такое курсор?
Курсор — это указатель на область памяти, в которой Oracle хранит результат SQL-запроса. Когда выполняется
SELECT или DML, БД складывает строки в эту область, а курсор позволяет извлекать их в вызывающую среду.
В Oracle курсоры бывают двух видов: неявные и явные
🧩 Неявный курсор
Создаётся автоматически для любого SQL-запроса внутри PL/SQL-блока. Мы его не объявляем и не закрываем — Oracle делает всё сам.
Строго говоря, неявный курсор - это вообще любая SQL-команда: truncate, create, commit, select...
begin
delete
from dept_temp
where department_id = 10;
if sql%found then
dbms_output.put_line('Удалено строк: ' || sql%rowcount);
end if;
end;
🧩 Явный курсор
Объявляем сами, сами открываем, читаем построчно и закрываем. Даёт полный контроль над выборкой и умеет принимать параметры.
declare
cursor c_emp (p_dept number) is
select department_id,
department_name
from dept_temp
where department_id = p_dept;
v_rec c_emp%rowtype;
begin
open c_emp(10);
loop
fetch c_emp into v_rec;
exit when c_emp%notfound;
dbms_output.put_line(v_rec.department_name);
end loop;
close c_emp;
end;
Информацию о любом курсоре можно получить через его атрибуты, которые доступны через его имя (например c_emp) или через sql для неявных курсоров. Подробнее атрибуты курсоров разбирали в этом посте
❓ В чем сложность при работе с явными курсорами?
Если возникнет исключение между open и close (например, в fetch или в dbms_output), управление сразу уйдёт за пределы блока (или в exception-секцию, если она есть), и close c_emp; не выполнится.
Курсор останется открытым 😱
Почему это плохо:
🔸 Курсор занимает слот в open_cursors сессии, а они ограничены
🔸 Если такой блок вызывается в цикле или в процедуре, которая вызывается часто, рано или поздно можно поймать ORA-01000: maximum open cursors exceeded
🔸 В анонимном блоке верхнего уровня, после окончания вызова, Oracle сам подчистит сессионные ресурсы, но полагаться на это — плохая практика.
⚠️ Как с этим бороться?
1️⃣ Перехватить исключение в exception блоке
...
exception
when others then
if c_emp%isopen then
close c_emp;
end if;
raise;
end;
2️⃣ Использовать цикл FOR. Oracle сам объявит переменную типа %rowtype, откроет и закроет курсор (даже при исключении), будет извлекать строки по 1 на каждой итерации обязательного цикла:
begin
for rec in (select department_name
from dept_temp
where department_id = 10)
loop
dbms_output.put_line(rec.department_name);
end loop;
end;
📌 Зачем нужны курсоры?
✅ Неявный — когда достаточно выполнить запрос и узнать, что вышло: сколько строк затронуто, был ли результат
✅ Явный — когда нужны параметры, контроль над FETCH, обработка нескольких выборок одновременно или передача курсора между процедурами через REF CURSOR.
❤️ Если тема зашла — cтавьте 👍🏻, разберём, есть ли разница в производительности между явным и неявным курсором
С вами был Костя Андронов. Всем продуктивного дня! 🚀
#oracle #plsql #курсоры #Konstantin_Andronov
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE3 402
Коллеги, всем привет! 👋
Вчера прошел очень интересный и актуальный эфир с Любой. Как всегда, было много полезной информации о текущей ситуации на рынке и поиске работы. 📈
После эфира Люба попросила нас пройти небольшой анонимный опрос - всего 7 вопросов о поиске работы в этом году. 📝
Если у вас есть несколько минут, давайте поддержим Любу и заполним анкету по ссылке ниже ✍️
👉 ЗАПОЛНИТЬ АНКЕТУ 👈
Спасибо всем за участие и хороших выходных!
#карьера_в_IT #soft_skills
#работа #поиск #оффер #собеседование
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
