Книга I. Настройка ORACLE8
Введение

Глава 1. Что нового в Огас1е8
Oracle ConText
Oracle Express
Основы объектов базы данных
Проблемы объектно-ориентированного проектирования
Проектирование связей IS-A
Проектирование с применением объектов
Определение абстрактных типов данных
Проектирование с применением абстрактных типов данных Oracle
Вложение абстрактных типов данных
Применение объектных идентификаторов
Перемещение с помощью указателей (идентификаторов OID)
Применения проекта с отклонением от первой нормальной формы
Повторяющиеся группы и абстрактные типы данных
Указание на таблицы
Использование вложенных таблиц
Обзор применения объектных идентификаторов в проекте Oracle
Проектирование составных объектов
Проектирование прототипов метода
Итоговые данные по объектам базы данных
Следующий этап—Oracle8.2
Наследование
Абстракция
Конструкция IS-A
Знакомство с многомерными указателями в Oracle
Резюме

Глава 2. Логическое проектирование с учетом производительности
Проектирование распределения базы данных
Экономические вопросы проектирования базы данных
Прозрачность расположения и проект базы данных
Вопросы производительности и настройки распределенной базы данных
Пример проекта распределенной базы данных
Ссылочная целостность
Логическое проектирование базы данных с учетом производительности
Нормализация данных и теория моделирования
Проект звездообразной схемы
Логическое проектирование объектов базы данных
Абстрактные типы данных
Указатели и Oracle8
Основные объектные структуры данных
Модель представления данных для Oracle8
Преимущества методов и объектов базы данных
Планирование иерархии методов
Диаграммы потока данных и объектный анализ
Резюме

Глава 3. Физическое проектирование с учетом производительности
Проектные вопросы производительности базы данных
Индексы
Размещение таблиц
Ссылочная целостность и производительность
Хранимые процедуры
Закрепление пакетов в SGA
Триггеры
Кластеры
Хешированные кластеры
Параллельный запрос
Резюме

Глава 4. Настройка архитектуры Oracle
Архитектура Oracle
Внутренние структуры Oracle
Буферный кэш
Совместно используемый пул
PGA
Метаданные Oracle—структуры V$
Память Oracle
Определение размеров SGA
Настройка PGA Oracle
Настройка сортировки Oracle
Настройка буфера данных
Настройка многопоточного сервера
Моделирование закрепления строк базы данных
Экземпляры Oracle для пакетной обработки
Настройка ввода/вывода Oracle
Распределение дисков
Полосовая организация дисков
Технология RAID и Oracle
Применение в Oracle оптических дисков
Применение в Oracle неформатированных (raw) устройств
Устранение фрагментации данных
Применение дисков для других системных ресурсов
Резюме

Глава 5. Настройка SQL Oracle
Настройка синтаксиса SQL Oracle
Стоимостные соображения
Логические операторы SQL
Общие правила создания эффективного кода SQL
Настройка SQL с применением индексов
Составные индексы
Использование средства explain plan Oracle
Временные таблицы
Настройка с помощью оптимизаторов Oracle
Оптимизаторы SQL
Проблема генераторов произвольного кода SQL
Настройка стоимостного оптимизатора Oracle
Настройка с применением продукционного оптимизатора Oracle
Стратегия настройки оптимизатора
Установка оптимизатора по умолчанию
Настройка подзапросов SQL
Настройка PL/SQL
Использование хранимых процедур и триггеров Oracle
Применение ODBC в качестве серверного интерфейса
Развитие в направлении создания объектно-ориентированного кода SQL
SQL и объекты Oracle8
SQL и структурное несоответствие
SQL и нарушение инкапсуляции
Конфликты между SQL Oracle и объектами
SQL и пользовательские типы данных
Создание и манипулирование объектами Oracle8
Отображение пользовательских типов данных с помощью SQL
Обновление пользовательских типов данных с помощью SQL
SQL Oracle и объектные идентификаторы
Советы по применению объектного кода SQL
Резюме

Глава 6. Настройка блокировок Oracle
Проблема слитного обновления
Грязные чтения
Невоспроизводимые результаты
Ложное повреждение в базах данных, отличных от Oracle
Блокировка базы данных и степень детализации
Блокировка Oracle
Взаимоблокировки базы данных
Повышение уровня блокировок в серверах, отличных от Oracle
Альтернативные методы блокировки в Oracle
Фраза WHERE
Решение с применением отметки времени
Блокировка и распределенные базы данных
Принципы двухфазной фиксации
Измерение блокировок Oracle
Поиск конфликтов
Просмотр блокировок
Oracle Parallel Server и DLM
Входы freelist и конкуренция Oracle
Parallel Server
Представление V$LOCK_ACTIVITY
Представление V$SYSSTAT
Резюме

Глава 7. Производительность и настройка в повседневной работе DBA Oracle
Использование опции UNRECOVERABLE
Применение табличных пространств только для чтения
Определение места размещения индекса
Битовые индексы
Опция кэширования таблиц Oracle
Включение опции кэширования таблицы
Кластеризованные индексы
Как создать кластеризованный индекс
Определение условий перестройки индексов
Проблемы индексного табличного
пространства
Резюме

Глава 8. Производительность и настройка распределенных баз данных Oracle
Тиражирование таблиц Oracle
Применение снимков Oracle
Асинхронное обновление таблиц Oracle
Параллелизм и базы данных Oracle
Многозадачность и многопоточность
Использование параллельных процессов Oracle
Планирование с учетом роста
Определение размера блока
Проблематика табличных пространств
Фрагментация табличного пространства
Реорганизация табличного пространства
Фрагментация таблицы
Фрагментация строк
Проектирование экспертных систем измерения производительности
Распределение нагрузки и Oracle
Разнородность
Настройка Oracle Webserver
Вопросы производительности Oracle Webserver
Резюме

Глава 9. Производительность и настройка инструментальных средств
связности базы данных Oracle
API-интерфейс базы данных
Внутренняя организация ODBC
Программирование с учетом переносимости
Межсистемная связность
Внутренняя организация SQL*Net и Net8 Oracle
Прикладные соединения с помощью SQL*Net и Net8
SQL*Net и Net8 для клиент-серверной среды
Знакомство с приемником SQL*Net и Net8
Управление соединениями SQL*Net и Net8
Управление двухфазными фиксациями
Установление сеансов SQL* Net и Net8
Связность с базами данных на мэйнфреймах IBM
Взаимодействие баз данных Oracle с другими базами данных
История применения баз данных нескольких поставщиков
Шлюзы
Тиражирование данных
Промежуточное программное обеспечение
Дистанционное измерение
Резюме

Глава 10. Настройка хранилищ данных Oracle и приложений OLAP
Хранилища данных и многомерные базы данных
Экспертная система
Системы поддержки принятия решений
Хранилища данных
Соответствие реляционных систем потребностям MDDB
Заполнение звездообразных схем с помощью распределенного кода SQL
Агрегирование,сводки и звездообразные схемы
История OLAP
Моделирование кубических баз данных
Способы, отличные от кубического представления данных
Разработка данных и OLAP
Особенности хранилища данных Oracle
Параллельные запросы для хранилищ данных
Подсказки звездообразного запроса и звездообразные соединения в Oracle
Применение битовых индексов в Oracle
Применение хешированного соединения Oracle
Применение новых средств Oracle8
Сегментирование таблиц и индексов
Повышение готовности на основе сегментирования
Повышение производительности за счет сегментирования
Сегментирование таблиц а Oracle8
Сегментация индекса в Oracle8
Параллельные операции
Параллельная база данных и параллельный сервер Oracle
Параллельный запрос Oracle
Параллельное создание таблицы с выборкой
Параллельное построение индексов
Резюме

Глава 11. Контроль приложений Oracle
Сравнение превентивных и реактивных систем измерения
Создание превентивного монитора на основе Oracle
Сбор статистики о производительности Oracle
Сбор статистики Oracle
Создание репозитария производительности с помощью утилит Oracle
Применение утилит utlbstat иtlestat Oracle
Создание базы данных о производительности Oracle
Ежедневная и еженедельная системная обработка
Локальная обработка Oracle
Расписание выполнения сгоп
Отчеты о производительности
Интерактивное меню для системы контроля производительности
Вызов отчетов и предупредительных сообщений Oracle
Подробные сведения о программе Patrol
компании ВМС
Модуль знаний Patrol
Отчеты Patrol
Обработка исключений в Patrol
Инструментальные средства контроля производительности Oracle
Монитор Top Sessions
Oracle Expert
Oracle Performance Manager
Oracle Trace
Oracle Tablespace Manager
Резюме

Глава 12. Будущее технологии Oracle8
Перспективы развития объектных стандартов базы данных
Управление объектами
Преимущества объектной ориентации
Компоненты управления объектами
Объектная модель OMG
Архитектура управления объектами (ОМА)
Брокер объектных запросов
Объекты Oracle и наследование
Будущее Oracle — пример наследования
Oracle и 2000 год
Краткий обзор форматов дат Oracle
Отображение даты
Вставка даты
Проверка существующих значений столетия
Предлагаемый план реализации
Шестидесятичетырехразрядная опция
Oracle — взгляд в будущее
Сложность SQL и время отклика
Резюме

Книга II. Программирование на PL/SQL
Введение
Часть I. Программироваие на PL/SQL

Глава 1. Первый взгляд на PL/SQL
Блоки
Структура блока PL/SQL
Подблоки
Скалярные типы данных, объекты и наборы
Скалярные типы данных
Подтипы
Типы OBJECT
Наборы
Вложенная таблица
Типы данных PL/SQL
Использование переменных
Управление итерациями
Циклы FOR
Цикл WHILE
Оператор LOOP
Логическое управление
Встроенные функции
Функции SQL
Функция SQLCODE
Функция SQLERRM
Доступ к базе данных
Использование операторов ЯМД
Курсоры
Неявные курсоры
Явные курсоры
Использование циклов FOR по курсору
Исключительные ситуации
Предопределенные исключительные ситуации
Исключительные ситуации, определенные пользователем
Обработчики исключительных ситуаций
Область действия и область видимости исключительных ситуаций
Хранимые процедуры
Хранимые функции
Хранимые пакеты
Спецификация пакета
Тело пакета
Триггеры базы данных
Связанная таблица
Срабатывание триггера
Срабатывание триггеров базы данных
Резюме

Глава 2. Написание простых подпрограмм
Структура базового блока
Декларативная и процедурная части
Часть обработки исключительных ситуаций
Использование встроенных функций
Стандарты кодирования
Прописные/строчные буквы
Отступы
Комментарии
Соглашения по именованию
Резюме

Глава 3. Управление выполнением программы
Оператор IP
Оператор IF-THEN-ELSE
Оператор IF-THEN-ELSIF
Циклические управляющие структуры.
Управляющая структура UNTIL
Управляющая структура WHILE
Оператор цикла FOR по курсору
Оператор GOTO
Резюме


Глава 4. Доступ к базе данных
SQL в PL/SQL
ЯОД и PL/SQL
Операторы ЯМД в PL/SQL
SELECT, запросы и курсоры
Запросы с неявными курсорами
Явные курсоры
Курсоры в пакетах
Атрибуты курсоров
Курсорные переменные
Операторы UPDATE, INSERT и DELETE
Обновление и удаление записей, извлеченных из курсора
Транзакции в PL/SQL
PL/SQL в SQL
Производительность операторов SQL
Ограничения на хранимые функции, используемые в SQL
Привилегии объектов базы данных
Привилегии разработчиков приложений
Привилегии конечного пользователя
Резюме

Глава 5. Сложные типы данных
Составные типы
Типы RECORD
Совместное использование типов записей
Типы OBJECT
Использование составных переменных
Типы наборов
Свойства VARRAY
Свойства проиндексированной таблицы
Свойства NESTED TABLE
Определение типов наборов
Ссылки на наборы
Методы наборов
Инициализация наборов
Использование наборов с реляционными таблицами
Использование наборов в объектно-реляционной базе данных
Резюме

Глава 6. Создание программ
Процедуры и функции
Использование параметров
Определение возвращаемого значения функции
Локальные и хранимые подпрограммы
Вызов процедур и функций
Перегрузка программ
Хранимые пакеты
Спецификация пакета
Тело пакета
Перегрузка процедур и функций пакета
Инициализация пакета
Вызов процедур и функций пакета
Преимущества использования пакетов
Рекурсивные подпрограммы PL/SQL
Триггеры базы данных
Срабатывание триггеров
Триггер INSTEAD OF
Ограничения на триггеры базы данных
Общие свойства хранимых объектов PL/SQL
Создание хранимых объектов PL/SQL
Зависимости
Обработка исключительных ситуаций
Привилегии выполнения
Несколько слов о стиле
Резюме

Глава 7. Использование объектных типов
Объекты в Oracle
Структура объектных типов
Конструктор
Функции отображения и порядка
Функции и процедуры-члены
Создание объектных типов
Реализация структур реального мира
Связи с использованием вложенных объектных типов
Связи с использованием атрибутов REF
Взаимозависимые объектные типы
Объекты в базе данных
Создание тела объектного типа
Объекты в PL/SQL
Объявление объектов
Ссылка на компоненты объектов
Значения объектов
Объекты и доступ к базе данных
Объекты в SQL
Вставка объектов
Выборка объектов
Навигация по ссылкам
Объектные представления
Взаимозависимости объектов
Резюме

Глава 8. PL/SQL в различных средах
Машина PL/SQL
PL/SQL и SQL*Plus
Использование связанных переменных
Использование подставляемых переменных
Компиляция хранимых программ
PL/SQL в Oracle Forms
Переменные
Библиотеки PL/SQL
PL/SQL в языках третьего поколения
PL/SQL и прекомпиляторы
Вызов внешних программ
Трассировка PL/SQL
Скрытие исходного кода программы PL/SQL
Резюме

Глава 9. PL/SQL и производительность приложений
Инженерное обеспечение производительности
Посадите клиента на диету
Определите объемы данных
Подружитесь с проектировщиком базы данных
Внимательно пересмотрите SQL
Используйте представления и курсоры пакета
Получите информацию об имеющихся индексах
Избегайте повторений
Задавайте правильные вопросы в нужное время
Избегайте скрытой работы в запросах
Пользуйтесь преимуществами хранимых пакетов
Оптимизируйте загрузку в совместно используемый пул
Использование пакета
DBMS_SHARED_POOL
Будьте осторожны с использованием триггеров базы данных
Резюме

Часть II. Полный справочник


Глава 10. Основные понятия языка программирования PL/SQL
Набор символов
Идентификаторы
Зарезервированные слова
Литералы
Числовые литералы
Строковые литералы
Булевы литералы
Ограничители
Комментарии
Выражения
Операции сравнения
Сравнение символьных строк
Сравнение дат
Значения NULL в булевых выражениях
Присваивание и преобразование данных
Правила ссылок на идентификаторы
Правила уточнения имен
Область действия и область видимости
Правила различия регистров
Правила разрешения имен
Резюме

Глава 11. Блоки, хранимые программы, пакеты, триггеры базы
данных и хранимые типы
Анонимные блоки
Процедуры
Перегрузка хранимых процедур
Функции
Пакеты
Спецификация пакета
Тело пакета
Использование условных предикатов
Ссылки на значения столбцов в строчных триггерах
Ограничения, налагаемые на триггеры
Создание хранимых типов
Создание типов VARRAY
Создание вложенных типов TABLE
Создание типов OBJECT
Резюме

Глава 12. Объявления
Объявление переменных
Объявление констант
Объявления типов
Использование атрибутов %TYPE и %ROWTYPE
Подтипы, определяемые пользователем
Объявление исключительных ситуаций, определяемых пользователем
Использование PRAGMA EXCEPTION_NIT
Определение локальных модулей
Объявления процедур
Объявление функций
Предварительные объявления
Использование стандартных типов данных
Булев тип данных
Символьные типы данных
Даты
Числа
Объявление курсоров
Записи
Объекты
Таблицы
Массивы переменной длины
Резюме

Глава 13. Процедурные конструкции
Оператор присваивания
Вызов хранимых программ на языке PL/SQL
Оператор CLOSE
Методы набора
COUNT
DELETE
EXISTS
EXTEND
FIRST
LAST
LIMIT
NEXT
PRIOR
TRIM
Комментарии
Оператор COMMIT
Атрибуты курсора
%FOUND
%ISOPEN
%NOTFOUND
%ROWCOUNT
Оператор DELETE
Оператор EXIT
Обработчики исключительных ситуаций
Выражения
Булевы выражения
Символьные выражения
Выражения типа даты
Числовые выражения
Оператор FETCH
Оператор безусловного перехода
Условный оператор
Оператор INSERT
Метки
Литералы
Оператор LOCK TABLE
Оператор цикла
Оператор цикла FOR
Оператор цикла FOR по курсору
Оператор цикла WHILE
Оператор NULL
Оператор OPEN
Оператор OPEN-FOR
Оператор RAISE
Процедура RAISE_APPLICATION_ERROR
Оператор возврата
Оператор ROLLBACK
Оператор SAVEPOINT
Оператор SELECT INTO
Оператор SET TRANSACTION,
Оператор UPDATE
Резюме

Глава 14. Встроенные функции
Встроенные функции и их классификация
Функции, сообщающие об ошибках
Функция SQLCODE
Функция SQLERRM
Числовые функции
Строковые функции
Функция ASCII
Функция CHR
Функция CONCAT
Функция INITCAP
Функции LENGTH и LENGTHB
Функции LOWER и UPPER
Функции LPAD, RPAD, LTRIM и RTRIM
Функции INSTR и INSTRB
Функция REPLACE
Функция SOUNDEX
Функции SUBSTR и SUBSTRB
Функция TRANSLATE
Функции преобразования
Функции CHARTOROWID и ROWIDTOCHAR
Функции HEXTORAW и RAWTOHEX
Функции TO_CHAR, TO_NUMBER и TO_DATE
Функции для работы с датами
Функции ADD_MONTHS,
MONTHS_BETWEEN и LAST_DAY
Функции SYSDATE и NEW_TIME
Функция NEXT_DAY
Функции различного назначения
Групповые функции SQL
Резюме

Глава 15. Пакеты, поставляемые с Oracle8
Основные группы поставляемых пакетов
Установка поставляемых пакетов
Использование поставляемых пакетов
Резюме

Глава 16. Расширенная поддержка SQL и PL/SQL
Пакет DBMS_SQL
Обработка курсоров
Синтаксический разбор оператора
Обработка связанных переменных
Определение столбцов
Получение значений столбцов или переменных
Выполнение операторов ЯОД
Выполнение динамических запросов
Выполнение динамических операторов UPDATE, INSERT и DELETE
Пакет DBMS LOCK
Работа с блокировками пользователя
Выделение новой блокировки
Запрос блокировки
Преобразование блокировки
Снятие блокировки
Пример использования блокировки, объявленной пользователем
Пакет DBMS_TRANSACTlON
Спецификации DBMS_TRANSACTlON
Примеры использования пакета DBMS_TRANSACTION
Пакет DBMS_SESSION
Спецификации пакета DBMS_SESSION
Примеры использования пакета DBMS_SESSION
Пакет DBMS_DDL
Спецификации пакета DBMSJ3DL
Примеры использования пакета DBMS_DDL
Резюме

Глава 17. Ввод/вывод внешних файлов и управление фоновыми заданиями
Пакет UTL_PILE
Спецификации пакета UTL_FILE
Использование пакета UTL_FILE
Пакет DBMS_JOB
Посылка и удаление задания
Изменение задания
Получение информации о заданиях
Резюме

Глава 18. Поддержка типов данных LOB
Концепции больших объектов
Внутренние большие объекты
Внешние большие объекты
Работа с большими объектами
Инициализация больших объектов
Манипулирование большими объектами
Пакет DBMS_LOB
Резюме

Глава 19. Уведомление о событиях и поддержка обмена данными
между сеансами
Пакет DBMS_ALERT
Спецификации пакета DBMS_ALERT
Использование пакета DBMS_ALERT
Пакет DBMS_PIPE
Спецификации пакета DBMS_PIPE
Пересылка сообщений
Получение сообщений
Резюме

Глава 20. Расширенная поддержка очередей
Определение типов данных Oracle AQ
Агент
Список получателей
Свойства сообщения
Опции включения в очередь
Опции извлечения из очереди
Безопасность AQ
Установка и управление AQ
Создание новой таблицы очередей
Создание и запуск новой очереди
Работа с абонентами
Отправка и получение сообщений очереди
Обработка ошибок AQ
Удаление абонентов из очереди
Остановка и удаление очереди
Удаление таблицы очередей
Другие процедуры расширенной поддержки
очередей
Резюме

Глава 21. Пакеты различного назначения
Пакет DBMS_STANDARD
Процедура RAISE_APPLICATION_ERROR
Пакет DBMS_OUTPUT
Отладка с использованием DBMS_OUTPUT
Пакет DBMS_APPLICATION_INFO
Использование пакета
DBMS_APPLlCATlON_INFO
Пакет DBMS_DESCRIBE
Пакеты, предназначенные для администратора базы данных
Резюме

Приложение А. Зарезервированные слова
Приложение В. PL/SQL в словаре данных