Описание
Задача курса показать на примерах механизмы и методы оптимизации приложений как в технологии клиент-сервер, так и в многозвенной архитектуре. Настройку производительности SQL запросов. Мониторинг и трассировку SQL. Преимущества распределенных вычислений перед технологией клиент-сервер. показать новые архитектурные особенности сервера базы данных Oracle и его тонкую настройку с точки зрения эксплуатации готовых приложений. Новые возможности SQL и PL/SQL и возможности преобразования запросов с использованием распределенных вычислений на основе Oracle Weblogic сервера

Целевая аудитория

Разработчики и администраторы приложений для сервера приложений и базы данных Oracle,
Необходимая подготовка: знание Pl/SQL, основы программирования Oracle сервера. Желательно знание концепций OOP.

Программа
    • Факторы , влияющие на производительность приложений, проблемы производительности, роли оптимизации. Выбор методологии оптимизации.

    • Oracle. Логическая и физическая компоновка базы данных. Использование табличных пространств с блоком, отличным от стандартного.

    • Процессы управления сервером, механизмы управления памятью сервера и серверными процессами. Оптимальное использование. Механизмы мониторинга памяти. Разделяемый пул, и SQL область. Программная глобальная область. Фазы выполнения SQL операторов. Необходимость использования параметров в запросах. Использование системных представлений для мониторинга разбора SQL предложений.

    • Понятие параллельного сервера. TNS адресаты. Настройка процессов прослушивания для работы с протоколами HTTP, FTP, WEBDav. Репозитарий  XMLDB.

    • Использование OCI библиотеки и стандарта JDBC для доступа к серверу Oracle. Утилита SQLDeveloper  - как средство разработки и отладки SQL запросов.

    • Общая архитектура распределенных вычислений Oracle. Фарм и Кластер, единая точка входа (SSO сервер). Oracle Weblogic сервер – основа создания распределенных вычислительных сред масштаба предприятия.

    • Типы данных . Функции для работы с TimeStamp Рациональное использование табличных пространств для размещения больших объектов. Использование объектных и агрегатных типов для хранения данных. 

    • Генерация плана выполнения запросов. Команда Explain Plan. Отображение плана выполнения запросов утилитами SQLDeveloper и JDeveloper. Старый,добрый SQL*Plus тоже умеет отображать план выполнения запросов. Использование представления V$SQL_PLAN для анализа выполненных запросов. Использование Enterprise Manager для просмотра планов выполнения запросов

    • Методы трассировки SQL запросов. Параметры инициализации сервера и конфигурирование сессии для проведения трассировок. Форматирование трассировочных файлов. Oracle Session Resource Profiler для получения информации о ходе выполнения операторов.  Использование Oracle SQL Analyze для идентификации и корректировки “плохих” SQL запросов.

    • Функционирование оптимизатора. Оптимизатор по правилам и стоимости. Выбор режима оптимизации на различных уровнях. Различные пути доступа к данным. Выбор оптимального пути. Воздействие индексов на методы доступа к данным. Типы индексов. Индексы и ограничение целостности в базе данных.

    • Сбор статистики по объектам, схемам и системе. Когда собирать статистику. Типы статистических данных. Пакет DBMS_STATS и методы сбора статистики. Мониторинг автоматического сбора статистики . Индексная статистика. Построение статистических Гистограмм. Гистограммы и селективность выборок.

    • Управление стоимостным оптимизатором. Параметры , влияющие на режим оптимизации. Правила использования подсказок. Управление целями оптимизации. Категории подсказок.

    • Сортировки и группировки. Использование аналитических функций в запросах. Управление Фреймами. Ввод дополнительных оконных переменных в запросы. Join запросы. Объединение множества таблиц. Использование HASH JOIN . Настройка рабочих областей памяти для выполнения HASH операций. SQL 1999 и JOIN операции. Оценка JOIN статистики

    • Язык манипулирования данными DML. выполнения сложных операторов DML с подзапросами. Оператор Merge. Подсказки оптимизатору при выполнении больших вставок данных.

    • Стабилизация плана выполнения запроса и создание OutLines. Использование стабильных планов. Редактирование сохраненных OutLines.

    • Язык DDL. Создание и изменение таблиц (DDL). Команда Create Table. Определение параметров хранения таблиц на физическом уровне. Локальное управление табличными пространствами. Сегменты, экстенты, блоки. Параметры блоков – почему в 10g их стало значительно меньше.

    • Создание временных транзакционных и сессионных таблиц.

    • Создание таблиц с разбивкой на партиции. Глобальные и локальные индексы. Ранжирование партиций, листовые и HASH партиции. Комбинированные партиции .

    • Индексные таблицы. Доступ к данным в индексных таблицах, проблемы обновления данных. Особенности размещения индексных таблиц в физических блоках дисковой памяти.

    • Индексы по функциям

    • Таблицы, организованные как внешние. Загрузка в базу данных JDBC драйвера стороннего разработчика для обеспечения доступа к другим базам данных. Настройка безопасности доступа к протоколу TCP из Java приложений в Oracle сервере.

    • “Откладываемые” ограничения целостности и проблемы каскадного обновления первичных ключей. Команда SET CONSTRAINT. Изменение структуры таблицы, команда Alter table и ограничения целостности. Создание неуникальных индексов для первичных и уникальных ключей. Мгновенное включение ограничений.

    • Использование функций в индексах. Deterministic функции. Индексы и оптимизация. Необходимость использования индексов. Особенности хранения индексов на дисковом пространстве. Кластеры. Hash кластеры с сортировкой и кластеры одной таблицы. Необходимость использования. Практический пример преобразования некластеризованных таблиц в кластеризованные. Кластерные индексы.

    • Материализованные представления. Сколько создавать материализованных представлений. Типы представлений и методы обновления. Преобразование сложных запросов в материализованные представления.

    • Оптимизация PL/SQL. Агрегатные типы данных (массивы и таблицы PL/SQL). Оператор BULK COLECT и операции DML. Извлечение данных из базы данных в PL/SQL таблицы – оператор BULK FETCH.  Преобразование типов данных. Ссылочные типы данных. Ассоциативные таблицы и правила доступа к их элементам.