Релиз Oracle 23c
Друзья всем привет!
Еще в сентябре прошлого года, компания Oracle анонсировала выход новой версии СУБД зимой 23 года.
Версия LTS (long term support), а значит она с нами на продолжительное время.
И вот, 03.04 состоялся релиз новой версии 23с Free - Developer Release.
В новой версии заявлено достаточно много интересных фич. Некоторые из них:
1️⃣ Select без from
А вот смогут/захотят на неё переходить компании в РФ, вопрос хороший, как раз для нашего лампового чатика.
В следующем посте расскажу, как эту версию развернуть в Docker 🐳 и потестить новые фичи 😉
#oracle23c
Oracle Developer
Друзья всем привет!
Еще в сентябре прошлого года, компания Oracle анонсировала выход новой версии СУБД зимой 23 года.
Версия LTS (long term support), а значит она с нами на продолжительное время.
И вот, 03.04 состоялся релиз новой версии 23с Free - Developer Release.
В новой версии заявлено достаточно много интересных фич. Некоторые из них:
1️⃣ Select без from
было: select 1+2 from dual;2️⃣ Использование алиасов в Group by и Having
стало: select 1+2;
select trunc(dtime, ‘dd’) day3️⃣ Тип boolean в SQL
from tab
group by day
create table client(И многие другие фишки, которые уже давно надо было добавить. Наконец-то, подумали о разработчиках 🥰
id number(38),
is_active boolean
);
insert into client values(1, true);
insert into client values(2, false);
А вот смогут/захотят на неё переходить компании в РФ, вопрос хороший, как раз для нашего лампового чатика.
В следующем посте расскажу, как эту версию развернуть в Docker 🐳 и потестить новые фичи 😉
#oracle23c
Oracle Developer
Установка Oracle 23c в Docker
Есть три варианта:
🔸 Docker-образ;
🔸 RPM-пакет для *nix;
🔸 Виртуалка для VirtualBox.
Мне нравится вариант с Docker.
1️⃣ Устанавливаем Docker в нашу ОС (если нет)
Win Mac Linux
2️⃣ Создаем контейнер с указанием параметров
имя контейнера - oracle23c, порт доступа - 1524, пароль для sys/system - booble34.
Если у вас еще нет скаченного image, то процесс займет некоторое время - нужно получить ~3Gb.
3️⃣ Устанавливаем Oracle client (если нет) и настраиваем network\admin\tnsnames.ora
Добавляете в файл алиас на новую БД.
Всё 🔥
Внутрь контейнера можно попасть через
А что по опциям в этом дистрибутиве?
Выполняем и смотрим:
Обсудить в чатике 💬
PS. Параметров создания БД гораздо больше, можно настроить очень гибко.
По умолчанию, удаленное подключение (не с сервера) к SYS + пароль не доступно (не важно как вы устанавливаете БД). Для настройки нужно выполнять доп. приседания.
#docker #oracle23c
Oracle Developer
Есть три варианта:
🔸 Docker-образ;
🔸 RPM-пакет для *nix;
🔸 Виртуалка для VirtualBox.
Мне нравится вариант с Docker.
1️⃣ Устанавливаем Docker в нашу ОС (если нет)
Win Mac Linux
2️⃣ Создаем контейнер с указанием параметров
docker run -d --name oracle23c -p 1524:1521 -e ORACLE_PWD=booble34 -e ORACLE_CHARACTERSET=UTF8 container-registry.oracle.com/database/free:latestвместо latest можно указать конкретную версию 23.2.0.0.
имя контейнера - oracle23c, порт доступа - 1524, пароль для sys/system - booble34.
Если у вас еще нет скаченного image, то процесс займет некоторое время - нужно получить ~3Gb.
3️⃣ Устанавливаем Oracle client (если нет) и настраиваем network\admin\tnsnames.ora
Добавляете в файл алиас на новую БД.
oradb23c =FREEPDB1 - БД, созданная по умолчанию.
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1524))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FREEPDB1)
)
)
Всё 🔥
Внутрь контейнера можно попасть через
docker exec -it oracle23c /bin/bashК БД можно подключиться
sqlplus system/booble34@oradb23cДля Mac/*nix почти тоже самое.
А что по опциям в этом дистрибутиве?
Выполняем и смотрим:
select * from v$option;Много чего есть. Например: секционирование.
Обсудить в чатике 💬
PS. Параметров создания БД гораздо больше, можно настроить очень гибко.
По умолчанию, удаленное подключение (не с сервера) к SYS + пароль не доступно (не важно как вы устанавливаете БД). Для настройки нужно выполнять доп. приседания.
#docker #oracle23c
Oracle Developer
Использование алиасов в Group by и Having
Друзья, всем привет!
В Oracle23c, наконец-то, сделали возможность использование алиаса в group by и having.
Это бывает полезно, когда выражение, по которому происходит группировка и фильтрация групп размашистое.
Иногда на собесах спрашивают: можно ли использовать алиасы в group by?
Теперь правильный ответ: зависит от версии, до 23 - нельзя, после - можно.
А можно ли обратиться по позиции?
Да можно, но только в group by и с включением этой возможности в сесиии.
#oracle23c
Oracle Developer
Друзья, всем привет!
В Oracle23c, наконец-то, сделали возможность использование алиаса в group by и having.
Это бывает полезно, когда выражение, по которому происходит группировка и фильтрация групп размашистое.
-- до 23cКрасота 🔥
select extract(year from t.hire_date) year, count(*)
from employees t
group by extract(year from t.hire_date)
having extract(year from t.hire_date) >= 2014;
-- 23с
select extract(year from t.hire_date) year, count(*)
from employees t
group by year
having year >= 2014;
Иногда на собесах спрашивают: можно ли использовать алиасы в group by?
Теперь правильный ответ: зависит от версии, до 23 - нельзя, после - можно.
А можно ли обратиться по позиции?
Да можно, но только в group by и с включением этой возможности в сесиии.
alter session set group_by_position_enabled = true;Обсудить в чатике 💬
select extract(year from t.hire_date) year, count(*)
from employees t
group by 1
having year >= 2014;
#oracle23c
Oracle Developer
Условие if exists в create/drop
Друзья, всем привет!
Продолжаем про фишки Oracle23c. В синтаксис создания и удаления, добавили условие if [not] exists. На скринах примеры выполнения.
До 23с повторные вызовы команд create/delete вызывали ошибку. Сейчас мы её можем заглушить. Конечно, нужно использовать её с осторожностью. Вполне вероятно, что вы как раз хотите получить ошибку при выполнении DDL. Однако, найдутся кейсы, где это будет очень полезно.
Обсудить в чатике 💬
#oracle23c
Oracle Developer
Друзья, всем привет!
Продолжаем про фишки Oracle23c. В синтаксис создания и удаления, добавили условие if [not] exists. На скринах примеры выполнения.
До 23с повторные вызовы команд create/delete вызывали ошибку. Сейчас мы её можем заглушить. Конечно, нужно использовать её с осторожностью. Вполне вероятно, что вы как раз хотите получить ошибку при выполнении DDL. Однако, найдутся кейсы, где это будет очень полезно.
-- До 23cК слову сказать, в PostgreSQL эти опции доступны с версии 8.2 (2006й год) 😉
create table my_tab(
id number(38)
);
drop table my_tab;
-- 23c
create table if not exists my_tab(
id number(38)
);
drop table if exists my_tab;
Обсудить в чатике 💬
#oracle23c
Oracle Developer
Устранение рудимента - таблички DUAL
Друзья, всем привет!
Продолжаем про фишки Oracle23c. Наконец-то, можно не использовать табличку DUAL для получения результата.
К слову сказать, во многих СУБД так было изначально 😉
Обсудить в чатике 💬
#oracle23c
Oracle Developer
Друзья, всем привет!
Продолжаем про фишки Oracle23c. Наконец-то, можно не использовать табличку DUAL для получения результата.
-- До 23cЕстественно, обратная совместимость сохранена. Старый код будет работать.
select 1 from dual;
declare
v_var number;
begin
select 1 into v_var from dual;
dbms_output.put_line(v_var);
end;
/
-- 23c
select 1;
declare
v_var number;
begin
select 1 into v_var;
dbms_output.put_line(v_var);
end;
/
К слову сказать, во многих СУБД так было изначально 😉
Обсудить в чатике 💬
#oracle23c
Oracle Developer
🌐 Навигация по темам канала Oracle Developer
📘 Основы
#sql #plsql #теория #архитектура
#функции #секционирование #временныетаблицы
#транзакции #исключения #курсоры
#аналитическиефункции #иерархическиезапросы
#системныепредставления #компиляция #представления #коллекции #циклы
🛠 Практика и задачи
#задача #решениезадачи #asktom
🚀 Оптимизация и производительность
#оптимизация #nestedloops #индекс
🧩 Инструменты и технологии
#тестирование #postgresql #oracle #docker #oracle23c #ide #ai
💼 Карьера и Развитие
#карьера #собеседование #hr #тинькофф #magnit #вкусноиточка #leroymerlin #сбер #яндекс #Эффективность #КарьерныйРост #Denis_Kivillev #Работа
🎓 Дополнительные материалы
#видео #подкаст #аудиоподкаст #конкурс #марафон #юмор
—
В почти 700 (!) постах не мудрено заплутать. Поэтому решил сделать подобие навигации 😉
Не забывайте пользоваться обычным поиском, я не добавил сюда низкочастотные хештеги.
Канал Oracle Developer | Чатик💬
📘 Основы
#sql #plsql #теория #архитектура
#функции #секционирование #временныетаблицы
#транзакции #исключения #курсоры
#аналитическиефункции #иерархическиезапросы
#системныепредставления #компиляция #представления #коллекции #циклы
🛠 Практика и задачи
#задача #решениезадачи #asktom
🚀 Оптимизация и производительность
#оптимизация #nestedloops #индекс
🧩 Инструменты и технологии
#тестирование #postgresql #oracle #docker #oracle23c #ide #ai
💼 Карьера и Развитие
#карьера #собеседование #hr #тинькофф #magnit #вкусноиточка #leroymerlin #сбер #яндекс #Эффективность #КарьерныйРост #Denis_Kivillev #Работа
🎓 Дополнительные материалы
#видео #подкаст #аудиоподкаст #конкурс #марафон #юмор
—
В почти 700 (!) постах не мудрено заплутать. Поэтому решил сделать подобие навигации 😉
Не забывайте пользоваться обычным поиском, я не добавил сюда низкочастотные хештеги.
Канал Oracle Developer | Чатик💬