Система Orphus

Oracle 9i. Оптимизация производительности. Советы и методы

Автор: Р. Нимик
Издательство: Питер, 2006
720 страниц

Материал предоставил: Издательство ''Питер''
Найти в магазинах
Купить в Озоне (499 руб.)
Купить в Books.Ru
Купить в Болеро (469 руб.)
Купить в издательстве "Питер"
Купить в My-Shop.ru (423 руб.)

Аннотация

Содержание

Аннотация

Основная цель книги - помочь работающим с Oracle специалистам начального и среднего уровня разобраться в системах Oracle и лучше оптимизировать их. Рассматриваются также многие темы, интересные для экспертов. И все-таки главная цель - помочь специалистам, которые уже отчаялись найти решение и ждут простых советов, как улучшить производительность. Книга ставит перед собой одну простую задачу: вооружить вас арсеналом советов, которые позволят вам ускорить работу системы.

Содержание

ГЛАВА 1. Введение в новые свойства Oracle9i (для администраторов БД и разработчиков)

Новые административные свойства Oracle9i
Информация о миграции
SVRMGRL и Connect Internal Desupport
Повышение безопасности, связанное с Database Creation Assistantи учетной записью SYS
Файлы серверных параметров (SPFILE)
Автоматическое управление отменой
Возобновляемое назначение пространства
Временные табличные пространства по умолчанию
Файлы, управляемые Oracle
Управление динамической памятью
Поддержка нескольких размеров блока в базе данных
Разделение курсора
Самонастройка PGA
Оперативное переопределение таблиц
Прочие административные свойства
Новые архитектурные свойства Oracle9i
Новые возможности и свойства разделения
Извлечение метаданных объекта
Автоматическое управление пространством сегментов
Новые свойства индексации
Новое свойство организации информационных хранилищ в Oracle9i
Внешние таблицы
Ограничения на представления
Команды INSERT для нескольких таблиц
Новые свойства SQL и PL/SQL в Oracle9i
Ассоциативные массивы
Операторы и выражения Oracle CASE
Команда Oracle MERGE
Поддержка соответствия ANSI/ISO SQL 1999
Прочие свойств SQL и PL/SQL
Новые свойства резервного копирования и восстановления в Oracle9i
Восстановление после ошибки быстрого запуска (с временным критерием)
Обращение с нарушением последовательности действий
Новые свойства RMAN
Новые свойства Log Miner
Oracle9i Data Guard
Real Application Clusters (RAC)
Параллельные базы данных
Архитектура Oracle RAC
Внутренняя работа системы Oracle RAC
Обработка SCN
Заключение
Обзор советов
Библиография

ГЛАВА 2. Основные принци пыпостроения индексов (для начинающих разработчиков и администраторов Б

Основные положения, связанные с индексами
Сцепленные индексы
Oracle ROWID
Подавление индексов
Операторы NOT EQUAL (<>, !=)
IS NULL или IS NOT NULL
Использование функций
Сравнение разных типов данных
Избирательность
Фактор кластеризации
Двоичная высота
Использование гистограмм
Быстрые полные просмотры
Просмотр с пропусками
Типы индексов
Индексы b-дерева
Битовый индекс
Хеш-индексы
Таблицы с индексной организацией
Индексы обратного ключа
Индексы на основе функции
Разделенные индексы
Быстрое восстановление индекса
Обзор советов
Библиография

ГЛАВА 3. Дисковый ввод/вывод и фрагментация (для администраторов БД)

Использование дисковых массивов
Доступные уровни RAID
Упрощение установки и обслуживания
Подходит ли дисковый массив для круглосуточного магазина
Вопросы стоимости
Распределение основных файлов данных по доступнымфизическим дискам
Сохранение файлов данных и индексов в разных местах
Предотвращение конкуренции из-за дискового ввода/вывода
Уравновешивание файлового ввода/вывода путемперемещения файлов данных
Использование локально управляемых табличных пространств
Создание табличного пространства как локально управляемого
Перемещение табличных пространств, управляемых словарем,в локально управляемые
Просмотр информации о файле/табличном пространствес помощью Enterprise Manager
Предотвращение дисковой конкуренции с помощью разделов
Получение дополнительной информации о разделах
Другие типы разделов
Другие опции разделения
Применение индексного разделения
Экспорт разделов
Устранение фрагментации
Правильный размер экстента
Создание нового табличного пространства и перемещение в него данных
Экспорт и последующий повторный импорт таблицы
Предотвращение формирования цепочки с помощью правильногозадания процентов
Перестройка базы данных
Управление отменой
Выявление проблем, возникших из-за размера файла журнала БД
Определение размера журналов и интервала контрольной точки
Увеличение шансов на восстановление: фиксация после каждого пакета
Использование сегментов отката
Предотвращение конкуренции среди сегментов отката
Контроль ожидания и конкуренции сегментов отката
Увеличение сегментов отката
Изоляция больших транзакций в собственных сегментах отката
Использование упрощенного подхода: Табличное пространство отмены
Контроль пространства UNDO
Удаление проблемных сеансов
Сортировка в памяти для уменьшения дискового ввода/вывода
Наличие нескольких управляющих файлов на разных дисках и контроллерах
Улучшение ввода/вывода для данных с интенсивными операциями записис помощью прозрачных устройств
Преимущества использования прозрачных устройств
Недостатки использования прозрачных устройств
Другие предостережения и советы в отношении дискового ввода/вывода
Рассмотрение проблем на стадиях планирования
Обзор советов
Библиография

ГЛАВА 4. Оптимизация базы данных с помощью параметров инициализа(для администраторов БД)

Идентификация ключевых параметров init.ora
Изменение файла init.ora без рестарта
Просмотр параметров init.ora с помощью Enterprise Manager
Повышение производительности путем оптимизации DB_CACHE_SIZE
Использование V$DB_CACHE_ADVICE при оптимизации DB_CACHE_SIZE
Поддержание коэффициента попадания кэша данных на уровнеболее 95%
Контроль представления V$SQLAREA для поиска медленных запросов
Настройка DB_BLOCK_SIZE, отражающая размер операций чтения данных
Оптимизация SHARED_POOL_SIZE для оптимальной производительности
Использование нескольких буферных пулов Oracle
Оптимизация PGA_AGGREGATE_TARGET для оптимальногоиспользования памяти
Изменение размера SGA во избежание листания и подкачки
OPTIMIZER_MODE: Оптимизация, основанная на стоимостиили на правилах
Создание достаточного числа диспетчеров
25 важных параметров инициализации
Отыскание недокументированных параметров init.ora
Стандартный сервер
Моделирование стандартного сервера
Обзор советов
Библиография

ГЛАВА 5. ENTERPRISE MANAGER и TUNING PACK (для администраторови разработчиков)

Enterprise Manager Console
Папка Instance
Управление экземпляром - Окно Status
Управление экземпляром - Опции Startup
Управление экземпляром - Параметры инициализации
Управление экземпляром - Рассмотрение отдельного сеанса
Управление экземпляром - Memory Advisors
Папка Schema
Управление схемой - Просмотр определенных таблиц
Управление схемой - Просмотр определенных индексов
Управление схемой - Просмотр информации SYS
Управление схемой - Просмотр модулей, процедур и триггеров
Папка Security
Управление безопасностью - Создание профиля
Папка Storage
Oracle SQL Scratchpad и SQL*Plus Worksheet
Performance Manager
Performance Manager - Диаграмма обзора состояния базы данных
Performance Manager - Коэффициент попадания буферного кэша
Performance Manager - Коэффициент попадания библиотечного кэша
Performance Manager - Коэффициент попадания кэша словаря данных
Performance Manager - Область SQL
Performance Manager - Коэффициент попадания сортировок в памяти
Performance Manager - Скорость системного ввода/вывода
Performance Manager - Информация об экземпляре базы данных
Performance Manager - Создание своих собственных диаграмм
Performance Manager - Списки диаграмм и сеансов
Oracle Tuning Pack - SQL Analyze
SQL Analyze - EXPLAIN PLAN
SQL Analyze - Статистика выполнения
SQL Analyze - Сравнение различных планов
SQL Analyze - Мастер оптимизации
Мастер оптимизации индексов
Oracle Tuning Pack - Oracle Expert
Oracle Expert - Работа над схемой
Oracle Expert - Задание правил сеанса оптимизации
Oracle Expert - Внесение изменений и измерение степени воздействия
Oracle Expert - Изучение рекомендаций
Oracle Expert - Подробные сведения о рекомендациях
Oracle Expert - Рекомендуемые изменения для системы в целом
Oracle Tuning Pack - Карта табличного пространства
Отчет об анализе, генерируемый Oracle Expert
Генерация отчетов о воздействии на электронный бизнес
Генерация отчетов на уровне сервиса
Оценка исправности приложения
Обзор советов
Библиография

ГЛАВА 6. Использование EXPLAIN, TRACE, TKPROF и STORED OUTLINES(для администраторов БД и разработчиков)

Утилита TRACE
Простые шаги для использования TRACE с простым запросом
Разделы вывода из утилиты TRACE
Более сложный вывод TKPROF
Исследование вывода TKPROF
Использование только EXPLAIN PLAN
EXPLAIN PLAN - Чтение сверху вниз или снизу вверх
Чтение EXPLAIN PLAN
Еще один метод получения вывода EXPLAIN PLAN: формированиедревовидной структуры
Еще один пример с использованием метода дерева
Трассировка/создание EXPLAIN для проблемных запросовв программах разработчика
Важные столбцы в таблице PLAN_TABLE
Полезные модули, предоставляемые Oracle
Параметры INIT.ORA для недокументированной TRACE
Использование хранимых схем
Обзор советов
Библиография

ГЛАВА 7. Стандартный синтаксис инструкций (для администраторов БДи разработчиков)

Самые распространенные инструкции
Доступные инструкции и группировки
Определение инструкции
Указание нескольких инструкций
Использование псевдонима
Использование инструкций
Инструкция CHOOSE
Инструкция RULE
Инструкция FIRST_ROWS
Инструкция ALL_ROWS
Инструкция FULL
Инструкция INDEX
Инструкция NO_INDEX
Инструкция INDEX_JOIN
Инструкция AND_EQUAL
Инструкция INDEX_COMBINE
Инструкция INDEX_ASC
Инструкция INDEX_DESC
Инструкция INDEX_FFS
Инструкция ORDERED
Инструкция LEADING
Инструкция ORDERED_PREDICATES
Инструкция ROWID
Инструкция NO_EXPAND
Инструкция DRIVING_SITE
Инструкция USE_MERGE
Инструкция USE_NL
Инструкция USE_HASH
Инструкция PUSH_SUBQ
Инструкция PARALLEL
Инструкция NOPARALLEL
Инструкция APPEND
Инструкция NOAPPEND
Инструкция CACHE
Инструкция NOCACHE
Инструкция CLUSTER
Инструкция HASH
Инструкция CURSOR_SHARING_EXACT
Проблемы с инструкциями
Инструкции с одного взгляда
Обзор советов
Библиография

ГЛАВА 8. Оптимизация запросов (для начинающих администраторов БДи разработчиков)

Обращение к V$SQLAREA и V$SQL
Отбор худших запросов из представления V$SQLAREA
Отбор худших запросов из представления V$SQL
Когда использовать индекс
Забыть об индексе
Создание индекса
Проверка индекса для таблицы
Правильное индексирование
Исправление неправильного индекса
Индексирование SELECT и WHERE
Быстрый полный просмотр
''Невероятное'' ускорение запросов
Кэширование таблицы в памяти
Множественные индексы (используйте наиболее избирательный)
Слияние индексов
Обработка подавленных индексов
Индексы на основе функции
Понятие ''исчерпывающего'' OR
Функция EXISTS
Обзор советов
Библиография

ГЛАВА 9. Объединения таблиц и другие продвинутые методы оптимизации

Методы объединения
Объединения NESTED LOOPS
Объединения SORT-MERGE
Объединения CLUSTER
Объединения HASH
Индексные объединения
Параметры инициализации объединения таблиц
Параметры объединения SORT-MERGE
Параметры объединения HASH
Сравнение базовых методов объединения
Объединение двух таблиц одинакового размера (основано на стоимости)
Объединение INDEX из двух таблиц: таблицы одинакового размера(основанное на стоимости)
Принудительное использование определенного метод объединения
Исключение записей объединения (потенциальных строк) в объединенияхиз нескольких таблиц
Объединение большой и маленькой таблиц
Объединение из трех таблиц (основанное на стоимости)
Битовые индексы объединения
Битовые индексы
Оптимизация сторонних программных продуктов
Оптимизация распределенных запросов
Когда все оптимизировано
Дополнительные сведения об оптимизации
Real Application Clusters (RAC)
Высокий накал Red Hat: Linux делает ход
Внешние таблицы
Snapshot Too Old: проблема в коде разработчика
Set Event для дампа каждого ожидания
Блокировка дампов: последнее слово (только для сверхпродвинутых)
Оптимизация с помощью простых математических методов
Традиционный математический анализ
Методика из семи шагов
Интерпретация моделей
Выводы из математических методов
Дополнительные математические методы: применение теории управления
Обзор советов
Библиография

ГЛАВА 10. Применение PL/SQL для улучшения производительности(для администраторов баз данных и разработчиков)

Контроль в реальном времени с помощью DBMS_APPLICATION_INFO
Регистрация информации о времени в таблице базы данных
Уменьшение числа итераций модуля программы PL/SQL и времени итерации
Использование ROWID для итеративной обработки
Стандартизация типов данных, порядок команд IF и PLS_INTEGER
Обеспечение того же типа данных в операциях сравнения
Упорядочение условий IF на основании частоты условий
Применение типа данных PLS_INTEGER PL/SQL для целочисленныхопераций
Сокращение обращений к SYSDATE
Уменьшение использования функции MOD
Закрепление объектов в разделяемом пуле
Закрепление (кэширование) команд объектов PL/SQL в памяти
Закрепление всех модулей
Идентификация объектов PL/SQL, требующих закрепления
Использование и изменение DBMS_SHARED_POOL.SIZES
Обнаружение больших объектов
Получение подробной информации об объекте из DBA_OBJECT_SIZE
Текущее получение непрерывного пространства в разделяемом пуле
Обнаружение недействительных объектов
Обнаружение выключенных триггеров
Использование таблиц PL/SQL для быстрого просмотра справочных таблиц
Обнаружение и оптимизация SQL при использовании объектов
Использование компонента времени при работе с типами данных DATE
Оптимизация и тестирование PL/SQL
Проверка условий местоположения объекта PL/SQL
Открытие больших курсоров с помощью сегментов отката
Активное управление транзакциями для обработки большихобъемов данных
Повышение производительности с помощью временных таблиц базы данных
Встраивание механизма отслеживания пользователя для точногоопределения местоположения выполнения
Ограничение использования динамического SQL
Примеры для начинающих
Создание кода PL/SQL
Создание процедуры
Выполнение процедуры из PL/SQL
Создание функции
Выполнение функции get_cust_name из SQL
Создание пакета
Использование PL/SQL в триггере базы данных
Обзор советов
Библиография

ГЛАВА 11. Использование параллелизма для повышения производительно

Основы распараллеливания операций
Параллельное выполнение команд DML и DDL
Параллельное выполнение команд языка DML в Oracle9i
Параллелизм и разделы
Интраоперационный и интероперационный параллелизм
Примеры интраоперационного и интероперационного параллелизма(инструкции PARALLEL и NOPARALLEL)
Примеры создания таблиц и индексов с учетом распараллеливания
Реальный пример распределения данных для эффективногораспараллеливания операций
Параллельное выполнение команд DML
Ограничения при параллельном выполнении команд DML
Примеры параллельного выполнения команд DML
Мониторинг параллельных операций с помощью V$-представлений
Представление V$PQ_TQSTAT
Представление V$PQ_SYSSTAT
Представление V$PQ_SESSTAT
Использование команд EXPLAIN PLAN и AUTOTRACE для параллельныхопераций
Настройка параллельного выполнения и параметры инициализации Oracle 9i
Параллельная загрузка данных
Сравнение производительности и мониторинг параллельных операций
Прочие замечания о параллелизме
Обзор советов
Библиография

ГЛАВА 12. V$-представления (для администраторов баз данных и разработчик

Создание V$-представлений и предоставление доступа к нему
Подсчет и перечисление всех V$-представлений
X$-таблицы, на базе которых строятся V$-представления
Изучение объектов, на базе которых создаются DBA-представления
Полезные способы использования V$-представлений
Сводная информация о распределении памяти (V$SGA)
Детальная информация о распределении памяти (V$SGASTAT)
Получение значений параметров из файла init.ora с помощьюпредставления V$PARAMETER
Нахождение процента попаданий для кэша данных (V$SYSSTAT)
Нахождение процента попаданий для словарного кэша (V$ROWCACHE)
Нахождение процента попаданий для кэша разделяемыхSQL-запросов и процедур на языке PL/SQL (V$LIBRARYCACHE)
Объекты PL/SQL, которые следует закрепить в памяти
Выявление проблематичных запросов с помощью представленияV$SQLAREA
Выяснение того, что делают и какие ресурсы потребляют пользователи
Выяснение, к каким объектам обращается пользователь
Использование индексов
Выявление проблем, связанных с блокировками
Принудительное прекращение сеанса
Нахождение пользователей, имеющих по несколько сеансов
Выявление проблем, связанных с дисковым вводом/выводом
Обнаружение конкуренции за сегменты отката
Проверка достаточности числа списков свободных блоков
Проверка ролей и привилегий
Категории V$-представлений
Обзор советов
Библиография

ГЛАВА 13. X$-таблицы (для квалифицированных администраторов баз данных)

Введение в X$-таблицы
Некоторые заблуждения относительно X$-таблиц
Предоставление привилегий на просмотр X$-таблиц
Создание V$-представлений и X$-таблиц
Получение списка X$-таблиц, лежащих в основе V$-представлений
Получение списка всех X$-таблиц
Получение списка всех X$-индексов
Применение инструкций для X$-таблиц и индексов
Разделяемый пул
Запросы, предназначенные для мониторинга разделяемого пула
Ошибка ORA-04031
Конкуренция из-за выделения больших блоков памяти
Фрагментация
Нехватка памяти в разделяемом пуле и пуле Java
Процент попаданий в библиотечный кэш
Большое число полных синтаксических анализов
Ожидание защелки
Прочие соображения
Повтор
Параметры инициализации
Буферный кэш и блоки данных
Состояния буферов
Сегменты, с которыми ассоциированы занятые буферы
Конкуренция за защелку и ожидание
Экземпляр и база данных
Эффективное использование X$-таблиц
Некоторые детали внутреннего устройства Oracle
Трассировки
События
Дампы
Команда oradebug
Группы X$-таблиц
Ассоциации между X$-таблицами и фиксированными представлениями,не относящимися к числу V$-представлений
Типичные способы соединения X$-таблиц
Новые таблицы в версии Oracle9i
Недокументированные фиксированные представления
Чего ожидать в следующей версии
Обзор советов
Библиография

ГЛАВА 14. Использование пакета STATSPACK для настройки ожиданий и защелок(для квалифицированных администраторов базы данных)

Установка STATSPACK
Безопасность учетной записи PERFSTAT
Что изменилось после установки
Сбор статистики
Получение статистического отчета
Интерпретация результатов работы STATSPACK
Заголовок
Профиль нагрузки
Секция Instance Efficiency
Секция Top Wait Events
Наиболее ресурсоемкие SQL-команды
Секция Instance Activity Statistics
Статистика табличного и файлового ввода/вывода
Дополнительная статистика использования памяти
Статистика откатов и отмены
Статистика использования защелок
Статистика библиотечного и словарного кэша
Статистика использования памяти в области SGA
Параметры инициализации со значениями, отличными от принятыхпо умолчанию
Основные показатели, на которые следует обратить внимание в отчете,формируемом STATSPACK
Управление данными, которые генерирует STATSPACK
Модернизация пакета STATSPACK
Удаление STATSPACK
Обзор советов
Библиография

ГЛАВА 15. Быстрый анализ системы (для администраторов баз данных)

Сводный индекс эффективности (TPI)
Индекс эффективности образования (EPI)
Индекс эффективности системы (SPI)
Индекс эффективности памяти (MPI)
Коэффициент попадания в буферный кэш
Коэффициент попадания в словарный кэш
Коэффициент попадания в библиотечный кэш
Сортировка в памяти
Процент свободных буферов данных
Процентная доля десяти наиболее часто обращающихся к памяти команд
Оптимизация 25 команд, наиболее активно обращающихся к памяти
Закрепление и кэширование объектов
Индекс эффективности диска (DPI)
Оптимизация 25 команд, наиболее активно обращающихся к диску
Процентная доля десяти наиболее активно обращающихся к дискукоманд
Разнесение таблиц и индексов
Сцепление в критичных таблицах
Разнесение важных системных файлов Oracle
Балансировка сегментов отката
Балансировка временных табличных пространств
Сводный индекс эффективности (TPI)
Пример анализа системы
Оценивание системы
Пример показателей, по которым можно оценивать систему
Вопросы, требующие принятия срочных мер
Прочие вопросы, требующие принятия мер
Сводная информация о системе
Информация, относящаяся к памяти
Информация, относящаяся к дискам
Информация, относящаяся к процессору
Информация, относящаяся к резервному копированию и восстановлению
Соглашения об именовании, стандарты OFA и безопасность
Оценка квалификации администратора базы данных
Обзор советов
Библиография

ГЛАВА 16. Мониторинг системы с помощью утилит UNIX (для администраторов БД)

Утилиты, входящие в состав UNIX
Применение sar для мониторинга работы процессора
Применение top для выявления пользователей, потребляющихмаксимальный объем ресурсов
Применение uptime для мониторинга загрузки процессора
Применение mpstat для выявления узких мест, связанных с процессором
Использование ps в сочетании с некоторыми V$-представлениями
Применение sar для мониторинга дискового ввод/вывод
Применение iostat для выявления узких мест, связанных с дисковымвводом-выводом
Применение sar и vmstat для мониторинга страничного обменаи откачки памяти на диск
Мониторинг использования разделяемой памяти с помощью ipcs
Мониторинг загрузки системы с помощью vmstat
Мониторинг дискового пространства
Мониторинг производительности сети
Обзор советов
Библиография

ПРИЛОЖЕНИЕ A. Важнейшие параметры в файле init.ora (для администраторов баз данных)
ПРИЛОЖЕНИЕ B. V$-представления (для администраторов баз данных и разработчиков)
ПРИЛОЖЕНИЕ C. X$-таблицы (для администраторов баз данных)