По окончанию курса Вы сможете:
Использовать внешние процедуры, содержащиеся в DLL, и интегрировать в приложение PL/SQL.
Вызывать методы из классов Java, загруженных в БД и работающих с данными через интерфейс JDBC.
Использовать динамический SQL (dynamic SQL) для расширения функциональности программ и повышения их гибкости, как и встроенные в язык конструкции (native dynamic SQL), так и процедуры пакета DBMS_SQL.
Определять уязвимости программ и принимать контрмеры, препятствующее атакам типа SQL injection.
Включать коллекции и другие продвинутые типы переменных в логику приложения для повышения эффективность и скорости выполнения. Работать с большими объектами (LOB - Large OBject) (в том числе обработка данных отдельными фрагментами и динамическое изменение параметров механизма хранения SecureFiles).
Расширение функциональных возможностей приложений баз данных при помощи поставляемых вместе с системой пакетов (system supplied packages), которые дают возможность прикладному программисту задействовать возможности внутренних механизмов и подсистем Oracle, внешние почтовые службы и т.д.
Получать информацию, необходимую для настройки производительности, при помощи пакета DBMS_PROFILER и для отладки приложения с помощью пакета DBMS_TRACE.
Писать эффективный код PL/SQL и избегать распространённых ошибок кодирования.
Переключать режим компиляции PL/SQL между компиляцией в код процессора (native mode) и режимом компиляции в промежуточный код (interpreted mode).
Контролировать и управлять процессом компиляции для достижения высокой производительности подпрограмм PL/SQL.
Анализировать структуру кода PL/SQL с помощью PL/Scope.
Анализировать производительность приложения PL/SQL и находить узкие места (bottleneck) при помощи иерархического профилировщика (PL/SQL Hierarchical Profiler).
Реализовывать тонко настраиваемые (fine-grained) механизмы безопасности в составе продвинутой модели безопасности, используя контексты приложений (application context) и виртуальные частные базы данных Oracle (VPD-virtual private database).
Применять динамическое разделение на секции (dynamic partitioning) и распараллеливание DML, используя пакет DBMS_PARALLEL_EXECUTE.
Использовать утилиту wrap для маскирования (obfuscation) алгоритмов и деталей реализации программных единиц от пользователей, имеющих доступ к исходному коду.
Аудитория курса:
Разработчики, администраторы и специалисты по сопровождению систем, имеющие значительный опыт в использовании Oracle SQL и PL/SQL
1. Введение
Задачи курса. Описание сред разработки. Таблицы, данные и инструменты, используемые в этом курсе.
2. Дизайн кода PL/SQL
Создание подтипов на основе имеющихся типов. Использование разных подходов при дизайне курсоров. Использование курсорных переменных.
3. Динамический SQL в PL/SQL
Native Dynamic SQL и пакет DBMS_SQL.
4. Обзор коллекций
Обзор коллекций. Использование ассоциативных массивов. Использование вложенных таблиц. Использование массивов переменной длины. Методы работы с коллекциями.
5. Использование коллекций
Написание PL/SQL программ, использующих коллекции. Эффективное использование коллекций. Сравнение вложенных таблиц и массивов переменной длины.
6. Манипулирование большими объектами
Работа с LOB. Пакет DBMS_LOB.
7. Использование SecureFile формата для LOB объектов.
Возможности SecureFile формата. Миграция в SecureFile с помощью пакета DBMS_REDEFINITION.
8. Вызов внешних программ из PL/SQL.
Преимущества вызова внешних процедур. Вызов из PL/SQL процедур, написанных на языке C. Вызов процедур, написанных на языке Java.
9. Настройка производительности кода PL/SQL
Влияние компилятора. Настройка кода PL/SQL. Управление автоматическим встраиванием подпрограмм. Идентификация проблем использования памяти и ее настройка. Массовое связывание.
10. Увеличение производительности за счет кэширования
Использование кэша результатов запросов. Кэширование PL/SQL функций. Обзор особенностей кэша функций PL/SQL.
11. Анализ кода PL/SQL
Информация о коде. Механизм PLScope. Некоторые подпрограммы пакета DBMS_UTULITY. Пакет DBMS_METADATA.
12. Профилирование и трассировка кода PL/SQL
Трассировка выполнения PL/SQL. Шаги трассировки PL/SQL. Профилировщик DBMS_HPROF.
13. Безопасность в PLSQL.
Права создателя и права вызывающего пользователя. Белые списки. Внедрение виртуальной частной базы данных при помощи детального контроля доступа. Создание контекста приложения. Процедуры пакета DBMS_RLS. Применение политики.
14. Защита кода от SQL-внедрений
Описание SQL-внедрений. Уязвимый для SQL-внедрений код. Использование DBMS_ASSERT.
15. Дополнительные механизмы безопасности.
Шифрование и маскирование.
16. Условная компиляция и обфускация кода.
Параметр PLSQL_CCFLAGS. Утилита WRAP, пакет DBMS_DDL.
17. Динамическое распараллеливание в PLSQL.
Пакет DBMS_PARALLEL_EXECUTE.