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

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

Отец-основатель: @denis_dbd Кивилёв Денис
Download Telegram
Решение технической задачи

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

В понедельник мы закинули вам техническую задачку про медленный запрос.
Задача вызвала живое обсуждение, за которым мы внимательно следили.
Спасибо всем, кто откликнулся, задавал вопросы, предлагал решения.
Это очень радует! 🔥

Теперь — по делу
Многие писали: «Без плана запроса сложно что-то сказать». Абсолютно верно! 💡
Но есть нюанс — большинство наших читателей подписывали NDA, и делиться подробностями из продакшн-системы, увы, нельзя.
А у кого-то и вовсе названия таблиц такие, что сразу понятно, где они работают 😅
Этот момент мы постараемся обойти в будущем, а пока — как есть.

Что с запросом?
Вы всё правильно поняли — тормоза были из-за сортировки данных.

И вот два простых способа, как это можно обойти:

1️⃣ Либо перестроить индекс, указав обратную сортировку по дате, либо добавить hint index_desc.

2️⃣ Посмотреть настройки инстанса:

* SORT_AREA_SIZE и PGA_AGGREGATE_TARGET — параметры памяти для сортировки.
* TEMP_TABLESPACE — настройка временного табличного пространства.

Если наберем 20 огонечков, расскажем про нюансы сортировки и тонкую настройку этих параметров в одном из ближайших постов. 👇🏻

Ну а оптимальным решением, конечно же, остается секционирование 🧠

Если задачка показалась вам простой — в понедельник выложим посложнее 💪
И напоминаем: вы тоже можете прислать нам свой кейс, и мы его обязательно разберём в нашем канале! 📩

#oracle #оптимизация #задача #оптимизация #performance #Pavel_Dolganov

Канал Oracle Developer | Чатик
Мини-курс Оптимизация: Быстрый старт 🚀
Еще одна техническая задачка

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

Пока мы готовим серию постов про сортировку, предлагаем поразмять мозги над одной из задачек.

Перед вами план запроса, который создаёт таблицу с архивными данными продаж старше двух последних недель. На основании этого плана нужно понять, как ускорить запрос, не меняя при этом его текст.

Версия Oracle: 12.2.0.1
Структура индекса из 4 операции: SALE_DT, COSTUMER_ID, RETAILER_ID.

Predicate Information (identified by operation id):
---------------------------------------------------

4 - access("S"."SALE_DT"<=TRUNC(SYSDATE@!)-14)

Пишите в комментариях свои вопросы, идеи, предложения 👇🏻

#oracle #оптимизация #задача #оптимизация #performance #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Учиться у тех, кто сам не перестаёт учиться

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

Мы продолжаем делиться с вами важными новостями из жизни нашей онлайн-школы! 📚

В январе мы писали пост о получении лицензии Минобразования. Но решили на этом не останавливаться! 😉

Денис и Павел прошли профессиональную переподготовку и получили квалификацию «педагог дополнительного образования»! 🎓🎉

Да-да, теперь мы не только крутые практики с многолетним опытом в разработке, но и дипломированные преподаватели! 🔥
И это не просто «красивая бумажка» — это подтверждение того, что мы умеем и можем обучать на уровне, соответствующем государственным стандартам. 💪

Каждый из нас пришёл в преподавание своей дорогой:
🔶 Денису предложили провести внутреннее обучение в QIWI, где он тогда работал 💼
🔶 Павел ещё в университете больше прислушивался к предпринимателям, которые иногда приезжали читать лекции.

Со временем мечта превратилась в хобби, которое, в свою очередь, выросло в полноценную онлайн-школу. Поэтому получение педагогического образования стало логичным шагом на пути к развитию. Ведь одно дело — объяснять «на пальцах» в узком кругу, а совсем другое — выступать перед широкой аудиторией и подавать материал так, чтобы «понял даже лабрадор», как любит говорить Денис. 😉

Что это даёт онлайн-школе

🔸 Более качественные и гибкие программы с учётом методических стандартов
🔸 Прозрачность и легитимность — особенно важно для корпоративного обучения
🔸 Авторитет. У кого вы предпочтёте учиться:
— у человека, который «и швец, и жнец, и один в поле воин»,
— или у команды, которая постоянно развивается, получает дополнительное образование и привлекает таких же энергичных, объединённых общей идеей инженеров?

А что это даёт вам — нашим студентам

Уверенность в том, что вы учитесь у тех, кто знает не только «как работает», но и как объяснить «так, чтобы дошло».
Эффективные обучающие программы: никакой воды, только то, что действительно помогает развиваться.
Индивидуальный подход: мы знаем, что все студенты индивидуальны, поэтому адаптируем стиль и содержание уроков под ваши способности и потребности. 🎯

Что же дальше

Дальше — ещё интереснее! 🤟🏻

Мы уже работаем над запуском новых курсов, где обязательно применим наши новые знания и навыки. А ещё усиливаем команду и продолжаем делать качественный контент, чтобы вам было ещё легче и увлекательнее учиться. 🌟

Спасибо, что вы с нами! ❤️
Идём дальше 🚀

#oracle #карьера #диплом #сертификация #эксперт #plsql

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Решение технической задачи

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

В понедельник мы выкладывали техническую задачу по оптимизации. Скажу по секрету, такие задачи задают на собеседовании в одном из крупных ритейлеров.

Итак, если посмотреть на план запроса, видно, что узкое место в том, что мы выгребаем из индекса 4 млн. записей, хотя архивная копия по размеру будет очень близка к исходной таблице (разница всего в 2 недели).

Какие можно дать рекомендации

1️⃣ Сбор статистики

Смотрим на статистику таблицы sales

SELECT stale_stats FROM user_tab_statistics WHERE table_name = 'SALES'


Если запрос вернет YES или <NULL> - статистика неактуальна, делаем

DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => USER, TABNAME =>  'SALES');


2️⃣ Управление индексом

Если статистика актуальна, а оптимизатор все равно считает, что нужен индекс, следует выполнить ALTER INDEX SALES_IDX INVISIBLE.

3️⃣ SQL Plan Management

Минус подхода с SQL Plan Management в том, что если вендор доработает запрос, наша «магия» с подменой плана исчезнет :( Но часто он помогает устранить "острую боль", когда нет возможности оперативно выпустить патч или исправить тормозящий запрос. Про этот подход мы более подробно рассказываем на нашем курсе по оптимизации. Там же есть куча вопросов с собеседований и тестовых заданий. Так что если вы хотите к ним лучше подготовиться - welcome

Ставь лайк, если ответил верно. Делитесь в комментариях, у кого еще Index Range Scan тормозил прод.

#oracle #оптимизация #задача #оптимизация #performance #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Что быстрее: IN или EXISTS?

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

Сегодня понедельник, самое время немного взбодриться после длинных выходных ☕️
И для разогрева предлагаем вопрос, который любят задавать на технических собесах: что же лучше — IN или EXISTS? 🤔

Итак, перед вами два запроса. Вроде бы делают одно и то же… но есть нюанс👇

-- Not Exists
SELECT /*+ FULL(d) */
d.department_name
FROM hr.departments d
WHERE NOT EXISTS (
SELECT 1
FROM hr.employees e
WHERE e.department_id = d.department_id);

-- Not IN
SELECT /*+ FULL(d) */
d.department_name
FROM hr.departments d
WHERE d.department_id NOT IN (
SELECT e.department_id
FROM hr.employees e);


🔍 На первый взгляд — разницы нет.
Но если присмотреться… 😏

💬 Напишите в комментариях к посту, в чём подвох.

И если вдруг вы не до конца понимаете, в чём отличие между IN и EXISTS, добро пожаловать на наш мини-эфир в четверг 🎙

Разберём по пунктам:

🔶 Сходства и отличия IN и EXISTS 🔄
🔶 Как работают SEMI JOIN и ANTI JOIN под капотом ⚙️
🔶 Какие вопросы по этой теме любят на собеседованиях 🧠
🔶 Примеры из практики 📌

📩 Ссылку на Zoom пришлём утром в четверг — следите за новостями в канале, чтобы не пропустить!

#задача #sql #оптимизация #анонс #вебинар #собеседование #oracle #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Личный бренд Oracle-специалиста: всё начинается с тебя

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

Сегодня немного не про SQL и не про оптимизацию запросов. Сегодня — про тебя и твой личный бренд 🤝

Почему это важно

Потому что никто, кроме тебя, не сможет убедить других в твоей крутости. Но хорошая новость в том, что этот процесс управляемый 🚀

Почему одних зовут «тушить пожары» за 500К, а других — максимум на поддержку

Не из-за случайного везения и не из-за «связей». Просто первый уже собрал вокруг себя мощный образ:

реальные кейсы с продакшена
умение решать нестандартные задачи
понятную миссию и огонь в глазах

А второй… просто «хороший парень, который умеет посмотреть explain-план запроса» 🙈

Из чего же вырастает бренд, который бьёт конкурентов

1️⃣ Навыки уровня решу-любую-боль

Вы не просто знаете 1001 hint, вы уже:

оптимизировали отчёт с 20 мин до 15 сек;
разложил 20 ТБ архива по партициям и сэкономил железо;
подняли SLA, убрав ночные крон-фейлы.

2️⃣ Желание расти и быть лучшим

Ты не ждёшь указаний, ты сам ищешь вызовы. Каждый вызов — это +10% к твоей рыночной стоимости 💹

3️⃣ Цель → миссия → позиционирование

Цель: работать удалённо и жить у океана 🏖️

Миссия: делать системы быстрее и надёжнее 🚀

Позиционирование: Oracle Performance Engineer, который доказывает выгоду цифрами

HR это считывает за 30 секунд 🧠

4️⃣ Непрерывное развитие

Прочитал про SQL Macro? Сразу проверил в тестовом стенде. Узнал про AI Vector Search? Написал pet-проект, выложил на Git. Мир видит не картинку, а динамику.

Что получаешь в итоге

Тебя зовут “спасти проект”, а не "попробовать"
Ты сам называешь цену — и обосновываешь её кейсами
Пока спишь, твой LinkedIn 📱 и репозитории работают на тебя 🖥

Всё начинается с одного вопроса
«Кем я хочу стать через годи чем докажу это рынку

Записал ответ

Тогда:

1️⃣ Вспоминаешь 3 самых мощных кейса
2️⃣ Описываешь: проблема → действия → цифры
3️⃣ Запускаешь рубрику «Performance Friday» в своём блоге
4️⃣ Каждые 2 недели добавляешь новую историю в портфолио

И уже через полгода у тебя будет бренд, мимо которого не пройдёт ни один рекрутер 💼

Хочешь быстрее и системно

На нашем летнем потоке мы:

🔶 собираем твои “сырые” навыки в кейсы 🧱
🔶 настраиваем позиционирование и резюме
🔶 шлифуем 📱, чтобы HR влюбился с первого скролла
🔶 тренируемся проходить собесы с харизмой на максимум 💪

🎯 У нас это уже сработало — а значит, сработает и у тебя.

💬 А теперь — вопрос в лоб: какую задачу, достойную места в витрине твоего бренда, ты решил за последнее время?

Пиши в комментарии, вдохновляй других — будем расти вместе 🙌

#личныйбренд #Oracle #карьера #рост #курс

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Что быстрее: IN или EXISTS? 🤔

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

В понедельник мы показали вам два запроса и спросили, чем они отличаются.

Многие сходу ответили, что NOT IN не вернет данных, если подзапрос содержит Null-значения.
И это правильный ответ

Никакой магии тут на самом деле нет.
Условие id IN (1,2,null) можно развернуть как:
id = 1 OR id = 2 OR id = null
А id NOT IN (1,2,null) — как:
id != 1 AND id != 2 AND id != null

⛔️ Условие id != null никогда не выполнится, поэтому такой запрос ничего не возвращает.

📌 К слову, такой вопрос часто задают на технических собеседованиях.

Если хочется копнуть в сторону IN и EXISTS чуть глубже — ждем вас сегодня в 19:00 МСК на обещанный вебинар 🎓

Что разберем на вебинаре?

🔶 Сходства и отличия IN и EXISTS 🔄
🔶 Как работают SEMI JOIN и ANTI JOIN под капотом ⚙️
🔶 Какие вопросы по этой теме любят на собеседованиях 🧠
🔶 Примеры из практики 📌

Будет возможность задать вопросы и разобрать свои кейсы.

Кому будет полезно?
🔸 Начинающим разработчикам – чтобы не наступать на типичные грабли.
🔸 Мидлам – чтобы писать более эффективный код.
🔸 Всем, кто хочет хорошо проходить собеседования.

🎤 Ведущий — Павел Долганов

🔥 Подключайтесь, будет много полезного. До встречи на вебинаре! 🌐

➡️ Ссылка на ZOOM ⬅️

⚠️ Возможность подключиться ограничена: максимум 100 участников. Успевайте!

⚠️ Записи не будет!

#задача #sql #оптимизация #анонс #вебинар #собеседование #oracle #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Переживания из-за подготовки курса
Кивилев Денис
🎙 Почему я спал по 6 часов в сутки и как это связано с мини-курсом по Оптимизации

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

Сегодня произошло неожиданное аудиоподкастоизвержение. На утренней пробежке в 6:15 утра вдруг понял, что как-то рановато 😂
Пришёл домой, решил посмотреть статистику по сну — и слегка удивился. Средняя продолжительность сна — 6 часов. Ложусь спать в 00:30, подъём — в 6:20. WTF! 😱😨

И сразу же родилась идея аудиоподкаста: а что, если немного рассказать о том, о чём обычно никто не говорит?

О той самой изнанке онлайн-школы, где за каждым видеоуроком стоят бессонные ночи, спринты с методологом, альфа-тесты, переработка обратной связи и вечное «А точно ли это поможет студенту на практике?»

В подкасте делюсь, как мы создавали мини-курс «Оптимизация Oracle SQL: Быстрый старт 🚀»

⚠️ Этот подкаст — не жалоба, а честный рассказ. Потому что за каждым качественным образовательным продуктом — человеческий труд, бессонные ночи и внутренняя тревога: «А точно ли зашло?»

Если вы когда-нибудь задумывались, как на самом деле создаются курсы и чем отличается подход в нашей школе — обязательно включите.
Возможно, вы посмотрите на обучение совсем с другой стороны.

🎧 Длительность: 7:30 минут. Рекомендую на x1.1

И, как обычно, если зашло — ставьте 👍

#изнанкашколы #образование #oracle_sql #аудиоподкаст
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Пост 1/5. Про вакансию Oracle/Java Developer

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

Решил поделиться с вами серией постов про позицию Oracle/Java Developer на проект распила Ораклового-монолита.

Итак. Предновогодняя суета, я весь в мыле и тут выплывает этот лебедь вакансия.
Начал общение с рекрутёром. В первых же сообщениях, HR кидает ссылку на видос - презентацию ценностей/политики компании.

💬 "Денис, посмотрите пожалуйста"

Да, не вопрос. Чем там могут удивить... Ан, нет - я ошибся 😄
Некоторые перлы из видео:
• «нам не по хуй»
• «мы делаем так, чтобы не хотелось доебаться»

Полный видос — по ссылке выше.

💬 "Скажите, пжл, вам подходит политика?"

Ну что ж… — подумал я. Такое не каждый день увидишь. Стало интересно: к чему это всё может привести? 🤔
Написал, что мне ОК — и марлезонский балет начался 🕺🏻

Вопросы залу
Как вы думаете, какая у такой компании/вакансии может быть зарплатная вилка?
После увиденного - пошли бы на собес? Готовы работать в такой культуре?

Поделитесь в Чатике 💭

Если интересны подробности вакансии, этапы собесов и т.п. ставь любую реакцию 🐳

#Denis_Kivilev #oracle #java #собседования
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
⚙️Одна из ТОП-болей Oracle-разработчика

Друзья, привет! Сохраните пост, чтобы показать тим-лиду и закрыть вечные споры на ревью 😉

БОЛЬ: Отсутствие единой системы стандартов форматирования кода в ORACLE

Как происходит в реальной жизни?
Приходишь в новый проект, открываешь код и получаешь мешанину из запросов.
У одного всё ЗАГЛАВНЫМИ, у другого строчными, третий чередует регистр через слово. Кто-то называет таблицы во множественном числе «Users», кто-то с префиксом tab_ - "tab_users", а где-то всплывает «user_tbl». Запросы форматируются как попало.
Каждый уверен: «Я так привык — значит, правильно». Единого документа нет, ревью превращается в мини-баттл, новичок тратит месяц, чтобы только «раскусить» локальные правила.

СУТЬ ПРОБЛЕМЫ
У Oracle по-прежнему нет официального «ГОСТа» (и не будет) на оформление PL/SQL: нет аналога PEP-8 как в Python или Google-кодстайла как для Java. Всё держится на устных договорённостях и личных привычках. Каждая компания — маленькое «княжество» со своим письмом.

Итог хаоса
• читаемость падает;
• ревью затягиваются;
• баги всплывают на проде, потому что «не заметил в каше»;
• время онбординга увеличивается и т.п.

📉 К чему это приводит

Представьте, что всю жизнь ездили с левым рулём, а потом внезапно пересели на правый.
Первые дни — скорость падает, концентрация уходит в ноль, ошибок становится больше.
То же и с кодом: каждый новый проект — переучивание с нуля.
А бизнес-дедлайны никто не отменял: сроки горят, деньги утекают, команда нервничает.

🛠 Как можно это решить (и заработать очки в карму)🔥

1️⃣ Соберите мини-круг: пару тимлидов + самых заинтересованных разработчиков.

2️⃣ Сделайте короткий чек-лист с описанием:
 – единый регистр для ключевых слов и идентификаторов;
 – общие префиксы/постфиксы для таблиц, индексов и других объектов;
 – правила именования пакетов, процедур и др.;
 – правила написания комментариев и многое другое;

желательно, чтобы правила форматирования можно было задать в IDE.

3️⃣ Автоматизируйте проверку: поставьте любой SQL-formatter/linter в pre-commit.

4️⃣ Зашейте правило в CI: пока линтер красный, код не пройдёт.

5️⃣ Загрузите документ в Confluence и прикрепите ссылку в шаблон PR/MR.

6️⃣ Проведите мит-ап для разработчиков: объясните «зачем» это нужно.

⚠️ Важный момент: переформатирование существующей кодовой базы может выполняться по-разному. Команда выбирает, как лучше сделать.

💡 Фишка для проактивных

Видишь хаос? Предложи драфт-стандарт сам. Так ты:
• ускоряешь ревью;
• качаешь личный бренд «не ноет — решает»;
• чаще всего получаешь плюсик к росту до тимлида.

⚖️ Итог

Кодстайл — это не про «перфекционизм ради перфекционизма».
Это договорённость, которая превращает личные заготовки в командный актив.
Чем раньше вы договоритесь, тем меньше боли, нервов и денег потеряете.

📌 Сохрани себе и отправь тимлиду. Пусть стандарты работают, а люди пишут бизнес-логику, а не расставляют пробелы вручную.

А какие стандарты у вас были при смене работы, пишите в Чатик 💬 посмотрим, что за дичь есть на просторах.

Если пост наберет 100 🔥 расскажу как мы в Qiwi-решали эту проблему c автоматической проверкой PL/SQL-кода в CI. Проблема не простая, в виду того, что разработчики пользовались аж четырьмя разными IDE.

#Oracle #PLSQL #кодстайл #teamlead #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Пост 2/5. Про вакансию Oracle/Java Developer

Коллеги, всем привет ☀️
Вижу пост с загадочной конторой с матами вам зашел 😄
Продолжаю свой рассказ.

Название этой компании - GehtSoft
Корни из РФ, но по факту, уже американская, с народом со всего бывшего СССР.
Заказчики так же разные. Конкретно этот проект - заказчик из USA.

Охрененно здоровая портянка с ➡️ условиями компании ⬅️
Да, некоторые пункты, прямо скажем, вызывают удивление.
Ну да ладно, в "чужой монастырь... " и "не нравится, не откликайся".


Описание вакансии
Выше на скринах ⬆️

Суть проекта
Выполнять доработки в текущий продукт и потихоньку распиливать оракловый монолит с выносом логики в Java + PostgreSQL.
В целом, довольно интересно, с учётом удалённого характера работы и з/п в $.
З/п отправляют на какой-нибудь счёт ИП, например, в Грузии.

И плюс и минус - поддержка текущего решения. Хоть и заявлялось, что проект годика на полтора - верилось с трудом 😊 С другой стороны, как ты будешь распиливать, если не понимаешь, что происходит в продукте 🤷🏻‍♂️

Этапы собеседований
1️⃣ Soft-skills интервью с Scrum-мастером (что блин ?!!!) - 1 час
2️⃣ Техническое интервью - 1-1.5 часа.
3️⃣ Опять легкое общение с Scrum-мастером (а-ля финиш) - 15 мин.
4️⃣ Оффер

Вроде не выглядит не реально 🤷🏻‍♂️
Однако, софтовое интервью меня слегка удивило, но об этом я расскажу в следующем посте.

Вилка вакансии
Нижняя граница - 5000$
Верхняя граница - xxxx$

Как считаете какая может быть верхняя граница у такой вакансии? Пишите ваши предсказания в чатик 🔮

Всем хороших выходных 😉

#Denis_Kivilev #oracle #java #собседования
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Видео с практики 5 потока по оптимизации Oracle 🎬

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

Прошел месяц с завершения 5 потока по оптимизации, и мы решили немного вспомнить, как это было. На следующей неделе подведем небольшие итоги обучения, а пока публикуем отрывок одной из наших регулярных встреч.

Немного контекста:
на этом видео мы обсуждаем, как применять полученные навыки на реальных задачах.
А потом ребята рассказывают, чего им удалось добиться на работе за минувшую неделю.
🔥 Спойлер: этот блок в итоге стал одним из наших любимых, каждую неделю коллеги "хвастались", как им удалось ускорить критичный процесс или найти причину внезапных тормозов.

🍒 Вишенка на торте — это то, как вчерашний студент буквально после пары занятий не побоялся оптимизировать запрос из 150 операций в плане.

💬 Поверьте, вы тоже так сможете.
Даже если сейчас не знаете, с какой стороны к этому подступиться. 🤷🏼‍♂️

Через полторы недели мы выложим анкету предзаписи. Кто оставит заявку первым — получит ранние цены, приоритет на место в группе и бонусы. Количество слотов традиционно ограничено, поэтому рекомендуем заранее поставить напоминалку и следить за каналом.

Если чувствуете, что пора ускорить запросы и зарплату — держите руку на пульсе. 😉 До встречи в новом потоке!

#обучение #отзывы #оптимизация #oracle #backendpro #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Bitmap в Oracle

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

Сегодня мы предлагаем посмотреть на запросы, где вам могут пригодиться bitmap-индексы.

Что это такое

Когда на собесах задают вопросы про индексы, зачастую под ними понимаются обычные b-деревья. И если в вашей практике не было DWH-проектов, вы можете удивиться, насколько эти типы индексов отличаются друг от друга.

B-tree:

🔸 эффективен при высокой кардинальности
🔸 хорош при частых DML
🔸 оптимален в OLTP-запросах
🔸 доступен в любой редакции Oracle

Bitmap:

🔸 эффективен при низкой кардинальности
🔸 может залочить таблицу даже при изменении 1 записи
🔸 оптимален в DWH-запросах
🔸 доступен не во всех редакциях Oracle

Битовые операции

В Oracle есть специальные операции (которые можно увидеть в плане запроса) :
BITMAP AND и BITMAP OR.

Это внутренние операции, которые Oracle применяет для комбинирования нескольких bitmap-индексов:

* BITMAP AND — пересечение (как WHERE a=… AND b=…)
* BITMAP OR — объединение (как WHERE a=… OR b=…)

💡 Они позволяют строить результат до обращения к таблице, опираясь только на битовые карты.
Это невероятно ускоряет сложные фильтрации, особенно в аналитических системах, где много колонок с низкой кардинальностью и тяжелых GROUP BY.

🎙Если вдруг вы впервые слышите про BITMAP AND и BITMAP OR, или просто хотите понять, как и когда Oracle их применяет, то уже совсем скоро мы откроем анкету предзаписи на 6-й поток по оптимизации запросов 🎓

Там мы разберём:
Как Oracle комбинирует индексы
Как это всё увидеть в плане запроса
Где bitmap-индексы действительно полезны
И когда они превращаются в тормоз ⛔️

Следите за новостями — скоро будет 🔥

#оптимизация #bitmap #курс #oracle #индексы #oracle #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Пост 3/5. Про вакансию Oracle/Java Developer. Soft-интервью

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

Наш марлезонский балет продолжается. Этот пост - про софтовую часть интервью.

Но! прежде всего, отвечу, что верхняя граница позиции была 6500 💲

Итак, софтовую часть обычно проводит HR. В случае с GehtSoft это была Scrum-мастерица 😱
Я всё понимаю, но почему Scrum-мастер?!
Делаю поверхностный вывод: просто некому 🤷🏻‍♂️

Некоторые технические специалисты до сих пор думают, что soft skills - это про какие-то непонятные «западные говно-практики» и т.п.
Так думать, конечно, можно, но реальность изменилась 🤷🏻‍♂️ Уже недостаточно быть просто хорошим технарём

Вот пример из текущего собеса: если ты не пройдёшь софт-часть со Scrum-мастерицей, тебя просто не допустят до тел технарей компании. И это факт.

Поэтому важно уметь проходить такие этапы - видишь ты в этом ценность или нет.
Хочешь получить работу? Тогда будь любезен - отвечай правильно.
Да, возможно, в душе ты не согласен с тем, что говорит твой рот, но у тебя задача - получить позицию

Например, когда я искал валютную удаленку мы с Любой Прохоровой (карьерный консультант) провели целое занятие на тему того, как правильно проходить каверзные вопросики по софтам.
С недавних пор, наши студенты могут взять дополнительную опцию по проработке карьеры - CV, презентация, подготовка к собесам и т.д. Стараемся натаскивать на такие вещи. Люба прокачивает ребят ♥️

Короче, этот навык, необходим в текущих реалиях.

Вот несколько вопросов, которые мне задавала Scrum-мастерица
▫️Как ты понимаешь, что достиг успеха в своей работе?
▫️Как у тебя в целом с входом в новый коллектив?
▫️Насколько успешно, может быть, ты можешь оценить, что ты вливаешься в новый коллектив?
▫️Могу тебя попросить сравнить два твоих проекта?
▫️За что тебя мог бы покритиковать твой нынешний работодатель?
▫️А сам себя ты бы за что мог бы покритиковать?
и так далее...

Отвечал на вопросы без особых заигрываний. Результат - прокатило
В следующем посте расскажу про техническую часть собеса 🤖


🎥 Во вложении 4х минутное видео с этой части собеса, чтоб вы имели общее представление о том, как это было.
⚠️ Осторожно, есть один мат. Строго 18+. Надеюсь, нас не читают юные ораклисты младше 18 😄

Что думаете, коллеги? Нужны софты? Поделиться мнением в чатике 💭

#Denis_Kivilev #oracle #java #собседования
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠 SQL-загадка с подвохом

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

Понедельник — отличный день, чтобы разогреть мозги небольшим техническим кейсом 💡
Сегодня короткий, но полезный пост — с ответом сразу.

📌 Дано:

create table demo_table (
ID char(4 CHAR),
value VARCHAR2(64 CHAR)
);


Известно, что есть следующие индексы и ключи:

create index DEMO_TBL_VALUE_IX on demo_table (VALUE);

alter table DEMO_TABLE
add constraint DEMO_TBL_PK primary key (ID)
using index;


Вопрос (c подвохом)
почему такая вставка проходит:

insert into demo_table values('0001', 1000);


А эта падает с ошибкой ORA-01722: неверное число:

insert into demo_table values('0002', 'Test');


Ответ
при наличии следующего индекса

create index DEMO_TBL_NUM_IX on demo_table(trunc(VALUE));

Такая конструкция называется индексом по функции (function based index).
В реальных проектах она используется довольно часто, например, когда на строковое поле мы создаем индекс UPPER(<column>).
Особенность такого индекса в том, что в листьях он хранит результат выполнения этой функции для каждого rowid.
Поэтому никакой магии тут нет: если мы не можем записать в индекс результат функции, то и вставку выполнить мы не можем.


В нашем случае, функция trunc пытается примениться к значению value. В первой строке - 1000 (все ок), во второй - 'Test' (ошибка).


Ставьте лайк, если было познавательно.
🔔 Если хотите узнать больше про индексы, следите за каналом — завтра будет важное объявление.

Всем хорошей и продуктивной рабочей недели! 🔥

#oracle #sql #оптимизация #задачка #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Пост 4/5. Про вакансию Oracle/Java Developer. Tech-интервью

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

Продолжаем наш марлезонский балет 👯‍♀️
В этом посте расскажу про техническую часть интервью.
В общей сложности оно заняло примерно 1,5 часа.

Поскольку вакансия предполагала вынос функционала из Oracle в Java + PostgreSQL, на интервью присутствовали два технических спеца: Java Team Lead и специалист по Oracle.

Собеседование можно разбить на три группы вопросов
1️⃣ Как бы ты разбивал оракловый монолит?
2️⃣ Вопросы по Java + небольшое код-ревью
3️⃣ Вопросы по Oracle + практическая задачка а-ля «напиши запрос»

Некоторые вопросы с собеседования
▫️Как бы ты мог поспособствовать миграции логики из базы в Java-сервисы?
▫️Ты приходишь на проект, там нет CI/CD, как ты будешь действовать?
▫️С чего начать такую миграцию, чтобы система продолжала работать корректно?
▫️А что, если бизнес-логика в триггерах, и код ужасный?
▫️Что в этом коде не так (показывают Java-код)? Как доработать?
▫️Какова алгоритмическая сложность этого метода (показывают Java-код)?
▫️Зачем нужен volatile?
▫️Команда для вывода списка всех Docker-контейнеров?
▫️Приходилось ли тебе разворачивать Oracle?
▫️Как анализировать медленные запросы в Oracle?
▫️Как находить причины расхождений между отчетами?
и так далее.

несколько вопросов/ответов прикрепил к посту 📹

"Хозяйке на заметку"
Основная масса вопросов по Ораклу, как водится, была про оптимизацию.
Поэтому, коллеги, кто ещё этого не понял: если вы хотите претендовать на жирную позицию и достойную з/п, тему с оптимизацией вам не обойти.
Если вы в ней «не алё» — забудьте про хорошие деньги.
Продаёт Денис курсы или не продаёт — без оптимизации никуда. Это, блин, факт 🤷🏻‍♂️

Сейчас будет реклама, но уж сорри 😄
Именно этим мы и занимаемся на курсе по Оптимизации Oracle SQL. Наводим порядок в голове по великой и ужасной Оптимизации и натаскиваем на прохождение собесов 🚀
Анкета предзаписи — в предыдущих постах ⬆️
Не тормози — записывайся!

Итог
Честно говоря, я не особо готовился к интервью, особенно по Java. Можно было бы и получше отвечать.
Вот по Ораклу — разбуди меня в три ночи, я отвечу на часто задаваемые вопросы.
По Java приходится вспоминать узкие моменты, которые в реальной практике, по сути, не используешь.
Сделал для себя вывод: перед следующей сменой работодателя надо будет готовиться основательнее.
Чего, кстати, и вам желаю!

Ребята-технари в целом задавали интересные и корректные вопросы. Никто не матерился, всё прошло достаточно вежливо. На мой взгляд, если бы я попал к ним, то было бы чему поучиться — в том числе.

Так же исходя из вопросов понятно, что это жуткая легасятина со всеми антипаттернами, которые может в себя вобрать Оракловый проект 👽
Этакие конюшни не чищенные лет так 20 😄

Чем закончилась история, дали ли оффер — расскажу в следующем посте 😊
Всем хорошего дня! ☀️


#Denis_Kivilev #oracle #java #собседования
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
6-й поток курса «Оптимизация Oracle SQL» стартует в июле! 🚀

Друзья, всем привет! 👋
На связи Денис, и сегодня я хочу рассказать, как один курс может ускорить не только запросы, но и вашу карьеру 🚀

Многие из вас спрашивают:
💭 «Денис, а реально ли курс поможет? Просто я уже третий месяц гуглю, как оптимизировать запрос, и всё равно ничего не понимаю».

Ответ - да, реально! Доказательства вот, вот и вот, а также множество других отзывов.

Для чего люди приходят на курс по оптимизации

🔸 Они давно хотят пробить зарплатный потолок, но их текущих знаний оптимизации SQL откровенно недостаточно 🤷
🔸 Когда они получают офферы от HR-ов, то паникуют в ожидании технической части собеседования 😱
🔸 Они хотят проектировать эффективные решения вместо того, чтобы работать в режиме "туши пожары" 🧯

Курс по оптимизации помогает перейти от уровня "я умею в CTE и CONNECT BY PRIOR" к уровню "план выполнения запроса - мой лучший друг" 💪

📊 Что происходит на рынке прямо сейчас?

Рынку критически не хватает людей, которые умеют:
читать план запроса
ликвидировать узкие места в плане
говорить на языке бизнеса

Мы каждый день созваниваемся с кандидатами на 6-й поток и чаще всего встречаем два типа разработчиков:

1️⃣ Те, кто соглашается на оффер в 200К, потому что вакансии за 300+ им не светят - они не могут пройти собес по оптимизации.

2️⃣ Те, кто знает, как читать AWR-репорты, но не умеет себя преподнести на техническом интервью - нет системы в голове.

В обоих случаях тебе к нам на курс 👉

🛠 Что вы там получите?

Практика, практика и ещё раз практика
Без теоретических лекций про ACID, которые можно найти в Википедии. Только живые кейсы, где нужно думать головой и работать руками.

Подготовка к собеседованиям
Вы будете готовы ответить на любой вопрос про план выполнения, хинты, execution stats и даже объяснить бизнесу, почему оптимизация важна 💬

Закрытый чат выпускников
Где делятся фишками, полезными скриптами и иногда вакансиями. Ну и шутят про deadlock-и на ночь глядя 😂

📌 Как устроен 6-й поток?

🗓 Старт: начало июля
👥 Формат: мини-группа до 10 человек
🎓 Обучение: 12 недель, живые разборы, домашки, мок-собеседования
💬 Чат: доступ ко всем встречам, обмен опытом, советы и поддержка

🌟 Кому точно стоит идти

🔶 Разработчикам, которые устали “оптимизировать” на глаз
🔶 Аналитикам, у которых отчёты работают дольше, чем остывает утренний кофе ☕️
🔶 DBA, которые хотят спать, а не искать bottleneck в 3 часа ночи

🔥 Внимание!
Вероятно, это последний поток в этом году. Следующий набор - в 2026 году.
Не откладывайте на потом - места ограничены!

👉 Ссылка на анкету предзаписи тут 👈

P.S. После курса вы не просто начнёте писать эффективный код - вы сможете закрывать проблемы бизнеса. А это самое важное. Сможете наконец-то получить тот самый оффер, о котором раньше только мечтали 💼

Думаете я шучу? Позиции Middle/Senior не проходят без вопросов или задач по оптимизации. Если вы её не знаете, как собес пройдете? Отвечу - никак 😊


Всем добра ❤️

#SQL #Oracle #Оптимизация #Собеседование #BackendPRO #Denis_Kivilev

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Пост 5. Про вакансию Oracle/Java Developer. Итоги

Друзья, всем привет!
Сегодня у нас заключительный пост про компанию GehtSoft.
Не буду вас томить, коллеги, просто скажу - оффер я получил

Кратенько, что там было
🔸 Зарплата: $5500 в месяц (gross)
🔸 Должность: Java Engineer
🔸 Формат: удалёнка, гибкий график
🔸 Испытательный срок — 2,5 месяца
🔸 Ежемесячная оценка:
— Командная — достигает ли команда цели
— Индивидуальная — достигаешь ли ты личных целей
— Если цели не достигнуты — оплата может снизиться, но не ниже 50%
🔸 Годовой бонус: от 1 до 3 окладов, если проработал > 6 месяцев
🔸 После испытательного срока — $1000/год на технику

Как мне видится эта позиция

▫️Валютная удалёнка с зарплатой $5500. С учётом налогов Грузии — 1% для ИП — вообще норм.
▫️Потенциальные бонусы, $1K на технику и т.п. Работать можно откуда угодно, кроме РБ и РФ.
▫️Довольно серьёзный профессиональный вызов — распил Ораклового монолита.
▫️Продолжительность проекта озвучена как ~1,5 года, но, на мой взгляд, там минимум 3. Соответственно, в течение трёх лет будут интересные задачи на стыке Oracle/Java.


▫️Слегка странное позиционирование компании и стиль (я такое не приветствую).
▫️На мой взгляд, жуткая оракловая легасятина с тонной триггеров с бизнес-логикой, отсутствием порядка в процессах и т.п.
▫️Ежемесячная оценка, которая в итоге может привести к выгоранию и демотивации.
▫️Компания позиционирует себя так, будто хаос — её лучший друг. Да, некоторая степень неопределённости есть во всех проектах, но после общения с ребятами я понял: часть хаоса возникает из-за того, что процессы в компании хромают. Некоторые отзывы в интернете это подтверждают. Такая атмосфера стартапа, которая уже не к месту. Кстати, компании 26 лет 😊
▫️Нельзя работать из РФ/РБ — это может быть проблемой.
▫️После завершения проекта и ухода из ораклового стека будет переаттестация, и зарплата будет соответствовать Java-грейду, то есть может оказаться ниже исходных условий.

Почему $5500?
Что тут скажешь - к собеседованиям нужно готовиться лучше. В моём случае - к Java-части 🤷🏻‍♂️
Плюс я не стал давить на максимальную ставку - было интересно насобирать материал для вас, мои дорогие подписчики ❤️

Прохождение собеседований - это отдельный навык, который требует постоянной тренировки. Именно поэтому мы стараемся натаскивать наших студентов на интервью: наш карьерный консультант работает с теми, кто хочет быть готовым к новым вызовам рынка. Мы прокачиваем и hard-, и soft-скиллы 🚀
Не тормози - записывайся на курс по Оптимизации. Без неё - никуда: ни на работе, ни на собеседованиях ⚙️



Всё это была финальная сцена марлезонского балета 😊
Ах да... чего там с оффером?
А оффер я отклонил Текущее место работы пока устраивает 😊

——
Все этапы интервью были зафиксированы на видео 📹
Завтра расскажу, как можно получить почти трёхчасовую смонтированную запись собеседования (софт + хард) 😉
Всем добра! 🌎

#Denis_Kivilev #oracle #java #собседования
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀