Курс посвящен изучению современного функционала PLSQL и оптимизации кода.
В курсе изучаются:
Создание хранимых процедур и обработка исключений в них.
Создание функций и вызов их из SQL выражений.
Создание пакетов, предоставляемые ими возможности, а также некоторые стандартные пакеты Oracle.
Использование динамического SQL для расширения функциональности программ.
Различные виды триггеров и их применение.
Средства управления компилятором PLSQL, а также типы компиляции, встраивание кода, предупреждения компилятора, условная компиляция.
Различные виды коллекций и их эффективное использование.
Средства работы с LOB объектами, в том числе использование эффективного механизма хранения SecureFiles.
Использование внешних процедур, написанных на других языках, в PLSQL приложениях.
Автономные транзакции, массовое связывание и другие механизмы повышения эффективности и гибкости кода.
Использование кеша результатов для повышения производительности запросов и функций.
Средства анализа подпрограмм, последовательности их вызовов, времени выполнения, использования идентификаторов в PLSQL приложениях.
Пакет для извлечения метаданных объектов.
Механизм политик, позволяющий разграничивать доступ к таблице на уровне строк.
SQL внедрения и способы защиты от них.
Средства сокрытия кода, шифрования и маскирования данных.
Необходимая предварительная подготовка:
знания основ SQL и PLSQL, например, в объеме курса "Oracle Database SQL and PL/SQL Fundamentals".
Все материалы по курсу предоставляются на английском языке.
Преподаватель курса -
Самсонов Александр
Аудитория курса:
Разработчики, администраторы и специалисты по сопровождению систем, имеющие значительный опыт в использовании Oracle SQL и PL/SQL
Введение
Задачи курса. Описание сред разработки. Схемы, используемые в этом курсе.
Создание хранимых процедур
Создание, вызов и удаление процедур. Режимы параметров. Различные способы передачи параметров. Обработка исключений в процедурах.
Создание хранимых функций
Создание, выполнение и удаление функций. Использование хранимых функций в SQL. Ограничения на вызов функций из SQL.
Создание пакетов
Общедоступные и частные компоненты пакета. Создание спецификации и тела пакета. Вызов пакетных конструкций.
Работа с пакетами
Перегрузка пакетных подпрограмм в PLSQL. Использование предварительного объявления. Блок инициализации пакета. Контроль побочных эффектов в подпрограммах PLSQL. Устойчивое состояние пакетных переменных и курсоров.
Использование в разработке приложений пакетов, поставляемых Oracle
Пакеты dbms_output, utl_file и dbms_scheduler.
Динамический SQL
Этапы выполнения команды SQL. Использование команды execute immediate и пакета dbms_sql. Динамическое выполнение команд и блоков в PLSQL.
Создание триггеров
Различные виды триггеров. Создание триггеров. Последовательность срабатывания триггеров. Instead of триггеры. Управление триггерами.
Комбинированные триггеры, DDL-триггеры и триггеры, срабатывающие по системным событиям
Работа с комбинированными триггерами. Мутация и триггеры. Создание триггеров, срабатывающих на команды DDL. Создание триггеров, срабатывающих на системные события.
Использование компилятора PLSQL
Настройка компилятора PLSQL. Просмотр текущих значений параметров компилятора. Параметры, влияющие на компиляцию кода PLSQL. Категории предупреждений компилятора. Управление предупреждениями с помощью параметра plsql_warnings и программно. Встраивание подпрограмм. Использование директив условной компиляции.
Курсорные переменные и подтипы данных
Эффективное использование курсоров. Работа с курсорными переменными.Создание подтипов на основе имеющихся типов.
Коллекции
Использование ассоциативных массивов и вложенных таблиц. Создание хранимых вложенных таблиц и работа с ними. Операторы сравнения вложенных таблиц. Работа с массивами переменной длины (varrays). Методы коллекций. Исключения при работе с коллекциями. Эффективное использование коллекций. Связанные типы.
Работа с большими объектами
Типы LOB. Пакет dbms_lob. Создание BFILE и обращение к нему. Изменение CLOB и BLOB. Временные LOB объекты. Тип хранения securefile. Дедубликация, сжатие и шифрование LOB. Миграция в securefile с помощью пакета dbms_redefinition.
Работа с JSON объектами.
Преимущества JSON формата. SQL функции, создающие JSON объекты. Оператор IS JSON. Извлечение значений из JSON структур. Объектные типы для работы с JSON.
Вызов внешних программ из PLSQL.
Преимущества вызова внешних программ. Использование library. Примеры вызова из PLSQL процедур, написанных на C и Java.
Настройка производительности кода PLSQL
Стандартизация констант и исключений. Локальные подпрограммы. Использование автономных транзакций. Подсказки nocopy и parallel_enable. Эффективное использование типов данных и ограничений. Массовое связывание: предложения forall и bulk collect. Предложение save exceptions. Работа с разреженными коллекциями. Конструирование условных выражений. Использование динамического распараллеливания с пакетом dbms_parallel_execute.
Увеличение производительности за счет кеширования
Использование кеша результатов для запросов. Управление кешем результатов. Кеширование результатов PLSQL функций.
Анализ кода PLSQL и извлечение метаданных
Информация о коде из словаря данных. Стандартные отчеты. Механизм PLScope для наблюдения за идентификаторами. Подпрограммы пакета dbms_utility для отслеживания последовательности вызовов и ошибок. Извлечение метаданных схем с помощью пакета dbms_metadata. Фильтрация и преобразование метаданных.
Профилирование и трассировка кода PLSQL
Трассировка выполнения PL/SQL. Уровни трассировки. Пакет dbms_trace. Профилирование кода с помощью пакета dbms_hprof. Анализ полученных данных.
Безопасность в PLSQL.
Права создателя и права вызывающего пользователя. Выдача ролей для исполняемых объектов. Белые списки. Внедрение виртуальной частной базы данных при помощи создания политик безопасности с использованием контекста приложения. Пакет dbms_rls. Применение политики.
Защита кода от SQL-внедрений
Описание SQL внедрений. Уязвимый для SQL внедрений код. Использование пакета dbms_assert для обезвреживания внедрений.
Дополнительные механизмы безопасности.
Сокрытие кода с помощью утилиты wrap и пакета dbms_ddl. Шифрование данных таблиц. Маскирование информации. Пакет dbms_reduct.