TGViewer
Channel Public Channel
Oracle Developer👨🏻‍💻

Oracle Developer👨🏻‍💻

@oracle_dbd

🔝 канал о разработке в СУБД Oracle:
SQL, PL/SQL, оптимизация, архитектура и другое...

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

Основатель: @denis_dbd Кивилёв Денис
Менеджер: @love_flowerrr Влада
Subscribers
3.43K
Photos
886
Videos
165
Links
794
Recent Posts 20 shown
Post #1458 307
DBMS_SQL_TRANSLATOR: подменяем запрос, не трогая код 🔍

Коллеги, всем привет! 👋
На связи Денис.

Копался тут, как Oracle считает SQL_ID, и по ходу пьесы наткнулся на интересный пакет - DBMS_SQL_TRANSLATOR (есть с 12c). Кстати, в нём есть функция SQL_ID - про неё в следующем посте. А сам пакет умеет на лету подменять текст запроса: приложение шлёт одно, а база выполняет другое.

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

По мне, это тёмная магия Oracle 🧙‍♂️ Знает про неё узкий круг специалистов, а используют её очень редко. Сделаете на ней что-то - коллеги просто не поймут, что происходит, и запутаются: в коде один запрос, а в базе выполняется другой.

Как это работает
Создаём профиль трансляции, регистрируем пару «исходный SQL -> SQL на замену» и включаем профиль в сессии.

begin
dbms_sql_translator.create_profile('APP_FIX');
-- переводить и обычный оракловый SQL, а не только "чужой"
dbms_sql_translator.set_attribute('APP_FIX',
dbms_sql_translator.attr_foreign_sql_syntax,
dbms_sql_translator.attr_value_false);
dbms_sql_translator.register_sql_translation('APP_FIX',
'select count(*) from orders where status = :b1',
'select /*+ full(o) */ count(*) from orders o where status = :b1');
end;
/
alter session set sql_translation_profile = APP_FIX;
select count(*) from orders where status = :b1;

Без профиля план был INDEX RANGE SCAN, с профилем - TABLE ACCESS FULL, DBMS_XPLAN показывает текст уже с хинтом. Проверил на Oracle 26ai (23.26) и 18c, ведёт себя одинаково.

А если атрибут не ставить? По умолчанию FOREIGN_SQL_SYNTAX = TRUE, и запросы из SQL*Plus не переводятся. Нужен ещё alter session set events = '10601 trace name context forever, level 32', а для него - привилегия ALTER SESSION.

Приложению профиль включают logon-триггером или через атрибут сервиса (DBMS_SERVICE).

Подсмотрел в интернете, как его используют
🔹 Чинят тормозящий запрос вендорского софта без релиза: находят SQL_ID в shared pool, регистрируют замену, вешают logon-триггер (пошаговый гайд). А в Panorama скрипт подмены генерится по SQL_ID.
🔹 Миграция с Sybase и SQL Server: транслятор переводит чужой диалект в оракловый, приложение почти не трогают. Под это пакет изначально и делали.
🔹 Обходят неправильные результаты - подменяют запрос на исправленный (Kerry Osborne).
🔹 Фокусы на конференциях 😄 - один и тот же запрос «магически» становится быстрым, а на деле его тихо перенаправили на другую таблицу (Julian Dontcheff).

Подводные камни
🔸 Текст должен совпасть один в один. Проверил: другой регистр, лишний пробел, перенос строки или бинд :b2 вместо :b1 - и подмены нет.
🔸 SQL внутри PL/SQL (и статический, и execute immediate) не переводится, только то, что шлёт клиент.
🔸 Права. Владельцу - CREATE SQL TRANSLATION PROFILE. Чтобы профиль работал у другого юзера: grant use on sql translation profile ему (иначе ORA-24252) и grant translate sql on user app владельцу (иначе ORA-01031).
🔸 Отключить подмену - enable_sql_translation(..., false). Процедуры DISABLE_SQL_TRANSLATION нет.
🔸 REGISTER_ERROR_TRANSLATION в SQL*Plus код ошибки не подменил - это для драйверов при миграции.

Итог
Чтобы просто подсунуть хинт, есть штатные SQL Patch и SQL Plan Baseline. А если надо переписать сам запрос, а код не ваш - DBMS_SQL_TRANSLATOR рабочий вариант.

Но раз уж применили тёмную магию - обязательно документируйте и передавайте знание команде. Иначе через полгода никто не вспомнит, почему прод выполняет не тот запрос, что в коде, и кто-то потратит неделю на расследование 🕵️

А вы встречали его в бою? Пишите в чатик 💬

С вами был Денис. Всем предсказуемых запросов 🤝

#oracle #sql #plsql #dbms_sql_translator #оптимизация #фишки #Denis_Kivilev

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • 🔥 9
  • 🤯 3
Post #1455 546
with function и pragma udf: обещали быстрее, проверяем 🔍

Коллеги, всем привет! 👋
На связи Денис.

В посте про функции в SQL я вскользь написал: «С 12c: pragma udf или with function - дешевле переключение контекста». Юрий в комментах: «вот это интересно, примеров бы». Держите. С замером 😄

with function
Функция объявляется прямо в запросе, без create:

with
function get_vat(p_sum number) return number is
begin
return round(p_sum * 0.2, 2);
end;
select salary, get_vat(salary) vat
from employees
/


Когда удобно: разовый скрипт, нет прав на create, логика нужна только этому запросу. Александр в комментах поделился кейсом: через with function собирает трейс-файл из v$diag_trace_file_contents в CLOB. Прям в одном запросе, без объектов в схеме 👍🏻

Нюансы:
🔹 Если with function не в top-level select (вложенный запрос, insert/update/merge) - нужен хинт /*+ with_plsql */, иначе ORA-32034: unsupported use of WITH clause. Хинт не оптимизаторский, без него запрос просто не разберется.

insert /*+ with_plsql */ into t_vat
with
function get_vat(p_sum number) return number is
begin
return round(p_sum * 0.2, 2);
end;
select salary, get_vat(salary) from employees
/


🔹 В SQL*Plus/SQLcl запрос заканчивается /, а не ; - внутри же PL/SQL.
🔹 Имя из with перекрывает одноименную функцию схемы.

pragma udf
Хранимая функция с пометкой «меня вызывают из SQL»:

create or replace function get_vat(p_sum number) return number is
pragma udf;
begin
return round(p_sum * 0.2, 2);
end;
/


В документации скромно: «might improve its performance». Might. Ну ок, проверяем.

Замер
sum(f(id)) по таблице на 1 млн строк, функция mod(p, 7) * 2, среднее из 5 прогонов, секунды. Docker на ноутбуке, так что смотрим на порядок, а не на сотые.

вариант                  26ai   18c
обычная функция 4.83 2.11
pragma udf 1.10 1.53
with function 1.38 1.00
with function + udf 1.11 1.15
чистый SQL 0.59 0.42


Что видно:
🔹 pragma udf ускорила хранимую функцию: на 26ai в 4 раза, на 18c скромнее, в 1.4. И вывела ее на уровень with function.
🔹 udf внутри with function компилируется и работает, но выигрыша не дает. Тут Александр прав: «pragma udf не пашет с inline-функциями» - в смысле эффекта, не ошибки.
🔹 Цена udf: при вызове из PL/SQL функция чуть медленнее (цикл на 1 млн вызовов: 0.59 против 0.67 с на 26ai). Если функцию дергают в основном из PL/SQL - udf не нужна.
🔹 Чистый SQL быстрее лучшего варианта с функцией еще в 2 раза. Хозяйке на заметку 🤷🏻‍♂️

Итог
Функция нужна в SQL и живет в схеме - ставьте pragma udf. Нужна одному запросу - with function. Можно без функции - пишите на SQL.

А вы with function в проде используете или только в скриптах? Пишите в чатик 💬

С вами был Денис. Всем хорошей недели 🤝

#oracle #sql #plsql #оптимизация #performance #функции #фишки #Denis_Kivilev

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • ❤ 8
  • 🔥 8
  • 👍 5
  • 🤝 1
Post #1454 827
Функция в SQL-запросе: можно, но есть нюансы 🔍

Коллеги, всем привет! 👋
На связи Денис.

Можно ли вызвать свою PL/SQL-функцию прямо в select? Можно. Но за этим «можно» прячется пачка ограничений и пара граблей по производительности. Давайте пройдёмся.

Как это выглядит

create or replace function get_vat(p_sum number) return number is
begin
return round(p_sum * 0.2, 2);
end;
/

select id, amount, get_vat(amount) vat
from orders
where get_vat(amount) > 100;


Функция может жить на уровне схемы или в пакете (тогда она должна быть в спецификации). Вызывать можно в select-листе, where, order by, group by, в values у insert и set у update.

Ограничения
🔹 Из запроса (select) функция не может менять данные. Вставили insert внутрь - получите ORA-14551.
🔹 Никаких commit, rollback и DDL внутри - ORA-14552.
🔹 Если функция вызвана из insert/update/delete/merge, она не может читать или менять таблицу, которую этот оператор модифицирует - ORA-04091 (mutating table).
🔹 Параметры только IN. Типы параметров и результата - SQL-типы: никаких PL/SQL-записей и ассоциативных массивов. BOOLEAN в SQL появился только в 23ai.

Да, ORA-14551 обходится через pragma autonomous_transaction. Но это костыль: отдельная транзакция на каждую строку. Хозяйке на заметку - так лучше не делать 🤷🏻‍♂️

Подводные камни
🔸 Переключение контекста SQL ↔️ PL/SQL на каждый вызов. На миллионе строк это уже заметно.
🔸 Количество вызовов не гарантировано. Oracle может вызвать функцию больше раз, чем строк в выборке. Не завязывайте логику на побочные эффекты.
🔸 Согласованность чтения. Если функция сама делает select, каждый такой запрос видит данные на момент своего вызова, а не на момент старта основного запроса. На долгом запросе можно получить «несогласованный» результат.

Как ускорить

-- кэширование скалярного подзапроса
select id, (select get_vat(amount) from dual) vat
from orders;


🔹 Скалярный подзапрос, как выше: Oracle кэширует результат для одинаковых входных значений, и функция вызывается реже. Как устроен этот кэш и почему на него нельзя слепо полагаться - тема для отдельного поста. Интересно? Ставьте 👍🏻 или пишите в комментах - напишу.
🔹 deterministic - подсказка, что для одних и тех же входных данных результат одинаковый. Нужна и для функционального индекса.
🔹 С 12c: pragma udf в функции или with function прямо в запросе - дешевле переключение контекста.
🔹 А лучше всего - если логику можно написать на чистом SQL, пишите на SQL.

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

А вы используете функции в запросах или бьёте за это по рукам на ревью? Пишите в чатик 💬

С вами был Денис. Всем быстрых запросов и без мутирующих таблиц 🤝

#oracle #sql #plsql #оптимизация #функции #фишки #Denis_Kivilev

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • 👍 31
  • 🔥 4
  • ❤ 2
Post #1453 867
DUAL: что под капотом у самой популярной таблицы Oracle

Коллеги, всем привет! 👋
На связи Денис.

Пожалуй, самая популярная таблица в мире Oracle. Каждый из нас писал select sysdate from dual сотни/тысячи раз. А вы когда-нибудь задумывались, что у неё под капотом? Давайте разберёмся.

Что такое DUAL
🔹 Обычная таблица, владелец - SYS. Всем доступна через публичный синоним DUAL.
🔹 Одна колонка DUMMY типа VARCHAR2(1).
🔹 Одна строка со значением 'X'.

Нужна она для одного: в Oracle SELECT без FROM был невозможен. А посчитать выражение, вызвать функцию или взять NEXTVAL из последовательности хочется. Вот и берём «таблицу-пустышку», где гарантированно одна строка.

Кстати, почему DUAL, если строка одна? По известной байке, изначально в ней было две строки и её использовали, чтобы «удваивать» строки через декартово соединение. Потом строку оставили одну, а название прилипло 😄

Что происходит при выполнении
Сравните два плана:

explain plan for select sysdate from dual;
-- FAST DUAL

explain plan for select * from dual;
-- TABLE ACCESS FULL | DUAL


🔸 Если колонку DUMMY не трогаем, оптимизатор (с 10g) использует операцию FAST DUAL: в таблицу вообще не ходит, логических чтений ноль.
🔸 Если выбираем * или DUMMY, Oracle честно читает таблицу полным сканом. Мелочь, но в цикле на миллион итераций уже не мелочь.

Вывод простой: select * from dual без нужды не пишите.

Oracle 23ai: DUAL больше не обязателен
В 23ai FROM стал необязательным, наконец-то как в PostgreSQL:

select sysdate;
select 2 * 2;
select my_seq.nextval;


Старый вариант с from dual тоже работает, ничего переписывать не нужно. Но в новом коде можно смело писать короче.

А вы уже пишете SELECT без FROM на 23ai или всё ещё сидите на 19c? Поделитесь в чатике 💬

С вами был Денис. Всем лёгких запросов и одной строки в DUAL 🤝

#oracle #sql #dual #oracle23ai #оптимизация #фишки #Denis_Kivilev

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • 👍 13
  • 🔥 6
Post #1452 1.05K
🤝 Преемственность потоков: до этой идеи мы дошли не сразу

Коллеги, всем привет! 👋
На связи Денис.

Интересная ситуация случилась на 8м потоке курса по оптимизации. Мне написал Саша С., студент 7 потока, довольно активный участник, который и раньше что-то предлагал. И закинул идею:
а что, если кто-то из 7 потока придет и поприветствует 8й?

Такая преемственность. Даже кандидатуру предложил.

Я подумал: блин, а ведь классная идея. Как мы раньше не сообразили?

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

Так вот. Я попросил Олега, одного из лучших студентов 7 потока, прийти и сказать пару слов ребятам. Мне кажется, получилось довольно круто. Небольшой фрагмент можете посмотреть в видосе ⬆️

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

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

Вот такой субботний щитпостинг получился, не обессудьте )

С вами был Денис. Всем позитивного настроя и хороших выходных 🤝

#обучение #комьюнити #обратная_связь #oracle #sql #оптимизация #Denis_Kivilev

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • ❤ 8
  • 👍 4
  • 🔥 3
  • 🤝 1
Post #1451 932
Первая встреча уже сегодня 🔥

Коллеги, всем привет! 👋 
Сегодня вечером стартует первая встреча потока по оптимизации Oracle SQL.

Те, кто уже внутри, начинают прямо сейчас строить себе защиту от увольнения.
А вы?

Подумайте честно: что произойдет, когда прод ляжет из-за вашего неоптимального запроса? Это не страшилка и не теория.

Я видел этот сценарий на реальных проектах - он разворачивается в командах каждую неделю.

Медленный SQL - это не просто “страничка долго грузится”. Это таймауты, простой системы, потерянные деньги бизнеса. А когда бизнес теряет деньги, он быстро ищет виноватого. Находит… и  так же быстро прощается.


Дальше начинаются собесы, где вас прямо гоняют по планам выполнения запросов.

И если вы не можете объяснить, почему оптимизатор выбрал именно этот индекс или почему тут Full Table Scan вместо Index Range Scan - вы просто не проходите дальше. Вот и всё.
И это не паранойя - это реальность рынка прямо сейчас.

Что дают три месяца в потоке:
🔹 Читать планы выполнения - видеть проблему за 5 минут, а не гадать сутками.
🔹 Находить узкие места и устранять их до того, как они положат прод.
🔹 Работать с индексами правильно - включая случаи, когда они только вредят.
🔹 Знать типичные ошибки, которые убивают производительность на больших объемах.
🔹 Разбирать реальные кейсы с боевых проектов, а не академические примеры из учебников.

Если вы всё еще откладываете, ответьте себе честно: что вы будете делать, когда следующий проблемный запрос окажется вашим?
Лучше укреплять позицию заранее, чем учиться под давлением после инцидента.

Залетайте к нам на обучение, записаться можно у моей помощницы Влады

Всем стабильного прода и уверенности в своем коде! 🤝

#oracle #оптимизация_sql #базы_данных #обучение #производительность #собеседование #карьера_в_IT

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • 🔥 3
  • ❤ 2
  • 👍 2
Post #1449 995
“У меня на тесте всё летает!” или Главная иллюзия разработчика 🚀


Коллеги, всем привет! 👋 

Знаете, что вы чаще всего можете услышать во время разбора инцидента по тормозящему запросу на продакшене?

“Да у меня на тесте всё работает за 50 миллисекунд, я проверял!”

Ну да, конечно работает. В тестовой базе 1000 строк, а на проде - 50 миллионов. На тесте один пользователь, а на проде - 500 одновременных сессий. И вот этот красивый запрос, который у вас “летал”, начинает разваливаться.

Высокая конкуренция, ожидания => красный мониторинг => тикет в жире => ж.па в мыле.

А дальше - классика жанра. Разработчик начинает всовывать dbms_output в код (это еще если повезет), добавлять индексы наугад и т.д. Может сработает? А может и хуже сделает, потому что оптимизатор Oracle всё равно выберет Full Table Scan.

Обычная история.

Проблема в одном: большинство разработчиков работают с базой вслепую. Они не видят, как Oracle на самом деле собирается выполнять их запрос. Они пишут код, надеются на лучшее и молятся, “авось пронесет”. Не пронесёт.

🔹 Разница между “кодером” и инженером, которого ценят, - в понимании, того что он делает. 🔹 Такой специалист заранее знает, где запрос споткнется на объемах прода. 🔹 Он не “гадает на индексах” - он управляет поведением базы осознанно.


Послезавтра, 18 сентября, у нас будет уже первая онлайн встреча на 8м потоке по Оптимизации Oracle SQL. Мы будем учиться не угадывать, а понимать - что происходит внутри базы, почему запрос тормозит и как это исправить до того, как тим лид выклюет вам мозг. Еще есть время.

Велком к нам, записаться можно у моей помощницы Влады. 👉 Написать Владе 👈

Всем хорошего дня 🤝
#oracle #оптимизация_sql #базы_данных #карьера_в_IT #performance #sql #plan_execution


Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • 👍 4
  • 🤷‍♂ 1
  • ❤ 1
  • 😁 1
Post #1447 983

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • 👍 3
  • 🔥 2
  • ❤ 1
Post #1446 865
Пробный период обучения, хорошая возможность погрузиться в процесс за 990 рублей  💻

Коллеги, всем привет! 👋

Сегодня стартовал подготовительный этап нашего 8-го потока  обучения Оптимизации Oracle SQL.

Поэтому хочу рассказать про формат, который помогает принять взвешенное решение об обучении - пробный период.

Это не демо-урок на час, а полноценное погружение в процесс, которое позволяет понять, подходит ли вам методика, темп и подача материала, прежде чем вкладывать деньги и время.

Что дает пробный период?

🔹 Проверка на практике - вы сразу понимаете, насколько материал применим к вашим задачам.

🔹 Оценка формата и темпа - одним комфортно учиться интенсивно, другим нужно время на осмысление. Пробный период покажет, вписывается ли обучение в ваш график и ритм жизни.

🔹 Знакомство с преподавателями - в технических темах критически важно, чтобы человек говорил из реального опыта, а не пересказывал документацию. За пробный период это становится очевидно.

🔹 Минимальные риски - вместо того чтобы сразу платить полную стоимость курса (которая может быть весьма ощутимой), вы инвестируете символическую сумму и получаете честный срез того, что вас ждет дальше.

Стоимость - 990 рублей. Сумма чисто символическая, идет на поддержку инфраструктуры (тестовые базы, окружения и прочее).

Это реальная возможность погрузиться в процесс, поработать с материалом и принять осознанное решение.

 ❕❕Ограничение - 10 мест     

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

Обучаетесь с 14 по 28 сентября. Достаточно, что бы понять - ваше или нет.

Хватит тормозить, пиши моей помощнице Владе, мест всего 10.

👉 Написать Владе


Вместо традиционных пожеланий хорошего дня, фраза Джорджа оБернарда Шоу на подумать:

“Он не упустил ни одной возможности упустить возможность”.

#обучение #базы_данных #оптимизация #карьера_в_IT #производительность #SQL #развитие_в_IT

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • ❤ 3
  • 👍 1
  • 🔥 1
Post #1445 890
Размышления после поездки в Россию и ситуация в целом

Коллеги, всем привет )
С вами Денис.
И это субботне-воскресный щитпостинг.
Кому не нравится - пролистываем.

21го июля я стартанул из Бразилии через Казахстан в РФ. В КЗ были кое-какие дела по легализации - рассчитывал на три дня, но в итоге протусил неделю. Потом был три недели в Мск, с кем-то удалось встретиться с кем-то нет.

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

Дальше наши пути разошлись. Жена улетела обратно в Бразилию, ибо там оставались наши две девочки с няней. Кстати, за этот почти месяц поменяли двух нянь. Первая через три недели заявила, что она больше не может быть с нашими детьми (ага, а мы вот уже 7 лет мучаемся 😂). Пришлось срочно искать вторую.

А я рванул в Ташкент. Один из местных банков пригласил к ним в команду в качестве консультанта. Цель: взглянуть на текущие процессы свежим взглядом и улучшить их. Переговоры мы вели с конца июня, процесс не быстрый, но смогли договориться.
Вышел в офис впервые с 2020 года. 6 лет на удаленки 🤦🏻‍♂️ И вы знаете, мне понравилось. Т.е. ты целиком погружен в процесс, без отвлечение типа "Денис, помой попу мелкому" 😁

Я почувствовал давно забытое чувство общности, командности, живого общения, решения проблем на прямую.
И знаете что? Я сейчас прям кайфую. Мне хочется идти на работу.
Это вот когда ты приходишь с утра и херрррракс... уже пора домой идти. Как день прошел? Да хер знает. Просто пролетел, потому что было интересно, ты решал какие-то задачи, закрывал проблемы и т.п. И тебе это нравится. Ты вовлечен на все 100%.

Помню когда только перешел в Магнит в 2016м, я реально первые пол-года считал буквально минуты и на работу шел как на каторгу, и прям ждал когда же наступит пятница и люто ненавидел понедельники.

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

📹 В видосе рассказал про мои впечатления после 2х лет отсутствия в РФ, про цены, про покупательскую способность, про ташкентскую команду куда нанимают и как нанимают и др.
Если есть чего прокоментить особенно цены и зарплаты - велком в чат 💬

Всем хорошего дня!

#Denis_Kivilev #путешествие #узбекистан #россия #щитпостинг

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • 👍 11
  • 🔥 9
  • ❤ 6
  • 🤷‍♂ 1
Post #1444 898
Среда - маленькая пятница, а пятница - пятница, тут без комментариев 😎


Коллеги, всем привет!

Сегодня пятница, а это значит можно немного расслабиться и отвлечься от всех проблем.

Разбавляем нашу ленту юмором, ставьте реакции 😄👍

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


#юмор #пятница #выходные


Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • 😁 11
  • 👍 2
  • 🤩 1
Post #1443 961
Техсобес на зарубежке ⚙️

Друзья, всем привет! 👋
С вами Костя Андронов.

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

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


Собеседовался я параллельно в две компании. Ключевым для меня стало то, что в первой очень понравился собеседующий: полтора часа интервью пролетели незаметно, я бы ещё поговорил, но собес закончился. Это и стало одним из главных факторов, почему я потом принял оффер. Во второй компании собеседующий мне не понравился, да и я ему, видимо, тоже: он сразу сказал, что будет ещё один этап, но на него меня уже не позвали. (И такое бывает, это нормально, что мы проходим не все собеседования) Так что, недолго думая, я согласился на оффер из первой: он отвечает всем моим требованиям, и я не пожалел.

🧩 Что спрашивали

Собеседование шло больше полутора часов. Крупными блоками:
🔹 транзакции и внутренняя механика БД;
🔹 большая секция по оптимизации: индексы, методы доступа, методы соединения, чтение планов выполнения;
🔹 практика: несколько сложных задач на SQL, по факту из реальной работы.

⚙️ Ядро техсобеса: оптимизация

Основная часть технического собеседования крутится вокруг оптимизации. На senior-позицию её спрашивают всегда, это не «будет плюсом», а базовое требование. Бывает и написание PL/SQL-кода, но костяк всё равно оптимизация.

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

📌 Почему без этого шансов почти нет


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


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

Так что если метишь в сильную международную компанию, прокачка оптимизации не «когда-нибудь потом», а то, что напрямую конвертируется в оффер.


🎓 Куда за этим идти

Как раз этому мы учим на курсе «Оптимизация Oracle SQL» - я там преподаю. Разбираем планы выполнения, методы доступа и соединения, статистику и реальные кейсы, в том числе, которые приносят наши студенты.

Уже на следующей недели стартует 8й поток по Оптимизации. Записаться и задать вопросы можно в анкете предзаписи или напишите Владе. Буду всех рад видеть на наших занятиях и с удовольствием поделюсь своей экспертизой 🎓

А что на ваших собеседованиях спрашивали чаще? Делитесь в Чатике 💬

С вами был Костя Андронов. Хорошего дня и быстрых запросов! 🚀

Вставка от Дениса:
Давай поставим Косте 🔥 за то что он поделился своей историей. Понятно, что он не хочет на паблик рассказывать сильно много подробностей. Но думаю, за какими-то конкретными вопросами вполне можно сходить к нему в личку.


#карьера #собеседование #Konstantin_Andronov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • 🔥 28
  • ❤ 3
  • 👍 3
Post #1442 916
Про реальную ситуацию и ответственность за себя и семью

Коллеги, всем привет!
С вами Денис. Сегодня не будет розовых соплей.

Не хочу никого пугать, но сейчас реально жестковато. И дело даже не в Оракле, а в целом в тенденции в ИТ-индустрии.
Джуны на хер никому не нужны. Мидлы ещё пока нужны, но уже с натяжкой. Сейчас рынок сеньоров.

Я уже неоднократно пытался донести, что сеньор - это не про выслугу лет (15-20 лет опыта можно засунуть далеко). А
сеньор - тот, кто имеет экспертизу, может закрывать проблемы бизнеса, приносит пользу, шарит свою экспертизу, менторит, принимает решения, коммуницирует, не замыкается только в техническом стеке и одном слое, кто гибок.


Одной из жопоболей при работе с Ораклом является что? Правильно - оптимизация.

К счастью, Оракл всё ещё бажит, и оптимизатор всё ещё ошибается. А это значит, что в самый неподходящий момент может возникнуть проблема, которую мы с вами можем успешно преодолеть и заработать +1 в перформанс-ревью. Т.е. принести пользу бизнесу.
При условии, что решить можешь. Если не можешь - давай до свидания. На хрена ты такой работничек-сеньор тут нужен? За забором с десяток ораклистов ждут получше, помоложе, продвинутей, которые знают Python, умеют в ИИ, system design и т.п.
Это касалось «усидеть на месте», потому что это одна из стратегий, которая сейчас работает.

Теперь про поиск работы - вторая стратегия.
Я сейчас консультирую один из банков Узбекистана. И вчера у нас с техлидом состоялся разговор по поводу собесов. И знаете что? Банк готов платить хорошие деньги за специалиста. Только вот из тех кандидатов, которые приходили (я смотрел стату), оооочень маленький процент смогли пройти отбор. И как вы думаете, какие вопросы основные на эту позицию? 3..2..1. Оптимизация! Вот неожиданность, правда?

Мы вместе посмотрели вопросы. Они не сложные, но они на понимание. Если у тебя нет фундаментальных знаний по оптимизации - шансов нет совсем.
Если ты не можешь ответить на простые вопросы, как ты собираешься работать и решать проблемы? Техлид за тебя будет их решать? На хрена ты тогда такой работничек нужен?
Вот такой интересный парадокс - вакансии в банки есть, зарплата хорошая, а вот кандидаты не могут ответить на простые вопросы. Кто тут мудак? Рынок? Банк? Оракл? Ответить можете сами.


Для усиления эффекта привожу кусочек с одного из собесов на Оракл-разработчика. Посмотрите и честно для себя признайтесь: вы готовы соответствовать уровню? Сможете ответить? Без ээ, бээ, мэээ?

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

И начало этому в личке у Влады. На следующей недели стартует уже 8й поток по Оптимизации.

Подумай и не прое... шанс в очередной раз что-то изменить в своей жизни. До конца года как раз успеешь.


#oracle #sql #базы_данных #оптимизация_sql #разработка #аналитика #обучение #Denis_Kivilev

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • 👍 8
  • 🔥 4
  • 😁 4
Post #1441 884
Оптимизация Oracle SQL - как защита настоящего👨🏻‍🎓


Коллеги, всем привет! 👋


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

Знаешь Оптимизацию и умеешь решать вопросы бизнеса? Ты выживешь. Нет? Давай до свиданья, за забором очередь. 
Жестко, но факт. 


Через неделю стартует уже 8-й поток курса «Оптимизация Oracle SQL» 🔥

Это не история про “теперь я умею что-то большее”. Всё, игрушки кончились.

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


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

🔹 отчёт внезапно выполняется 40 минут вместо 4;
🔹 запрос то тормозит, то снова работает нормально;
🔹 индекс есть, но оптимизатор упорно выбирает другой план;
🔹 запрос переписали «на глаз» - и стало только хуже;
🔹 на собеседовании спрашивают не синтаксис, а ход мыслей при диагностике.

И в таких ситуациях подход «давайте просто добавим индекс» вообще не работает ❌


На курсе будем учиться:

 ✅ читать планы выполнения и понимать, что в них реально происходит;
✅ разбираться, почему оптимизатор принимает то или иное решение;
✅ видеть связь между SQL, статистикой, индексами и данными;
✅ отличать симптомы от причины;
✅ аргументировать технические решения перед командой, DBA или техлидом.
И это не только про DBA.

👨‍💻 Для разработчика - навык, который напрямую влияет на производительность и надёжность сервисов.
📊 Для аналитика или BI-специалиста - возможность писать запросы, которые не превращают отчётность в ночной кошмар поддержки 😄

Если обучение нужно согласовать на работе -  самое время запустить этот процесс, старт уже через неделю 😉

Пиши моей помощнице Владе и бронируй место, пока еще есть такая возможность 

👉 написать Владе 👈

Также будет возможность «попробовать» обучение, взяв пробный период. Подробности будут на след неделе, следите за новостями 😉


До встречи!

#oracle #sql #базы_данных #оптимизация_sql #разработка #аналитика #обучение

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • ❤ 2
  • 👍 2
  • 🔥 2
Post #1440 958
Как я искал работу Oracle DBD вне России 🌍

Друзья, всем привет! 👋
С вами Костя Андронов, преподаватель проекта 😉

Кажется, поиск работы вне России у нас в канале почти не обсуждался. А у меня недавно был такой опыт - и он сильно отличался от того, как я искал работу в РФ.

Небольшая предыстория. В апреле меня сократили: проект, которым занималась команда, где я работал полтора года, довели до прода; оракловой работы осталось немного, а времена сейчас сами понимаете.

Так как я решил перебраться в Европу, то мне подходили 2 варианта вакансий:

1️⃣ full remote с переездом по Digital Nomad
2️⃣ работа уже в Европе с релокацией от работодателя.

Мне ближе первый: при "фуллремоуте" не привязан к конкретной стране и выбираешь сам.
Общая цель: международная компания и доход вне РФ.

К началу поиска я уже жил не в России, но и не в Европе - я был в Турции.

🇷🇺 Как это было в России

Ещё пару лет назад поиск выглядел так: открываешь резюме на hh - и тебе пишут HR. Много. При трудоустройстве в прошлую компанию я прошёл около 30 собеседований за полтора месяца, и на все меня находили сами - я не написал никому первым. Оставалось выбрать.

Конечно, я слышал все истории про кризис в IT. Но для начала решил искать самостоятельно.
❌ Поиск я начал в марте: поправил резюме, завёл LinkedIn, откликался на вакансии. Выхлоп - ноль. Не «мало откликов», а именно ноль. Пара ответов была, но всё упиралось в одно и то же:
🔹 есть ли у тебя разрешение на работу в Европе?
🔹 где ты физически находишься?


Отвечаю: «Я не в Европе, но готов к релокации» - и на этом чаще всего всё. Пока ты снаружи, ты неудобный кандидат. Думаю, изнутри Европы искать заметно проще.

🤝 Что решает на самом деле?

Откликаться, конечно, надо - без этого никак. Но за границей сильнее всего работает нетворкинг. Многих находят ещё до того, как вакансия вообще где-то появится. Часть предложений в открытом доступе ты просто не увидишь. Так что поиск во многом вероятностный: чем шире нетворкинг, тем выше шанс. Наращивать его проще всего в LinkedIn - вне России именно там добавляют друг друга ради работы.

Сам я поначалу делал это криво: добавлял всех подряд, влез в какую-то группу - и потом от индийских рекрутёров не было спасу 🤪 Толку ноль.

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

✅ Как это сработало у меня

С будущим работодателем вышло почти случайно. Я сам добавил их HR в LinkedIn и написал ей вхолодную: рассказал о себе, поделился резюме. Резюме зацепило - позвали на собеседование. Открытой вакансии у них, к слову, не было.

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

В итоге - международная компания и фуллремоут. Цель выполнена ✅

🧭 Вывод

Одни отклики, когда ты вне Европы, срабатывают редко. Решает нетворкинг, правильные люди в ленте и немного везения. Качайте ваши соц связи заранее.

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


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

С вами был Костя Андронов. Хорошего дня и удачных собеседований! 🚀

#карьера #собеседование #Konstantin_Andronov #собеседование

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • ❤ 11
  • 👍 8
  • 🔥 7
Post #1439 1.07K
Друзья, всем привет!
С вами Денис 🤝

Волею судеб я нахожусь в Республике Узбекистан до 1 октября. Было бы классно встретиться с коллегами, которым было интересно послушать вживую доклад про нашу любимую СУБД Oracle ❤️
Поэтому я решил собрать offline-встречу в г. Ташкент.

Если вы сейчас находитесь в Узбекистане, хотели бы посетить это мероприятие, пожалуйста добавьтесь в группу - https://t.me/oracle_tashkent_2026
и заполните анкету - https://forms.gle/SvBpicEzCSaM2Y1j9

🔸Даты: 25.09 с 17:00 или 30.09 с 10:00.
🔸Место: пока ищу. Не найду - не состоится.
🔸Тема: нужно выбрать в анкете темы, по результатам голосования решим 😉
🔸Язык: русский
🔸Количество: 25-40 участников. Приглашайте коллег.

Будет такой пробный шар. Если зайдет, будем что-нибудь такое иногда делать 🚀
Что насчет онлайн трансляции? Не думаю, что будет.

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

➡️ Добавиться в группу ⬅️

➡️ Заполнить анкету участника ⬅️

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


#вебинар #offline #meetup #Denis_Kivilev

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • ❤ 7
  • 👍 1
  • 🔥 1
  • 🤩 1
Post #1435 1.04K
Как всегда познавательно и интересно 😎

Коллеги, всем привет!

Вчера прошел наш последний вебинар в летнем цикле. Разобрали тему «Секреты работы с большими данными в DWH».🔥
Спасибо всем, кто пришел 🤝 отдельное спасибо за слова благодарности, это заряжает! 😊

Возможно, вчера кто-то пропустил информацию об обучении.

Напоминаем, что у нас есть два продукта по Оптимизации

1️⃣ Мини-курс "Оптимизация Oracle SQL: Быстрый старт 🚀",
который вы можете пройти буквально за выходные. При покупке данного курса вы получаете бонусом записи всех наших прошедших вебинаров, прошедшие летом:

1. «Чтение планов запросов» + 🎁 Чтение планов в PostgreSQL.
2. «Методы индексного доступа» + 🎁 Как физически выглядят индексы
3. «Методы соединения таблиц» + 🎁 Соединения в PostgreSQL
4. «Секреты работы с большими данными в DWH» + 🎁 Адаптивная оптимизация

Про карьеру - эфиры с Любой Прохоровой
5. «Как строить карьерную стратегию, когда вокруг кризис»
6. "Как правильно называть зарплатную вилку"

👉 взять мини-курс и закрыть пробелы по Оптимизации 👈

подходит для QA, аналитиков, Java-разрабов, DBD. DBA.

2️⃣ Основной 3-х месячный курс "Оптимизация Oracle SQL", который позволит максимально погрузиться в тему и выйти после обучения специалистом, который будет задачи по Оптимизации щелкать как орешки 😉

8й поток стартанет буквально через неделю 🚀
Это будет последний поток по Оптимизации ❌ Не тормози - залетай ✅

Пишите моей помощнице Владе.

—

И еще. У меня так зудит сделать offline-мероприятие в Ташкенте... завтра будет больше подробностей 😉

Всем хорошего дня и отличного завершения рабочей недели!

#вебинар #миникурс #отзывы #оптимизация

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads
RUTUBE
  • ❤ 6
  • 🔥 5
  • 👍 4
Older posts →

About this channel

How can I read @oracle_dbd without a Telegram account?
TGViewer shows the public web preview Telegram publishes for Oracle Developer👨🏻‍💻: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does Oracle Developer👨🏻‍💻 have?
Oracle Developer👨🏻‍💻 (@oracle_dbd) has 3.43K subscribers on Telegram, refreshed roughly every 30 minutes.
Does Oracle Developer👨🏻‍💻 know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →