Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
RBD_END.DOC
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
548.35 Кб
Скачать

Дублирование таблиц с помощью триггеров:

  • Каждая копия может, как опрашиваться, так и обновляться, причем все изменения распространяются автоматически на каждую копию.

  • Удаленное обновление осуществляется триггерами, подтверждается транзакциями пользователя, содержащими UPDATE, посредством обычного двухфазного COMMIT.

  • Необходимо помнить, что при выключении дублирующих триггеров (во время загрузки информации) получим неэквивалентные таблицы.

  • При сбое удаленные копии таблиц нельзя устранять, пока не будет устранен сбой.

Создание триггера

  • Копируемая таблица обязательно должна иметь Primary Key;

  • Необходимо создать специальный флажковый столбец с типом данных Char(1), он необходим для предотвращения зацикливания каскадов триггеров;

  • Необходимо создать по каждой копии таблицы локальный обзор, который будет скрывать наличие флажкового столбца от пользователей;

  • Требуется создать необходимые связи БД в каждой БД для этой таблицы.

Примеры написания триггера.

  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;

  1. Триггер на 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;

  1. Триггер на 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;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]