This media is not supported in your browser
VIEW IN TELEGRAM
🆕 Пополнение в команде
Друзья, всем привет!
На связи Денис 🤝
Хочу немного рассказать про нашего нового преподавателя - Костю Андронова.
Костя - один из лучших студентов на курсе «Оптимизация Oracle SQL» 3️⃣ потока.
Кроме того, он опытный разработчик, работавший в разных компаниях с OLTP- и DWH-системами.
Сейчас он трудится в RnD-отделе компании ИТ Магнит.
Для него это - новый вызов в развитии soft skills. Помните, да? Не забываем прокачивать софт-скиллы - в современных реалиях они не менее важны, чем hard skills.
Костя уже провёл несколько практических занятий на 6-м потоке по оптимизации. Фидбэк от участников - положительный ✅
На первой практике мы с Пашей решили подстраховать Костю и посидели в фоне на встрече. И знаете что? У меня ни разу не возникло желания как-то вмешаться или подправить.
Костя рассказывал и отвечал на вопросы грамотно и чётко. Чувствуется практический опыт 🔥
И это только начало - я уверен, что ему зайдёт такая активность 👌🏻
—
Знаю по себе, как волнительны первые публичные мероприятия.
Помню свой дебют в роли преподавателя: 2019 год, компания Qiwi, мой менеджер попросил провести обучение по Oracle для коллег. Очный формат, три группы по 10–12 человек.
В голове рой вопросов:
«А вдруг облажаюсь?»
«А если спросят что-то, чего я не знаю?»
«А вдруг не донесу информацию?»
...и ещё миллион таких «а если».
Первый десяток занятий - вспотевшие ладони, голова кругом... но ничего! Потом вошёл в раж и стал получать удовольствие.
Особенно круто, когда попадаешь в ресурсное состояние: будто бы информация льётся прямо из подсознания (спойлер: не совсем так 😅).
Всегда готовлю презентации и примеры, но почти никогда не репетирую.
Когда ты в ресурсе, это выглядит естественнее, чем заученный скрипт.
Кто ловил такое состояние - меня поймут 😉
—
И главное: Костя готов делиться знаниями с вами, уважаемые подписчики! 🔥
Он уже накидал мне несколько интересных тем - кластеризация, DBMS_PARALLEL_EXECUTE, LogMiner и многое другое.
Так что не переключайтесь - впереди много полезного контента. Если темы интересны - ставь 🔥🔥🔥
P.S. На видео - кусочек с практики, которую проводил Костя. Там он рассказывает про порождение child-курсоров.
Если ты не в курсе, что это такое - рекомендую разобраться самостоятельно или прийти к нам на занятия 😉
Всем добра 🕊
#oracle #Denis_Kivilev #Konstantin_Andronov
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Друзья, всем привет!
На связи Денис 🤝
Хочу немного рассказать про нашего нового преподавателя - Костю Андронова.
Костя - один из лучших студентов на курсе «Оптимизация Oracle SQL» 3️⃣ потока.
Кроме того, он опытный разработчик, работавший в разных компаниях с OLTP- и DWH-системами.
Сейчас он трудится в RnD-отделе компании ИТ Магнит.
Для него это - новый вызов в развитии soft skills. Помните, да? Не забываем прокачивать софт-скиллы - в современных реалиях они не менее важны, чем hard skills.
Костя уже провёл несколько практических занятий на 6-м потоке по оптимизации. Фидбэк от участников - положительный ✅
На первой практике мы с Пашей решили подстраховать Костю и посидели в фоне на встрече. И знаете что? У меня ни разу не возникло желания как-то вмешаться или подправить.
Костя рассказывал и отвечал на вопросы грамотно и чётко. Чувствуется практический опыт 🔥
И это только начало - я уверен, что ему зайдёт такая активность 👌🏻
—
Знаю по себе, как волнительны первые публичные мероприятия.
Помню свой дебют в роли преподавателя: 2019 год, компания Qiwi, мой менеджер попросил провести обучение по Oracle для коллег. Очный формат, три группы по 10–12 человек.
В голове рой вопросов:
«А вдруг облажаюсь?»
«А если спросят что-то, чего я не знаю?»
«А вдруг не донесу информацию?»
...и ещё миллион таких «а если».
Первый десяток занятий - вспотевшие ладони, голова кругом... но ничего! Потом вошёл в раж и стал получать удовольствие.
Особенно круто, когда попадаешь в ресурсное состояние: будто бы информация льётся прямо из подсознания (спойлер: не совсем так 😅).
Всегда готовлю презентации и примеры, но почти никогда не репетирую.
Когда ты в ресурсе, это выглядит естественнее, чем заученный скрипт.
Кто ловил такое состояние - меня поймут 😉
—
И главное: Костя готов делиться знаниями с вами, уважаемые подписчики! 🔥
Он уже накидал мне несколько интересных тем - кластеризация, DBMS_PARALLEL_EXECUTE, LogMiner и многое другое.
Так что не переключайтесь - впереди много полезного контента. Если темы интересны - ставь 🔥🔥🔥
P.S. На видео - кусочек с практики, которую проводил Костя. Там он рассказывает про порождение child-курсоров.
Если ты не в курсе, что это такое - рекомендую разобраться самостоятельно или прийти к нам на занятия 😉
Всем добра 🕊
#oracle #Denis_Kivilev #Konstantin_Andronov
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
🔥35
Задачка. Update в PostgreSQL vs Oracle
Друзья, всем привет!
На рабочем проекте у меня сейчас нет Oracle. Работаем с PostgreSQL и NoSQL. Поэтому забавно наблюдать отличия между привычным "Мерседесом" и "ВАЗом" (в хорошем смысле 😊)
К примеру. Рутинная задача из практики - обновить строки.
🔸 Нужно обновить поле "configuration" таблицы "wallet", если оно пустое.
🔸 Значение для обновление взять из справочника "wallet_template" с id = 6 из поля "default_configuration".
не обращайте внимание на названия, в реальной жизни все называется по-другому.
На оптимизацию забиваем. Кошельков немного.
Попробуйте написать запрос в Oracle и, если есть возможность, в PostgreSQL.
Ваши варианты можно закидывать в чатик 💬
Продолжение в пятницу 🎓
#postgresql #oracle #Denis_Kivilev #задача
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Друзья, всем привет!
На рабочем проекте у меня сейчас нет Oracle. Работаем с PostgreSQL и NoSQL. Поэтому забавно наблюдать отличия между привычным "Мерседесом" и "ВАЗом" (в хорошем смысле 😊)
К примеру. Рутинная задача из практики - обновить строки.
create table wallet (
id number primary key,
configuration varchar2(200 char)
);
create table wallet_template (
id number primary key,
default_configuration varchar2(200 char)
);
🔸 Нужно обновить поле "configuration" таблицы "wallet", если оно пустое.
🔸 Значение для обновление взять из справочника "wallet_template" с id = 6 из поля "default_configuration".
не обращайте внимание на названия, в реальной жизни все называется по-другому.
На оптимизацию забиваем. Кошельков немного.
Попробуйте написать запрос в Oracle и, если есть возможность, в PostgreSQL.
Ваши варианты можно закидывать в чатик 💬
⚠️ Рекомендую попробовать решить без ИИ
Продолжение в пятницу 🎓
#postgresql #oracle #Denis_Kivilev #задача
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
❤3👍3
Решение задачи. Update в PostgreSQL vs Oracle
Друзья, всем привет!
Сегодня разберем довольно простую задачку. Суть: написать update одной таблички с использованием другой.
Полная постановка здесь.
Итак
Решение в Oracle
1️⃣ Через использование подзапроса
2️⃣ Колхоз через Merge
Решение в PostgreSQL
1️⃣ способ через подзапрос так же будет работать
2️⃣ Merge появился в PostgreSQL в 15й версии, поэтому вам может не подойти.
3️⃣ Расширенный SQL в PostgreSQL
Да, немого не привычно, но удивляет своей лаконичностью.
Хорошо ли читается? Мой коллега на ревью запнулся об этот запрос 🤷🏻♂️
—
К вопросу о миграции с одной СУБД на другую.
Можно ли взять и перенести на изи запросы с Оракла в ПГ?
Что-то да, что-то нет. Merge, например, придется переписывать, если у вас не совсем актуальная версия PG.
—
Может быть вы знаете, какие-то другие варианты запросов? Напишите в чатике 💬
А вам какой синтаксис больше нравится?
Если Oracle - ставь 🔥
Если PostgreSQL - ставь 👍
Я, пожалуй, поставлю 👍
#postgresql #oracle #Denis_Kivilev #решениезадачи
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Друзья, всем привет!
Сегодня разберем довольно простую задачку. Суть: написать update одной таблички с использованием другой.
Полная постановка здесь.
Итак
Решение в Oracle
1️⃣ Через использование подзапроса
update wallet w
set configuration = (
select wt.default_configuration
from wallet_template wt
where wt.id = 6
)
where w.configuration is null;
2️⃣ Колхоз через Merge
merge into wallet w
using (select default_configuration from wallet_template where id = 6) wt
on (1 = 1)
when matched then
update
set w.configuration = nvl(w.configuration, wt.default_configuration);
Решение в PostgreSQL
1️⃣ способ через подзапрос так же будет работать
2️⃣ Merge появился в PostgreSQL в 15й версии, поэтому вам может не подойти.
3️⃣ Расширенный SQL в PostgreSQL
update wallet w
set configuration = wt.default_configuration
from wallet_template wt
where wt.id = 6
and w.configuration is null;
Да, немого не привычно, но удивляет своей лаконичностью.
Хорошо ли читается? Мой коллега на ревью запнулся об этот запрос 🤷🏻♂️
—
К вопросу о миграции с одной СУБД на другую.
Можно ли взять и перенести на изи запросы с Оракла в ПГ?
Что-то да, что-то нет. Merge, например, придется переписывать, если у вас не совсем актуальная версия PG.
—
Может быть вы знаете, какие-то другие варианты запросов? Напишите в чатике 💬
А вам какой синтаксис больше нравится?
Если Oracle - ставь 🔥
Если PostgreSQL - ставь 👍
Я, пожалуй, поставлю 👍
#postgresql #oracle #Denis_Kivilev #решениезадачи
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
🔥37👍23❤1
Права доступа в Oracle💥
Друзья, всем привет!
С вами Костя Андронов 👋
И это мой первый технический пост на канале. Сегодня разберёмся с правами доступа в Oracle💥
🔐 Привилегии в Oracle делятся на 2 типа
1️⃣ Системные — дают возможность выполнять действия в БД в целом.
Пример:
Позволяет создавать таблицы пользователю HR.
Где посмотреть детали:
👉Вью
Кто выдаёт/забирает:
• те, кому выдали привилегию с опцией
• те, у кого есть привилегия
2️⃣ Объектные — управляют доступом к конкретным объектам (таблицам, представлениям и т.д.)
Пример:
Даёт право читать данные из этой таблицы.
Где посмотреть детали:
👉 Вью
Кто выдаёт/забирает?
• владелец объекта
• те, у кого есть право
• те, кому выдали привилегию с опцией
А теперь представим ситуацию:
Создали новую таблицу, как выдать права:
– бизнес-пользователям — только чтение
– разработчикам — все DML операции
Выдавать вручную каждому?
❌ Долго и неудобно.
✅ Решение — роли. Это набор привилегий, который можно назначать пользователям (и даже другим ролям).
Каждый получает ровно то, что ему нужно — и не больше 🔥
Выдать права на новую таблицу можно всем пользователям в 2 команды:
Если интересно подробнее узнать о правах доступа в Oracle, то ставьте 👍
#oracle #backendpro #теория #grant #права #Konstantin_Andronov
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Друзья, всем привет!
С вами Костя Андронов 👋
И это мой первый технический пост на канале. Сегодня разберёмся с правами доступа в Oracle💥
🔐 Привилегии в Oracle делятся на 2 типа
1️⃣ Системные — дают возможность выполнять действия в БД в целом.
Пример:
grant create table to HR;
Позволяет создавать таблицы пользователю HR.
Где посмотреть детали:
👉Вью
DBA_SYS_PRIVS
- содержит информацию о всех выданных системных привилегияхКто выдаёт/забирает:
• те, кому выдали привилегию с опцией
ADMIN OPTION
• те, у кого есть привилегия
GRANT ANY PRIVILEGE
2️⃣ Объектные — управляют доступом к конкретным объектам (таблицам, представлениям и т.д.)
Пример:
grant select on HR.DEPARTMENTS to USR;
Даёт право читать данные из этой таблицы.
Где посмотреть детали:
👉 Вью
DBA_TAB_PRIVS
- содержит информацию о всех выданных объектных привилегияхКто выдаёт/забирает?
• владелец объекта
• те, у кого есть право
GRANT ANY OBJECT PRIVILEGE
• те, кому выдали привилегию с опцией
WITH GRANT OPTION
А теперь представим ситуацию:
Создали новую таблицу, как выдать права:
– бизнес-пользователям — только чтение
– разработчикам — все DML операции
Выдавать вручную каждому?
❌ Долго и неудобно.
✅ Решение — роли. Это набор привилегий, который можно назначать пользователям (и даже другим ролям).
create read_only_role;
create dev_role;
grant read_only_role to busines_user;
grant read_only_role to dev_role;
grant dev_role to dev_user;
Каждый получает ровно то, что ему нужно — и не больше 🔥
Выдать права на новую таблицу можно всем пользователям в 2 команды:
grant select on tst_table to read_only_role;
grant insert, update, delete on tst_table to dev_role;
Если интересно подробнее узнать о правах доступа в Oracle, то ставьте 👍
#oracle #backendpro #теория #grant #права #Konstantin_Andronov
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
👍45❤7🔥6
Права доступа в Oracle. Часть 2 💥
Друзья, всем привет!
В продолжение поста Кости про права.
Один из подписчиков, к слову сказать, наш студент, обучавшийся на курсе по PL/SQL, правильно подметил, что в Oracle 12c появился новый объектный грант - READ.
Что это за грант такой и в чем отличие от SELECT?
Мы привыкли, что если нужен доступ к объекту, то достаточно выдать грант SELECT:
Однако SELECT позволяет выполнять, в том числе, операцию блокировки строки - SELECT ... FOR UPDATE. Всегда ли это нужно? Хороший вопрос.
Видимо, проблема назрела, и Oracle сделали новый грант - READ, который позволяет выполнять выборку из таблицы, но без возможности блокировки:
❌ Так уже не напишешь
Документация Oracle 12.2c
Коллеги, очень классно, что вы делитесь такими особенностями - не всегда они попадают в поле зрения 👍🏻
Всем хорошего дня ☀️
#oracle #backendpro #теория #grant #права #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Друзья, всем привет!
В продолжение поста Кости про права.
Один из подписчиков, к слову сказать, наш студент, обучавшийся на курсе по PL/SQL, правильно подметил, что в Oracle 12c появился новый объектный грант - READ.
Что это за грант такой и в чем отличие от SELECT?
Мы привыкли, что если нужен доступ к объекту, то достаточно выдать грант SELECT:
grant select on some_table to some_user;
Однако SELECT позволяет выполнять, в том числе, операцию блокировки строки - SELECT ... FOR UPDATE. Всегда ли это нужно? Хороший вопрос.
Видимо, проблема назрела, и Oracle сделали новый грант - READ, который позволяет выполнять выборку из таблицы, но без возможности блокировки:
grant read on some_table to some_user;
❌ Так уже не напишешь
select * from some_table where ... for update;
Документация Oracle 12.2c
Коллеги, очень классно, что вы делитесь такими особенностями - не всегда они попадают в поле зрения 👍🏻
Всем хорошего дня ☀️
#oracle #backendpro #теория #grant #права #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
👍28❤3🆒1
🔐 Роли в Oracle
Друзья, всем привет! 👋🏻
В личку мне начали задавать вопросы, мол, Денис, было бы неплохо рассказать чуть больше про роли - что это, зачем, как использовать и т.п.
Почему бы и нет? Материал рассчитан на Junior-разработчиков.
Роли в Oracle - инструмент, который часто недооценивают, но который может здорово упростить жизнь администратору и разработчику 🚀
Что это такое?
Роль - это контейнер для набора привилегий. Вместо того чтобы выдавать пользователю десятки прав по отдельности, мы создаём роль, наделяем её нужными правами и назначаем пользователю.
Пример использования
1️⃣ Создаём роль:
2️⃣ Даём привилегии:
3️⃣ Назначаем роль пользователю:
Теперь Иван получает доступ ко всем объектам, указанным в роли, без индивидуальной раздачи прав.
Профит для пользователя
💡 Меньше хаоса в правах.
💡 Легко добавлять/удалять доступ.
💡 Быстро подключать новых сотрудников/приложения к проекту.
Как посмотреть, что внутри роли?
Для своих ролей:
Для анализа, какие привилегии входят в роли:
Для полной картины (только DBA): DBA_ROLE_PRIVS, DBA_ROLES.
Роли можно наследовать
Например, роль SELECT_CATALOG_ROLE содержит в себе роль HS_ADMIN_SELECT_ROLE.
Представления для просмотра иерархии ролей - ROLE_ROLE_PRIVS.
Особенности использования ролей
▫️ Если роль слишком “широкая”, можно случайно открыть доступ лишним пользователям.
▫️ Роли можно наследовать от других ролей - может быть сложновато понять, откуда ноги растут.
▫️ Есть особенности работы с ролями в PL/SQL-модулях и правами на объекты. Например, если вы дали роли select на таблицу и она используется в PL/SQL-процедуре, то пользователь столкнется с ошибкой отсутствия доступа к таблице 🤷🏻♂️ При этом выполнение того же select вне PL/SQL-кода будет без ошибок.
Если интересно ставь палец вверх и мы расскажем об этом в одном из следующих постов 👍🏻
Всем хорошей трудовой недели 👨🏻💻
#oracle #backendpro #теория #grant #права #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Друзья, всем привет! 👋🏻
В личку мне начали задавать вопросы, мол, Денис, было бы неплохо рассказать чуть больше про роли - что это, зачем, как использовать и т.п.
Почему бы и нет? Материал рассчитан на Junior-разработчиков.
Роли в Oracle - инструмент, который часто недооценивают, но который может здорово упростить жизнь администратору и разработчику 🚀
Что это такое?
Роль - это контейнер для набора привилегий. Вместо того чтобы выдавать пользователю десятки прав по отдельности, мы создаём роль, наделяем её нужными правами и назначаем пользователю.
Пример использования
1️⃣ Создаём роль:
CREATE ROLE analyst_role;
2️⃣ Даём привилегии:
GRANT SELECT ON sales TO analyst_role;
GRANT SELECT, UPDATE ON customers TO analyst_role;
3️⃣ Назначаем роль пользователю:
GRANT analyst_role TO ivan;
Теперь Иван получает доступ ко всем объектам, указанным в роли, без индивидуальной раздачи прав.
Профит для пользователя
💡 Меньше хаоса в правах.
💡 Легко добавлять/удалять доступ.
💡 Быстро подключать новых сотрудников/приложения к проекту.
Как посмотреть, что внутри роли?
Для своих ролей:
SELECT * FROM USER_ROLE_PRIVS;
Для анализа, какие привилегии входят в роли:
SELECT * FROM ROLE_SYS_PRIVS;
SELECT * FROM ROLE_TAB_PRIVS;
Для полной картины (только DBA): DBA_ROLE_PRIVS, DBA_ROLES.
Роли можно наследовать
Например, роль SELECT_CATALOG_ROLE содержит в себе роль HS_ADMIN_SELECT_ROLE.
Представления для просмотра иерархии ролей - ROLE_ROLE_PRIVS.
Особенности использования ролей
▫️ Если роль слишком “широкая”, можно случайно открыть доступ лишним пользователям.
▫️ Роли можно наследовать от других ролей - может быть сложновато понять, откуда ноги растут.
▫️ Есть особенности работы с ролями в PL/SQL-модулях и правами на объекты. Например, если вы дали роли select на таблицу и она используется в PL/SQL-процедуре, то пользователь столкнется с ошибкой отсутствия доступа к таблице 🤷🏻♂️ При этом выполнение того же select вне PL/SQL-кода будет без ошибок.
Если интересно ставь палец вверх и мы расскажем об этом в одном из следующих постов 👍🏻
Всем хорошей трудовой недели 👨🏻💻
#oracle #backendpro #теория #grant #права #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
👍22❤3🦄1