- •Конспект лекций не официальный, возможны ошибки! Еремеев н.Б.
- •Распределенная база данных
- •Пример транзакции
- •Пример рбд
- •Прямые и косвенные соединения
- •Объекты: схемы и именования в рбд
- •Удаленные и распределенные предложения
- •Прозрачность в системе рбд
- •Архитектура рбд Oracle
- •Прозрачность в рбд. Прозрачность местоположения.
- •Прозрачность транзакций.
- •Прозрачность дублирования.
- •Разрешение имен в рбд
- •Снимки.
- •Двухфазный commit.
- •Фаза подготовки.
- •Фаза подтверждения
- •Создание точки подтверждения.
- •Проектирование распределенных приложений.
- •Уникальность имен.
- •Последовательности в распределенных транзакциях.
- •Обработка ошибок в удаленных процедурах.
- •Разрешение проблем распределенных транзакций
- •Снимки. Управление ими.
- •Спецификация определяющего запроса снимка (as ...).
- •Порядок создания снимков и их журналов:
- •Альтернативы снимкам.
- •Дублирование таблиц с помощью триггеров:
- •Создание триггера
- •Управление снимками
- •Создание снимков
- •Установление параметров памяти для снимков.
- •Конфигурирование автоматических обновлений
- •Ручное обновление снимков.
- •Связь между декларативными ограничениями и снимками.
- •Управление журналами снимков.
- •Внутренняя реализация журнала снимка.
- •Удаление журнала снимков.
- •Управление распределенными бд администратором.
- •Принципы простроения глобального имени бд:
- •Безопасность бд.
- •Характеристики и квоты различных табличных пространств.
- •Ресурсные лимиты и профили пользователей.
- •Лицензирование.
- •Привилегии и роли.
- •Защита таблиц.
- •Защита обзоров:
- •Усиление защиты таблиц через обзоры:
- •Защита процедур.
- •Табличные пространства и файлы данных Файлы данных
- •Табличное пространство
- •Объекты табличного пространства
- •Блок данных
- •Экстенты
- •Сегменты
- •Копирование и восстановление баз данных
- •Рекомендации по копированию баз данных.
- •Стратегии копирования Стратегии копирования в режиме no archive log
- •Стратегии копирования в режиме archive log
- •Процедуры копирования.
- •Процедура полного копирования базы данных
- •Восстановление
- •Опции предложений Audit и NoAudit.
- •Дополнительные опции по аудиту предложений:
- •Включение аудита
- •Выключение аудита.
- •Контролирование роста и размера аудиторского журнала.
- •Защита аудиторского журнала
- •Аудит с помощью триггеров
- •Поддержка национальных языков.
- •Лингвистическая сортировка.
- •Перекрытие стандартных умолчаний.
- •Форматы чисел и дат.
- •Объекты в Oracle.
- •Атрибуты
- •Сравнение объектов
- •Синтаксис объявления типов
- •Объявление и инициализация объектов
- •Вызов методов
- •Хранение объектов в бд
- •Использование оператора select
- •Вставка объектов
- •Обновление объектов
- •Удаление объектов
Дублирование таблиц с помощью триггеров:
Каждая копия может, как опрашиваться, так и обновляться, причем все изменения распространяются автоматически на каждую копию.
Удаленное обновление осуществляется триггерами, подтверждается транзакциями пользователя, содержащими UPDATE, посредством обычного двухфазного COMMIT.
Необходимо помнить, что при выключении дублирующих триггеров (во время загрузки информации) получим неэквивалентные таблицы.
При сбое удаленные копии таблиц нельзя устранять, пока не будет устранен сбой.
Создание триггера
Копируемая таблица обязательно должна иметь Primary Key;
Необходимо создать специальный флажковый столбец с типом данных Char(1), он необходим для предотвращения зацикливания каскадов триггеров;
Необходимо создать по каждой копии таблицы локальный обзор, который будет скрывать наличие флажкового столбца от пользователей;
Требуется создать необходимые связи БД в каждой БД для этой таблицы.
Примеры написания триггера.
Триггер на INSERT
CREATE TRIGGER emp_ins
AFTER INSERT ON emp_base
FOR EACH ROW
WHEN (new.flags is null)
BEGIN
INSERT INTO fred.emp.base@sf VALUES(:new.empno, new.deptno, ‘T’)
END;
Триггер на DELETE
CREATE TRIGGER emp_del
AFTER DELETE ON emp_base
FOR EACH ROW
DECLARE
Mutating EXCEPTION;
PRAGMA exception_init (mutating, -4091)
BEGIN
DELETE fred.emp.base@sf
WHERE empno=:old.empno;
EXCEPTION WHEN mutating THEN NULL;
END;
Триггер на UPDATE
CREATE TRIGGER emp_upd
AFTER UPDATE ON emp_base
FOR EACH ROW
BEGIN
IF NOT updating(‘flag’) THEN
UPDATE fred.emp_base@sf SET
Empno=:new.empno;
Deptno=:new.deptno;
Flag=’T’
WHERE empno=:old.empno;
ENDIF
END;
Управление снимками
Необходимо выполнить программу (script - файл) CATSNAP.sql на БД, содержащей главную таблицу и на БД, содержащей ее снимки. Данный script нужно выполнять в схеме пользователя SYS (он расположен в каталоге ADMIN). Скрипт нужно выполнять, если Oracle был установлен без процедурной опции.
Выполнение скрипта обеспечивает создание структур, необходимых для создания снимков. Для хранения снимков нужно выполнить скрипт dbmssnap.sql (выполнение производить перед началом администрирования снимков). Он создает пакет процедур, необходимый для обновления снимков. Его нужно исполнить на основной БД и на БД, содержащих снимки в схеме пользователя SYS.
Обновление снимков не происходит автоматически. В ОС имеется специальная программа, которая будет подключаться к Oracle и выполнять запуск процедуры обновления снимков.
Администратор ОС должен создать программу, запускающую скрипт для работы Oracle. Эта программа должна подключаться к БД, содержащей снимки, и запустить процедуру DBMS_SNAPSHOT.REFRESH_ALL(). ОС Novell раз в три - четыре дня должна запускать файл REFR.ncf, содержащий всего одну команду LOAD SVRMGR Refr.sql. Эта программа обеспечит подключение к Oracle.
Файл Refr.sql содержит:
CONNECT scott/Tiger@K108; (определяет подсоединение к серверу)
EXECUTE DBMS_SNAPSHOT.REFRESH_ALL();
DISCONNECT;
EXIT;
