Аудитория: Профессиональные разработчики PL/SQL запросов и модулей, которые будут использовать новые возможности сервера базы данных 19с
Необходимая подготовка: знание PL/SQL, основы настройки и функционирования сервера базы данных в объеме моего курса «Профессиональный SQL и PL/SQL». Стандартные курсы Oracle SQL и PL/SQL, основы Java, основы оптимизации SQL запросов, работа с планами выполнения SQL запросов.
Цель: по окончанию курса слушатели смогут использовать новые возможности сервера базы данных Oracle 19c в своих разработках, а так же инициировать DBA на изменение архитектуры сервера для повышения его эффективности.
Задачи: показать новые архитектурные особенности сервера Oracle 19с, его новый функционал для разработчика SQL запросов и PL/SQL модулей.
1. Архитектура сервера с точки зрения разработчика запросов.
· Несколько баз данных в одном контейнере, которые используют общие ресурсы сервера.
· Корневая и подключаемая база данных. Принципы взаимодействия.
· Пример создания и подключения базы данных к общему контейнеру. Клонирование базы данных для проведения тестов разработчика.
· Триггеры или команды для автоматического запуска подключаемых баз данных
· Архитектура используемой памяти сервером. Новые разделы памяти. InMemory область для работы с таблицами в памяти. Сравнение с областью ResultCache.
· Глобальные и локальные пользователи. «Перемещение» сессий пользователя между схемами в подключаемых базах данных.
2. Порядок выполнения SQL запросов
· Построение плана запроса. Адаптивные планы и адаптивные статистики. Изменение плана выполнения запроса в процессе его выполнения. Параметры базы данных, воздействующие на адаптивные планы и адаптивные статистики.
· Result Cache и таблицы InMemory - сравнение. Индексы и InMemory таблицы - когда что использовать. Особенности подготовки сервера для работы с таблицами в памяти. Сравнение доступа к таблицам InMemory и к таблицам, запросы к которым используют индексы.
· Особенности 19с при работе с индексами. Несколько индексов для одной колонки. Невидимые индексы. Подсказки оптимизатору для работы с невидимыми индексами.
3. Новые особенности 12с при построении таблиц.
· Расширение типа данных varchar2 до 32к.
· Невидимые колонки. Виртуальные колонки. Идентификационные колонки. Использование детерминированных функций в виртуальных колонках.
· Автоматическое управление индексами
· Версии функций и вычисляемые колонки таблиц на практических примерах. Подготовка сервера базы данных для работы с вычисляемыми колонками.
· Сокрытие информации в колонках от непривилегированных пользователей. Пакет dbms_redact на практических примерах. Определение и перераспределение политик доступа к информации в колонках таблиц.
· ILM и ADO механизмы сервера для управления жизненным циклом данных. Механизмы для архивации.
· Перевод таблицы в режим архивации строк. Управление сессией пользовательского процесса для отображения или сокрытия архивированных строк. ILM-ADO механизмы для управления партициями таблиц - обзор.
· Партиционные, интервально - ссылочные таблицы, создание и управление. Локальные индексы для партиций, включение и отключение части локального партиционного индекса. Каскадное удаление данных в ссылочных партиционных таблицах. Упраление партиционными сегментами.
4. Выполнение SQL запросов.
· Боковые запросы и транзитивная передача параметров в подзапросы. Передача параметров в PipeLined процедуры в подзапросах. OuterJoin и передача параметров.
· Ограничение количества возвращаемых строк из запросов - Fetch size, SizeOf, Sample и другие возможности в управлении количеством обрабатываемых строк.
· PL/SQL функции и процедуры в SQL запросах. Сравнение вызовов с использованием java клиента. Различия между встроенными функциями и InLine функциями в SQL запросах.
· Динамический SQL и возвращение результатов из хранимых процедур и функций - пример java клиента
· Назначение полномочий на использование таблиц через роли для PL/SQL модулей. Представления и PL/SQL модули с правами вызывающего.
· JSON в базе данных. Функции для извлечения информации из JSON документов. Ограничения на CLOB поля в таблицах для проверки целостности хранения JSON данных. Преобразование JSON данных к реляционным аналогам и обратно.