Продолжительность
5 дней/40 академических часов
Введение
Задачи курса. Описание сред разработки. Схемы, используемые в этом курсе.
Создание хранимых процедур
Создание, вызов и удаление процедур. Режимы параметров. Различные способы передачи параметров. Обработка исключений в процедурах.
Создание хранимых функций
Создание, выполнение и удаление функций. Использование хранимых функций в 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.
Продолжительность
3 дня/24 академических часов
1. Извлечение данных при помощи команды SELECT.
Список возможностей команды SELECT. Использование арифметических операторов и неопределенных значений в команде SELECT. Псевдонимы столбцов. Использование оператора конкатенации, строк-литералов и предложения DISTINCT.
2. Ограничение и сортировка данных.
Использование предложения WHERE для выборки необходимых строк. Использование операторов сравнения и логических операторов в предложении WHERE.
3. Однострочные функции
. Функции символьные, числовые, по работе с датами, преобразования типов, общего вида. CASE и DECODE.
4. Агрегация данных при помощи групповых функций.
Использование групповых функций в команде SELECT. Создание групп данных при помощи GROUP BY. Исключение групп данных при помощи HAVING.
5. Соединение таблиц.
Синтаксис соединения. Типы соединений. Естественное соединение. Соединение таблицы с собой. Соединения с условиями, отличными от равенства. Внешние соединения.
6. Подзапросы.
Виды проблем, решаемые при помощи подзапросов. Однострочные, многострочные, коррелированные подзапросы. Предложение WITH.
7. Операторы работы над множествами.
Операторы UNION и UNION ALL. Оператор INTERSECT. Оператор MINUS. Сопоставление результатов SELECT.
8. Язык изменения данных (DML)
Описание команд DML: INSERT, UPDATE, DELETE. Транзакции.
9. Язык определения данных (DDL)
Описание команд DDL: CREATE, ALTER, DROP. Ограничения, их типы. Синтаксис.