- •Конспект лекций не официальный, возможны ошибки! Еремеев н.Б.
- •Распределенная база данных
- •Пример транзакции
- •Пример рбд
- •Прямые и косвенные соединения
- •Объекты: схемы и именования в рбд
- •Удаленные и распределенные предложения
- •Прозрачность в системе рбд
- •Архитектура рбд Oracle
- •Прозрачность в рбд. Прозрачность местоположения.
- •Прозрачность транзакций.
- •Прозрачность дублирования.
- •Разрешение имен в рбд
- •Снимки.
- •Двухфазный commit.
- •Фаза подготовки.
- •Фаза подтверждения
- •Создание точки подтверждения.
- •Проектирование распределенных приложений.
- •Уникальность имен.
- •Последовательности в распределенных транзакциях.
- •Обработка ошибок в удаленных процедурах.
- •Разрешение проблем распределенных транзакций
- •Снимки. Управление ими.
- •Спецификация определяющего запроса снимка (as ...).
- •Порядок создания снимков и их журналов:
- •Альтернативы снимкам.
- •Дублирование таблиц с помощью триггеров:
- •Создание триггера
- •Управление снимками
- •Создание снимков
- •Установление параметров памяти для снимков.
- •Конфигурирование автоматических обновлений
- •Ручное обновление снимков.
- •Связь между декларативными ограничениями и снимками.
- •Управление журналами снимков.
- •Внутренняя реализация журнала снимка.
- •Удаление журнала снимков.
- •Управление распределенными бд администратором.
- •Принципы простроения глобального имени бд:
- •Безопасность бд.
- •Характеристики и квоты различных табличных пространств.
- •Ресурсные лимиты и профили пользователей.
- •Лицензирование.
- •Привилегии и роли.
- •Защита таблиц.
- •Защита обзоров:
- •Усиление защиты таблиц через обзоры:
- •Защита процедур.
- •Табличные пространства и файлы данных Файлы данных
- •Табличное пространство
- •Объекты табличного пространства
- •Блок данных
- •Экстенты
- •Сегменты
- •Копирование и восстановление баз данных
- •Рекомендации по копированию баз данных.
- •Стратегии копирования Стратегии копирования в режиме no archive log
- •Стратегии копирования в режиме archive log
- •Процедуры копирования.
- •Процедура полного копирования базы данных
- •Восстановление
- •Опции предложений Audit и NoAudit.
- •Дополнительные опции по аудиту предложений:
- •Включение аудита
- •Выключение аудита.
- •Контролирование роста и размера аудиторского журнала.
- •Защита аудиторского журнала
- •Аудит с помощью триггеров
- •Поддержка национальных языков.
- •Лингвистическая сортировка.
- •Перекрытие стандартных умолчаний.
- •Форматы чисел и дат.
- •Объекты в Oracle.
- •Атрибуты
- •Сравнение объектов
- •Синтаксис объявления типов
- •Объявление и инициализация объектов
- •Вызов методов
- •Хранение объектов в бд
- •Использование оператора select
- •Вставка объектов
- •Обновление объектов
- •Удаление объектов
Проектирование распределенных приложений.
Необходимо решить такие проблемы:
где распределить данные для быстрого доступа;
как обеспечить уникальность имен;
как управлять соединениями через связи БД;
как проектировать распределенные запросы.
Выбор места распределения данных определяется:
количеством транзакций, вызываемых каждым узлом
объемом данных, используемым каждым узлом
характеристиками производительности и надежности сети
скоростью действия различных узлов и емкостью их дисков
критичностью доступа при отказе узла или связи
необходимостью ссылочной целостности между таблицами ( таблицы, связанные по FORANGE KEY, должны находится на одном сервере; эту проблему можно обйти с помощью триггеров)
Уникальность имен.
Oracle гарантирует, что внутри схемы имя объекта всегда уникально. Имя схемы внутри локальной сети тоже будет уникальным. Необходимо обеспечить уникальность имен и глобальных имен БД вручную.
Эта проблема решается вместе с администраторами БД и сети. Необходимо решить следующие вопросы:
вопрос о непосредственном имени БД и домена
вопрос об удаленной сессии (определить имя, под которым пользователь будет регистрироваться на удаленной станции; соединение – сессия в обычной ситуации сохраняется на все время локальной сессии пользователя, а при первом обращении к удаленной таблице открывается удаленная сессия, которая будет сохраняться, пока есть локальная сессия; но это бывает невыгодным при связи по телефонной линии, в таких случаях можно делать разрыв соединения, когда связь больше не нужна; разрыв соединения выполняется с помощью команды ALTER SESSION <close database link> <имя удаленной связи> )
Замечание. Вы должны обладать системной привилегией ALTER SESSION; нельзя выдавать описанную команду с параметром <close database link> из распределенной транзакции, которая выдала перед этим предложение, использующее эту связь. Ее можно выполнять только при откате или подтверждении транзакции. То же самое относится и к открытым курсорам, которые используют данную связь.
Последовательности в распределенных транзакциях.
К удаленным последовательностям можно обратиться в следующих случаях:
когда все последовательности, обновляемые таблицы (в том числе таблицы SELECT for UPDATE), столбцы Long и блокируемые таблицы, адресуемые в данном предложении, расположены на одном и том же узле; SELECT FOR UPDATE – специальная форма команды SELECT для создания вида, который используется для постоянного обновления;
когда, кроме последовательности, SQL-предложение обращается к еще хотя бы одной таблице.
Пример.
Неправильная запись
INSERT INTO invertory
SELECT seg1.nextval@warehouse, part_dese from partlist1@warehouse;
Ошибка! Invertory – локальная таблица, а последовательность взята удаленная, т.е. нарушено 1-ое правило.
Правильная запись
INSERT INTO invertory@warehouse
SELECT seg1.nextval@warehouse, partlist1 from partlist1@warehouse;
Ссылочная целостность ограничена декларативно по одной таблице, что не позволяет ссылаться таблице с вторичным ключом ( FORANGE KEY) на удаленную таблицу с первичным ключом ( PRIMARY KEY). Поэтому совет: используйте триггеры.
