Обложка канала

Oracle Developer👨🏻‍💻. Страница 9

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

  • Oracle Developer👨🏻‍💻

    Задача: постановка в посте вторника. Решение: Вспомним для чего нужна функция NVL. Если первый аргумент null, то возвращается второй аргумент. На примере: nvl(null, 2), результатом будет “2”. Тогда какой правильный ответ в задаче? Первый аргумент возвращает “1” - не null. Значит запрос выполнится за 5 секунд? К сожалению, нет. Не важно какое значение в первом аргументе (null, не null), второй аргумент будет вычисляться всегда. Это допустимо, когда это просто литерал (как в примере выше). Но если это что-то вычисляемое или получение значение из сиквенса, то мы столкнемся с сайд-эффектами. В документации, явно об этом не написано. Возвращаясь к нашей задачи. 5 секунд будет потрачено при вычислении первого аргумента и 10 секунд для второго. Итого: 15 секунд. Как с этим бороться? Использовать альтернативные функции. Например, COALESCE. О ней я расскажу более подробно в следующих постах. #решениезадачи #функции #nvl #coalesce
  • Oracle Developer👨🏻‍💻

    Задача Дана функция - sleep. Просто засыпание на N секунд с возможностью использования как функции в SQL и PL/SQL. Всегда возвращается “1”.
    create or replace function sleep(p_sec number) return number
    is
    begin
      dbms_session.sleep(p_sec); -- 18+
      -- dbms_lock.sleep(p_sec); -- до 18
      return 1;
    end;
    /
    
    
    Выполняется такой запрос:
    select nvl(sleep(5), sleep(10)) from dual;
    
    
    За сколько секунд он выполнится? Рекомендую не повторять этот код, а подумать и выбрать ответ. И только после этого, повторить в СУБД и проверить себя. #задача
  • Oracle Developer👨🏻‍💻

    Как готовят Oracle в Спортмастере Друзья, всем привет! В рабочих чатиках уже давно мелькало это интервью. Вполне вероятно, что вы его уже видели, но у меня все как-то не доходили руки. Наконец-то, на этих выходных удалось урвать почти час свободного времени (на скорости x1.25) на просмотр. Было интересно послушать, чем живет разработка в “Спортмастере”. Моё мнение, вполне себе приятное интересное интервью. Коллеги используют (тезисно): ▫️GitLab для поставки инкремента; ▫️EBR для наката программных объектов без остановки; ▫️Crucible для code-review; ▫️SonarQube для автоматической проверки кода; ▫️Pluggable Database для создания окружения; ▫️Unit-тестирование (utPL/SQL) и др. Отличный джентльменский набор. Такое не в каждой компании увидишь. К слову сказать, в Qiwi, где я сейчас имею счастье работать, большая часть из этого также используется. Привет коллегам 😉 Я впервые публикую видео не со своего канала. Возможно, стоит это делать чаще, с интересными материалами. Приятного просмотра! Как готовят Oracle в Спортмастере / Максим Пермяков #видео
    Разработка БАЗ ДАННЫХ! / Как готовят Oracle в Спортмастере / Максим Пермяков

    Из выпуска вы узнаете, как программисты Спортмастера привносят культуру в процесс разработки баз данных. Гость выпуска директор департаментов разработки и системного анализа в Sportmaster Lab - Максим Пермяков. Тестирование баз данных, CI и CD, кодовые стандарты и версионирование PL/SQL - всё это в сегодняшнем интервью. Так что, заваривайте чаинский/кофеинский и погнали😉 ДОП. МАТЕРИАЛЫ: - Sportmaster Lab: http://sportmasterlab.info - Максим в LinkedIn: https://bit.ly/3iwRl8a - Материалы из выпуска: https://t.me/itbeard/641 - Аудио-версия выпуска: https://itbeard.mave.digital/ep-143 - Стать спонсором канала: https://www.youtube.com/itbeard/join НАВИГАЦИЯ: 0:00 - Начало 1:19 - Как попал в Спортмастер 6:37 - Диссертация по нейронкам 9:12 - Работа в банке 14:07 - Переход в Спортмастер 17:38 - Программист под Oracle и PL/SQL 20:13 - Согласованность данных 25:38 - Тесты в БД 28:55 - API в базах данных 31:17 - Хранение кода и системы контроля версий- 33:38 - CI & CD 40:00 - Про администраторов баз данных (DBA)…

    YouTube
  • Реклама

  • Oracle Developer👨🏻‍💻

    Recall Statement - Перевызов запроса Всем привет! Еще один пост для тех кто использует IDE PL/SQL Developer. Есть возможность открыть список выполнявшихся команд в IDE. Экономит время и нервы. Нет необходимости писать запрос заново, можно взять уже когда-то написанный. Я достаточно часто использую. Как это выглядит см скрин ⬆️ Открыть можно через комбинацию - CNTRL+E или меню Edit -> Recall Statement. Появится окно с выполненными запросами. Можно сортировать по дате, по тексту, по коннекту. Если не ошибаюсь, в 14й версии PL/SQL Developer добавили возможность фильтрации, раньше этого очень не хватало. Количество сохраняемых запросов можно установить в настройках: Configure -> Preferences -> Tools -> Recall Statement. По-моему, в dbForge и в TOAD тоже есть такие возможности. DataGrip? SQL Developer? DBeaver? Можете написать в комментах про свою любимую IDE. Удобный настроенный инструмент облегчает и ускоряет любую работу 😉 #ide
  • Oracle Developer👨🏻‍💻

    Подсветка интерфейса в зависимости от БД Всем привет! Пост будет полезен тем, кто использует IDE PL/SQL Developer. 100% вы встречались с ситуацией, когда выполняли скрипт не на той БД, не в той среде и т.п. Для предупреждения таких фейлов, многие IDE позволяют раскрашивать интерфейс в зависимости от коннекта к той или иной БД. Не исключение мой любимый инструмент - PL/SQL Developer. Но не многие DBD/DBA знают про эту возможность. Если зайти в меню Preferences -> Appearance, то в разделе “Connection Indicators” можно задать правила для подкрашивания интерфейса. Шаблоны могут быть такими: ▫️ *@*dev ▫️ myuser@* ▫️ myser@some_proddb и т.д. Для каждого шаблона задается цвет. Обычно делают: красный для Prod-сред, желтый для тестовых, зеленый для dev. На скрине я подключен к БД содержащей в строке подключения слово dev. Соответственно, индикаторы подсвечены зеленым. В PL/SQL Developer’e очень много разных фишек. Могу поделиться, если интересно 😉 Всем хорошей рабочей недели 👍 #ide
  • Oracle Developer👨🏻‍💻

    Друзья, всем привет! А у нас сегодня вакансия с релокейтом в Гданьск (Польша). Вдруг кто-то хочет поменять локацию? Ну, вдруг 😉 Кратко, чем необходимо заниматься: миграция с разных СУБД в облако от Амазона. Причем судя по описанию, ребята готовы обучать: No previous cloud experience is required for this job В общем, если интересно, пишите @Distorge jobs-us-east.amazon.com/es/jobs…elerator #вакансия
    Database Engineer - AWS Database Migration Accelerator

    Do you have in depth experience with at least one of the following databases? Oracle SQL, PostgreSQL, MSSQL, MySQL, Snowflake, GreenPlum, Teradata, Redshift, Netezza.If your answer is YES, you should consider this job opportunity!***No previous cloud experience is required for this job***Come and join the Database Migration Accelerator team that helps our customers migrate to the cloud. We are on a mission to transform legacy enterprise workloads into modern AWS native application architectures. We achieve this by utilizing cutting edge tools, sophisticated engineering systems and database expertise. We provide fixed price and high speed migrations to the cloud. Database Migration Accelerator is combining various AWS cloud platform services into one product which would serve our customers. We are a team of professionals that are forward-looking and using latest technology offerings (AWS cloud services, relational and NoSQL databases) to build new capability to operationalize and automate migration methodologies.…

    Amazon
  • Oracle Developer👨🏻‍💻

    Функции SQL vs Функции PL/SQL Всем привет! Вы уже задумывались о различиях между стандартными SQL и PL/SQL функциями? «А разве, между ними существуют различия?» - спросит новичок. ⚠️ Да, это разные функции и иногда они ведут себя по-разному. В Oracle Database, как известно, есть два разных движка: для выполнения SQL-запросов и для PL/SQL-кода. Как все знают, следует избегать лишних переключения между этими движками. Чтобы таких переключений происходило как можно меньше, для SQL и PLSQL имеются свои реализации стандартных функций, описанных в документации. Они работают почти всегда одинаково и в обычной практике мы их не различаем, Например: declare my_var integer; begin select nvl(c.a, c.b) into my_var from my_table c; -- Вызов SQL-функции my_var := nvl(my_var, 0); -- Вызов PL/SQL-функции end;
    /
    
    Зачем нам нужно помнить о разных функциях? Причин несколько: 1️⃣ В PL/SQL может не оказаться соответствующей функции из SQL. Например, вы не сможете в PL/SQL-коде напрямую вызвать SQL-функции NVL2 и DECODE. Видимо, разработчики не стали включать в состав языка эти функции посчитав достаточно универсальной конструкцию CASE. Наличие интересующей функции можно проверить в пакете SYS.STANDARD. Также можно обратиться к документации на язык PL/SQL и проверить вызов на практике в обычном анонимном PL/SQL-блоке. 2️⃣ В SQL может не оказаться "своей" вызываемой функции. В таком случае можно попробовать обратиться к PL/SQL-функции напрямую через пакет SYS.STANDARD. Например:
    select sys.standard.sqlcode from dual
    
    В таком случае произойдёт то самое переключение контекста. Но не всякая PL/SQL-функция доступна в SQL из-за различий в поддерживаемых типах данных (Движок SQL ничего не знает о типе BOOLEAN). 3️⃣ Одноимённые реализации функции в SQL и PL/SQL-движках могут выдавать разные результаты. К сожалению, такое иногда встречается, поскольку каждую из реализаций внутри Oracle Database писали и поддерживали разные люди. Я натыкался на различия в результатах для функции TO_CHAR(left number, format varchar2, parms varchar2). Функции применяли разное выравнивание пробелами и приходилось прилагать дополнительные усилия, чтобы преобразование везде работало одинаково. ✅Пожалуйста, напишите в комментариях, встречалось ли вам что-то подобное. Автор: @alexeionin #функции
    Oracle Developer👨🏻‍💻

    Пакет sys.standard Довольно интересный системный пакет. Содержит в себе определения типов, функций, именованных исключений и много чего другого. Можно сказать, все определение языка PL/SQL =) Станем понятно, что за тип STRING или например, VARRAY. Чем они отличаются от VARCHAR2. Так же найдете забавные числовые типы, например SIGNTYPE. Забыли какие есть именованные исключения типа NO_DATA_FOUND? Вам в этот пакет. Здесь они все перечислены и связаны с кодами ошибок (pragma exception init). В некоторых версиях СУБД можно увидеть в тексте спецификации пакета забавные комменты, которые уже “не вырубить топором”. Рекомендую заглянуть в него просто для расширения кругозора. #пакеты

    Telegram
  • Oracle Developer👨🏻‍💻

    Друзья, всем привет! Как и обещал, ниже пост нашего подписчика ⬇️😉
  • Oracle Developer👨🏻‍💻

    Друзья, всем привет! Я уже давно “закидывал удочку” на тему авторских постов в канале. Давайте еще раз озвучу мысль 💡 У нас тут абсолютно разные люди - по специализациям, по уровню знаний, по уникальному опыту. Этим можно было поделиться с другими коллегами. Я даю возможность любому желающему опубликовать свой пост, задачу\решение, вопрос с собеседования или что-то другое интересное для аудитории канала. Естественно, с указанием автора. Это отличная возможность, поделиться вашими знаниями, получить обратную связь, пообщаться с коллегами 💬 Конечно, есть определенные правила, налагаемые в основном, форматом Telegram. Посты должны быть краткими, отформатированными, отражающими суть. Как форматировать посты можно посмотреть на примере моих. Все это обсуждается в личке. В эту среду, я опубликую пост от нашего подписчика. Это будет первый пост подобного рода 👍 Хочу напомнить, что в этом канале нет места негативу, наоборот, приветствуется поддержка и конструктивные замечания. Всем хорошей недели!
  • Oracle Developer👨🏻‍💻

    Друзья, всем привет! Сегодняшний пост про внутреннюю жизнь канала. 1️⃣ Нативная реклама от Telegram Телеграм стал монетизировать свою аудиторию. Начали размещать объявления в каналах. Когда вы видите рекламный пост с пометкой sponsored (как на скрине выше), это вот оно. Я не могу повлиять на ее отображение. Прошу отнестись к этому с пониманием. Я иногда, размещаю рекламные посты с тегом #реклама. Деньги идут на продвижение канала, ибо для меня это не бесплатно. И да, расходы больше чем доходы. 2️⃣ Комментарии к постам К сожалению, не ко всем постам добавляются нативные комментарии. Если пост с голосованием или ссылками в виде кнопки, то плашка с комментами не отображается. Но! есть выход. Вы можете вступить в чат канала. И тогда у вас появится возможность комментировать любой пост в канале. Некоторое количество подписчиков уже там. Нужно жямкнуть свойства канала -> View discussion -> Join group Велком! Кстати, в понедельник, будет кое-что интересное 😉 Всем хороших выходных! 👯‍♀️
  • Oracle Developer👨🏻‍💻

    Разница между UNION и UNION ALL с точки зрения оптимизации Постановка задачи в посте вторника. Начнем с простого. Что это за операции? ▫️UNION - объединяет два множества, оставляет только уникальные значения. ▫️UNION ALL - объединяет два множества, значения не уникальны, т.е. могут быть повторы. Пока разница очевидна. Пример:
    select some_col1 from tab1
    union
    select some_col1 from tab2;
    
    
    Давайте подумаем, а в чем различие операций на уровне выполнения. За счет чего достигается уникальность отдаваемых значений в UNION? За счет дополнительного шага сортировки. И это прекрасно видно в плане запроса. После шага UNION-ALL выполняется SORT. Я всегда говорю, если вам сортировка не требуется, то не надо её делать. Избавляемся от лишних сортировок. ⚠️ Возьмите за правило, использовать по умолчанию операцию UNION ALL, которая не выполняет сортировку. Только, если по бизнес-процессу требуется уникальность значений используйте UNION. Помогите СУБД избавиться от лишней работы 😉 #оптимизация #union #unionall
  • Oracle Developer👨🏻‍💻

    Всем привет! Вполне вероятно, что, проходя собеседование на DBD или Backend-разработчика вы можете столкнуться с таким вопросом: “Какая разница между UNION и UNION ALL с точки зрения оптимизации?” Что ответите? Разбор задачи с планами запросов, как обычно, в четверг 🎓 Не переключайтесь 😉 — Интересно вам уже задавали на собесе этот вопрос? Голосовалка под постом 📊 #задача