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

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

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

  • Oracle Developer👨🏻‍💻

    К серверу подключились. Что дальше? Сервер БД (кластер) может содержать несколько БД. Близкая аналогия с Oracle - это набор PDB. По умолчанию создается БД postgres, а также шаблонная БД (template1). Можем создать БД владельцем, которой будет пользователь postgres. Мы пойдем другим путем. Создадим владельца будущей базы. А потом уже БД с указанием владельца. 1️⃣ Создаем пользователя:
    create role mydb_owner login password 'mypass';
    
    или
    create user mydb_owner password 'mypass';
    
    
    А причем тут роль? Да, в мире PG роль может быть как пользователем, так и ролью. Юзер/роль создается общая на весь кластер. 2️⃣ Создаем отдельную БД
    create database mydb owner mydb_owner;
    
    
    БД создали. Где будем хранить объекты? В схеме. В Oracle при создании пользователя, автоматически создается схема. В Pg это нужно делать отдельно. По умолчанию создается схема public. 3️⃣ Создаем схему
    create schema my_schema;
    
    
    Не обязательно использовать psql, достаточно использовать IDE 😇 Завтра продолжим 😉 #postgresql Oracle Developer
  • Oracle Developer👨🏻‍💻

    Земля вызывает базу Ок. СУБД поставили, что дальше? Надо бы как то начать управлять этим богатством. Какие есть варианты? 1️⃣ Командная утилита psql Аналог sqlplus в мире Oracle. Доступна в установленном контейнере. Подключиться можно командой:
    docker exec -it mypgdb14 psql -U postgres
    
    
    docker exec -it mypgdb14 - эта часть относится к docker psql -U postgres - эта к утилите psql. -U к какому юзеру подключаемся. 2️⃣ IDE с человеческим интерфейсом Их достаточное количество на любой вкус и цвет. DBeaver, DataGrip, PgAdmin4 и другие. На скрине показано окно настроек подключения в DBeaver. ▫️Server: localhost ▫️Dbname: postgres ▫️Port: 5434 (указывали при создании) ▫️User: postgres ▫️Pass: mypass (указывали при создании) Ввели креды, протестировали. Все должно быть ок ✅ Завтра продолжим 😉 #postgresql #ide Oracle Developer
  • Oracle Developer👨🏻‍💻

    Инструкция создания БД PostgreSQL в Docker Создание БД в Docker - отличный способ быстро приступить к экспериментам. Процесс элементарный. 1️⃣ Устанавливаем Docker на вашу ОС Win Mac Linux 2️⃣ Запускаем контейнер с 14-й версией
    docker run -p 5434:5432 --name mypgdb14 -e POSTGRES_PASSWORD=mypass -d postgres:14
    
    mypgdb14 - название pg-кластера
    mypass - пароль
    5434:5432 - проброс стандартного порта на 5434
    postgres:14 - версия Pg
    
    
    Если у вас еще нет образа (image) c postgres:14, то он будет скачан. Время запуска зависит от вашей скорости интернета. Последующие создания контейнеров будут занимать пару секунд. 3️⃣ Проверяем, что контейнер запущен
    docker ps
    
    
    4️⃣ Подключаемся к консоли
    docker exec -it mypgdb14 psql -U postgres
    
    
    Всё, теперь можно эксплуатировать контейнер в хвост и гриву. ⚠️ СУБД поднимается в самой минимальной конфигурации. Продолжение завтра 😉 #docker #postgresql Oracle Developer
  • Реклама

  • Oracle Developer👨🏻‍💻

    Возможности СУБД PostgreSQL это мощная объектно-реляционная СУБД, которая предлагает широкий спектр функциональности, включая: 1️⃣ Поддержка ACID (Atomicity, Consistency, Isolation, Durability) транзакций для обеспечения целостности данных. 2️⃣ Поддержка хранения и управления данными в различных форматах, таких как JSON, XML и др. 3️⃣ Расширенные возможности аналитики и агрегации, включая поддержку оконных функций, группирования и анализа данных. 4️⃣ Репликация и высокая доступность, включая поддержку резервного копирования, асинхронной репликации и репликации с нескольких источников. 5️⃣ Механизмы управления безопасностью, включая поддержку ролей, прав доступа и контроля доступа к данным. 6️⃣ Расширенные возможности индексирования и оптимизации запросов, включая поддержку различных типов индексов, таких как B-Tree, Hash, GIN и др. 7️⃣ Поддержку языков программирования и расширений, таких как PL/pgSQL, PL/Tcl, PL/Perl и др. 8️⃣ Открытый исходный код и активную комьюнити, которая разрабатывает и улучшает функциональность. 9️⃣ Огромные возможности для расширения функциональности с помощью сторонних модулей и плагинов. 🔟 Производительность, надежность и масштабируемость, которые делают ее подходящей для решения широкого спектра задач в небольших и крупных организациях. Конечно, в любом ПО есть свои плюсы и минусы. —- Завтра я расскажу, как можно развернуть PG локально в пару команд 😉 #postgresql Oracle Developer
  • Oracle Developer👨🏻‍💻

    Немного истории PostgreSQL был создан в 1986 году в Университете Массачусетса в Бостоне. Он вырос из проекта POSTGRES, который затем был переименован в СУБД PostgreSQL. В начале 1990-х годов PostgreSQL стал открытым исходным программным обеспечением. С тех пор PostgreSQL набрала значительную популярность среди СУБД. Достаточно взглянуть на тренды. Одним из главных контрибьютеров открытого комьюнити был и есть Олег Бартунов 🇷🇺. Олег часто участвует в конференциях, на Youtube есть множество докладов. В 2015 году он и его коллеги стали развивать платную версию - Postgres Pro (Professional), которая имеет дополнительные фишки (автономные транзакции, секционирование из коробки и др), а также тех поддержку. Да, эта та самая СУБД в реестре отечественного ПО. Их же компания пишет отличную документацию на русском и создает обучающие курсы. Фишки из платных версий Pg постепенно перетекают в бесплатную версию. продолжение ⬇️ #postgresql Oracle Developer
  • Oracle Developer👨🏻‍💻

    Друзья всем привет! Объявляю эту неделю - неделей знакомства с PostgreSQL. Одной из главных альтернатив Oracle на международном и российском рынке, в частности. Ведь PostgreSQL версии Pro прошла сертификацию ФСТЭК и внесена в реестр отечественного ПО. Рано или поздно вы столкнетесь с этой СУБД, если еще не. продолжение ⬇️
  • Oracle Developer👨🏻‍💻

    Краткая инструкция (для Windows): 1️⃣ Устанавливаете Docker в вашу ОС. docs.docker.com/desktop…-install 2️⃣ Скачиваете image с нужной версией Oracle. Версию выбираете на страничке проекта. Выполняете в командной строке:
    docker pull gvenzl/oracle-xe:21.3.0
    
    
    Скорость скачивания зависит от вашего интернета. 3️⃣ Создаете контейнер из image с указанием параметров Например:
    docker run --name oradb21xe -d -p 1523:1521 -e ORACLE_PASSWORD=booble34 gvenzl/oracle-xe:21.3.0
    
    
    имя контейнера oradb21xe, порт доступа - 1523, пароль для sys/system - booble34 Контейнер создастся практически мгновенно. 4️⃣ Скачиваете Oracle client и настраиваете network\admin\tnsnames.ora Добавляете в него алиас на новую БД.
    oradb21xe =
      (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1523))
      )
      (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = xepdb1)
      )
      )
    
    
    Всё 🔥 Внутрь контейнера можно попасть через
    docker exec -it oradb21xe /bin/bash
    
    
    К БД можно подключиться
    sqlplus system/booble34@oradb21xe 
    
    
    Для Mac/*nix почти тоже самое. PS. Параметров создания БД гораздо больше, можно настроить очень гибко. По умолчанию, удаленное подключение (не с сервера) к SYS + пароль не доступно (не важно как вы устанавливаете БД). Для настройки нужно выполнять доп. приседания. Обсудить в чатике 💬 #docker #oraclexe Oracle Developer
  • Oracle Developer👨🏻‍💻

    Инструкция создания Oracle XE в Docker Друзья всем привет! Установка Oracle на ваш ПК (не сервер) с дистрибутива это уже совсем позавчерашний день. Современная парадигма - контейнеризация. Docker - один из представителей. Можно развернуть что угодно в контейнере, не затрагивая вашу главную ОС. Я уже делал видосы по установке Oracle в Docker (раз, два, три). К сожалению, для тех кто с РФ эти способы немного устарели. Предлагаю красивую альтернативу. Развертывание происходит гораздо быстрей и нет проблем со скачиванием дистрибутива с официального сайта. Готовые собранные контейнеры - https://hub.docker.com/r/gvenzl/oracle-xe Они же используются для тестирования с использованием testcontainers (джавистам на заметку). Доступны - 11, 18, 21 версии. Начиная с 18й версии редакция XE обладает всеми опциями, что и Enterprise Edition (EE). Так что её хватит сполна. Продолжение ⬇️
  • Oracle Developer👨🏻‍💻

    Видео с вебинара Друзья всем привет! Ну что? как вам в 2023м? 😁 К сожалению, в конце прошлого года я приболел и не успел выложить видео с вебинара “Пишем свой framework для Unit-тестирования на PL/SQL”. Выполняю обещание. Вебинар вместо одного часа получился аж на два. 🔸30 минут ушло на теорию тестирования и примеры; 🔸1 час на написание простенького фреймворка для тестирования; 🔸остальное на различные вопросы-ответы, в том числе про сертификацию и курс PL/SQL. В видео есть тайминги, поэтому будет проще ориентироваться. Спасибо кто оставил обратную связь 👍 подкинули некоторые темы на будущие вебинары. Пользуясь случаем, скажу, что осталось 1️⃣ место на поток по Oracle PL/SQL, который стартанет 12.01. Если хотите попасть - пишите мне в личку. Всем приятного просмотра 🎥 #webinar #видео #utplsql #тестирование Oracle Developer
    Вебинар 26.12.2022. Пишем свой фреймворк Unit-тестирования на Oracle PL/SQL

    Вебинар проходил 26.12.2022. Цель: рассказать про концепцию Unit-тестирования, показать на простых примерах и написать свой примитивный фреймворк для Unit-тестирования. Так же немного поговорили про utPL/SQL и курс Oracle PL/SQL Основы. Рекомендую выставить скорость воспроизведения в 1.25 =) Содержание: 0:00 - Введение 2:40 - Теория тестирования 11:40 - Принципы создания Unit-тестов 18:28 - Пример создания двух unit-тестов 25:05 - Доменная модель примера 29:38 - Пишем тесты. Как обычно делает разработчик 50:05 - Пишем тесты. Выносим все общее в отдельный пакет 1:03:00 - Пишем тесты. Выносим тесты в пакеты 1:09:00 - Пишем тесты. Автоматизируем запуск тестов 1:24:40 - Использование utPL/SQL 1:29:42 - Вопросы-ответы по демо 1:32:06 - Заключение 1:34:28 - Вопросы-ответы на разные темы ------- Периодически проходит обучение основам PL/SQL, секционированию и оптимизации. Если интересно велком в личку, координаты ниже. ------- Телеграм-канал: https://t.me/oracle_dbdВсе о разработке в СУБД "Oracle". Теория, практика, SQL, PL/SQL, задачки, сертификация и многое другое. Если вам нужны консультации, есть вопросы, хотите пройти обучение, то пишите в телеграм - https://t.me/denis_dbd

    YouTube
  • Oracle Developer👨🏻‍💻

    Друзья всем привет! Это уже третий новый год, с которым я поздравляю вас в нашем канале 🥳 Что сказать про уходящий 22й? Вы и без меня все знаете… Лично мои планы на обучающие программы были полностью нарушены. Новых видео на канале практически не было. Предыдущие года были более продуктивными с точки зрения контента. Как-то не располагала обстановка к творчеству 🤦🏻‍♂️ Конечно, хочется, чтобы 2023 был другим. Более позитивным и эффективным. Моя главная задача на следующий год - добить курс по Основам оптимизации SQL. Половина уже написана, половина осталась. Надеюсь сделаю, если опять не случится какая-нибудь непредвиденная дичь. Плюс, пилить контент для вас, мои дорогие 😁 Спасибо, что остаетесь на канале 🤝 От себя хочу пожелать - здоровья, счастья и успехов во всех делах, развиваться, быть здоровой клеткой. Берегите себя и своих близких. Мирного неба над головой 🕊 С наступающим 2️⃣0️⃣2️⃣3️⃣ годом! 🎄 Создатель канала Oracle Developer, Кивилёв Денис
  • Oracle Developer👨🏻‍💻

    Друзья, всем привет! На прошлой недели, для канала, проходил собес в одну из компаний. Позже расскажу - что куда и как😉 Помимо всех прочих вопросов про оптимизацию, секционирование, кэширование и архитектуру построения приложений были вопросы про коллекции и курсоры. 💬 Интервьювер: какой best-practice по применению курсоров? Какие виды коллекций и кейсы применения? Как передавать данные между разными модулями и слоями приложения? Что вы ответите? Если в голове возникает сумбурная картинка, то не удивляйтесь, что собеседование вы можете не пройти ❌ Однако, это "база". Эти темы мы проходим в курсе основы PL/SQL, разбираем множество примеров с коллекциями и курсорами, применяем их на практике. У кого до сих пор в голове путница, я рекомендую посетить 3х месячный курс по PL/SQL. Даже те ребята, которые программируют не первый год, находят для себя много нового 😉 Помимо синтаксиса мы еще затрагиваем темы: 🔹 чистый код, именования, форматирование; 🔹best-практисы в компаниях; 🔹архитектуру приложений и многие другие. С 12.01 по 31.03 пройдет очередной поток. Места еще есть, но их немного. Продажи закроются 23:59 31.12. В любые времена вложения в свое здоровье и образование было отличной идеей 👌 Время тикает, не упустите шанс 😉🔥 PS. Кстати, если будет желание при отличной успеваемости смогу рекомендовать вас HR из Qiwi, кто знает, вдруг вы станете частью Qiwi-семьи 😉 Ссылки 🔸 Промо-страница курса 🔸 Оплатить участие в курсе 🔸 Оплатить участие в курсе (в рассрочку) 🔸 Три урока бесплатно 🔸 Плей-лист с демо-уроками
  • Oracle Developer👨🏻‍💻

    Standard SQL Functions Cheat Sheet Друзья, всем привет! Случайно попалась шпаргалка по SQL. На мой взгляд, довольно концентрированная информация с графическими иллюстрациями. Для junior, middle, вполне себе, отличное подспорье. Шпаргалочка не совсем прям 100% про Oracle. С ходу нашел некоторые отличия. 🔹 тип Date не хранит время (в Oracle хранит); 🔹 наличие - Named Window Definition (в Oracle отсутствует). 🔹 возможно, что-то еще. Можем устроить мини-соревнование в чатике - "кто найдет больше всего несоответствий между SQL и Oracle SQL" 😁 Сохраняйте, отправляйте коллегам 😉 Oracle Developer
  • Oracle Developer👨🏻‍💻

    Ribbon vs Classic Menu в PL/SQL Developer Друзья всем привет! Иногда замечаю у коллег, студентов огромное меню панели инструментов в PL/SQL Developer’e. Ввели его с 10й что ли версии. На мой взгляд, занимает пол экрана. Полезная площадь бесполезно расходуется 😱 Переключиться на классическое компактное меню можно в настройках. Configure -> Preferences -> Appearance -> мотаем до конца окна и выбираем Switch to Menu. 💡 Больше места - больше пространства для кода - удобней работать. #ide Oracle Developer
  • Oracle Developer👨🏻‍💻

    Коллеги, всем спасибо за участие! Получилось долго, но надеюсь продуктивно 😉 Запись вебинара залью к среде. Пожалуйста, дайте обратную связь, мне это важно 🤝 Материалы 🔹 презентация по Unit-тестам 🔹 код с объектам и примером юнит-тестов 🔸 промо-страница курса Oracle PL/SQL 🔸 отзывы студентов об обучении 🔸 написать мне в личку
  • Oracle Developer👨🏻‍💻

    Пишем свой framework для Unit-тестирования на PL/SQL Друзья всем привет! В прошлую среду анонсировал встречу или, как модно говорить, вебинар на тему “Пишем свой framework для Unit-тестирования на PL/SQL”. Исходя из количества лайков, понимаю, что тема интересна. Что обсудим? - что такое тестирование; - что такое unit-тестирование; - пример написания теста в общем; - напишем свой простенький фреймворк для Unit-тестирования с нуля; - чуть затронем фреймворк utPL/SQL; - отвечу на вопросы, в том числе по курсу Основы PL/SQL. Продолжительность: 1-1.5 часа как пойдет. Начало вебинара: 19:30 МСК сегодня. Подключиться можно будет по зум. Данные для подключения: qiwi.zoom.us/j/99405…05211225 Идентификатор конференции: 994 0521 1225 Код доступа: 724031 Будет ли запись? Будет. До встречи ✌🏻 #webinar Oracle Developer
  • Реклама

  • Oracle Developer👨🏻‍💻

    Сегодня пятница и немного баянного юмора не помешает😉 Всем хороших выходных 🎊 Перетереть в чатике 💬 #юмор Oracle Developer
  • Oracle Developer👨🏻‍💻

    Code-review процедуры "Перевод платежа в ошибку". Анализ Задача: см пост вторника Анализ С первого взгляда, код вполне себе невинен. Отрабатываются основные ситуации: 1️⃣ статус платежа не подходящий для изменений (if v_status != c_active then). 2️⃣ когда платежа нет (when no_data_found then); Однако в обработке каждой ситуации заложена архитектурная ошибка 🤷‍♂️ 1️⃣ Проверка статуса БД, в принципе, многосессионная среда. Это API для работы с отдельной сущностью. Подобные обертки в основном реализуются не в DWH, в котором работа с данными выполняется в чуть более свободном режиме. Соответственно, могут возникать ситуации, когда с одной и той же сущностью работают более чем 1 сессия. Могут возникать race condition. Если совсем на пальцах: между тем, когда мы считали статус платежа (select status) и тем, когда мы совершаем update payment, статус мог измениться. В многосессионной среде так и будет. Разруливаются подобные проблемы - блокировками. Первый вариант: добавить for update с опциями, которые соответствуют бизнес-задаче.
    select status …  for update с опциями;
    
    
    Второй вариант: проверять в update статус. Если строка заблокирована, то выполнение повиснет до освобождения блокировки. 2️⃣ Обработка отсутствия платежа. В текущей реализации - это бомба замедленного действия. Как правильно заметили в комментариях, рано или поздно будет добавлен еще один select и общий NO_DATA_FOUND на весь блок будет отрабатывать не только отсутствие платежа, но и другие запросы. Как надо бы сделать - обернуть select, возбудить в нем пользовательское исключение и уже в общем блоке его обработать.
    begin
      select …
    exception
       when no_data_found then
          raise e_payment_not_found;
    end;
    
    
    Итог: код не прошел code review. — Продолжая тему: лучше выделить функционал в отдельную процедуру типа try_lock_payment, в которой блокировать платеж, проверять его state и наличие. Т.к. api-процедур по работе с платежом более чем одна. Подобный код пишут студенты на курсе Основы PL/SQL, в котором мы разбираем не только синтаксис и объекты, но и архитектурные принципы построения API. Старт - 12.01. Записывайтесь, пока еще, есть несколько мест 🔥 #решениезадачи #блокировки #исключения Oracle Developer
  • Oracle Developer👨🏻‍💻

    Пишем свой framework для Unit-тестирования на PL/SQL Друзья всем привет! Традиционно хотел вас порадовать перед новым годом. Думал думал и родилась идея 💡 А что если взять прямо в онлайн в зум-конфе при вас написать небольшой фреймворк для организации Unit-тестирования? С нуля с объяснениями? Заодно про принципы написания Unit-тестов рассказать? Займет наша кодинг-сессия около часа. Была бы интересная такая часовая туса в следующий понедельник (26.12) в 19:30(МСК)? Если пост насобирает хотя бы 1️⃣0️⃣0️⃣ 👍 - проведу. Обсудить в чатике. Кстати, примерно тоже самое делают студенты у меня на курсе по PL/SQL. Кто еще думает - идти или нет. 100% идти 😁 —— UPD: Пост набрал 100 👍 - встрече быть 😉 Ссылку на Zoom скину в понедельник. Oracle Developer