- •Конспект лекций не официальный, возможны ошибки! Еремеев н.Б.
- •Распределенная база данных
- •Пример транзакции
- •Пример рбд
- •Прямые и косвенные соединения
- •Объекты: схемы и именования в рбд
- •Удаленные и распределенные предложения
- •Прозрачность в рбд. Прозрачность местоположения.
- •Прозрачность в системе рбд
- •Архитектура рбд Oracle
- •Прозрачность транзакций.
- •Прозрачность дублирования.
- •Разрешение имен в рбд
- •Снимки.
- •Двухфазный commit.
- •Фаза подготовки.
- •Фаза подтверждения
- •Создание точки подтверждения.
- •Проектирование распределенных приложений.
- •Уникальность имен.
- •Последовательности в распределенных транзакциях.
- •Обработка ошибок в удаленных процедурах.
- •Разрешение проблем распределенных транзакций
- •Снимки. Управление ими.
- •Спецификация определяющего запроса снимка (as ...).
- •Порядок создания снимков и их журналов:
- •Альтернативы снимкам.
- •Дублирование таблиц с помощью триггеров:
- •Создание триггера
- •Управление снимками
- •Создание снимков
- •Установление параметров памяти для снимков.
- •Конфигурирование автоматических обновлений
- •Ручное обновление снимков.
- •Связь между декларативными ограничениями и снимками.
- •Управление журналами снимков.
- •Внутренняя реализация журнала снимка.
- •Удаление журнала снимков.
- •Управление распределенными бд администратором.
- •Принципы простроения глобального имени бд:
- •Безопасность бд.
- •Характеристики и квоты различных табличных пространств.
- •Ресурсные лимиты и профили пользователей.
- •Лицензирование.
- •Привилегии и роли.
- •Защита таблиц.
- •Защита обзоров:
- •Усиление защиты таблиц через обзоры:
- •Защита процедур.
- •Табличные пространства и файлы данных Файлы данных
- •Табличное пространство
- •Объекты табличного пространства
- •Блок данных
- •Экстенты
- •Сегменты
- •Копирование и восстановление баз данных
- •Рекомендации по копированию баз данных.
- •Стратегии копирования Стратегии копирования в режиме no archive log
- •Стратегии копирования в режиме archive log
- •Процедуры копирования.
- •Процедура полного копирования базы данных
- •Восстановление
- •Опции предложений Audit и NoAudit.
- •Дополнительные опции по аудиту предложений:
- •Включение аудита
- •Выключение аудита.
- •Контролирование роста и размера аудиторского журнала.
- •Защита аудиторского журнала
- •Аудит с помощью триггеров
- •Поддержка национальных языков.
- •Лингвистическая сортировка.
- •Перекрытие стандартных умолчаний.
- •Форматы чисел и дат.
- •Объекты в Oracle.
- •Атрибуты
- •Сравнение объектов
- •Синтаксис объявления типов
- •Объявление и инициализация объектов
- •Вызов методов
- •Хранение объектов в бд
- •Использование оператора select
- •Вставка объектов
- •Обновление объектов
- •Удаление объектов
Ручное обновление снимков.
Необходимо вызвать процедуру REFRESH из DBMS_SNAPSHOT:
DBMS_SNAPSHOT.REFRESH(‘[схема:] имя’ [,’опция освежения’]);
Где dbms_snapshot – пакет; refresh – сама процедура; схема – схема пользователя (по умолчанию - текущая); имя – имя снимка; опция освежения – может иметь значение :
F – быстрое освежение;
C – полное освежение;
? – опция освежения по умолчанию (которая указана в параметре Refresh).
Существует возможность обновления снимков, которая является обязательной для автоматического обновления. Для этого необходимо выполнить процедуру DBMS_SNAPSHOT.REFRESH_ALL. Она не обновляет снимки, которые не сконфигурированы для автоматического обновления.
Привилегии, необходимые для ручного обновления снимков:
ALTER ANY SNAPSHOT
SELECT к журналу по главной таблице.
Если ссылочная целостность введена в действие по одной главной таблице или между несколькими главными таблицами, обновлять связанные с ними снимки нужно так, чтобы ссылочная целостность распространялась на снимки (ассоциированные). При обновлении снимков нужно запретить модификацию главных таблиц (заблокировать в монопольном режиме LOCTABLE).
Связь между декларативными ограничениями и снимками.
Нельзя создавать декларативные ограничения по снимкам или их журналам. Снимки можно индексировать. Для этого нужно создать индекс по столбцу базовой таблицы снимка.
Управление журналами снимков.
Создание журнала снимка осуществляется командой:
CREATE SNAPSHOT LOG ON emp
TABLESPACE users
STORAGE (initial 10K next pctincrease 50)
PCTFREE 5;
Имя журнала формируется системой и вам не надо следить за его уникальностью.
Внутренняя реализация журнала снимка.
Oracle создает таблицу для хранения элементов ROWID и отметок времени строк, обновленных в главной таблице. Данная таблица имеет следующее имя (через него можно получить доступ к этой таблице): MLOG$_<имя главной таблицы>. ROWID физически указывает, где находится запись(строка) в БД, и представляет собой псевдостолбец.
Oracle создает триггеры строк AFTER по главной таблице, чтобы вставлять в журнал снимков ROWID и отметки времени вставляемых, обновляемых, удаляемых строк из главной таблицы. Этот триггер имеет имя TLOG$_<имя главной таблицы>.
Замечание: невозможно для главной таблицы, имеющей журнал, создать триггер AFTER. Базовая таблица (журнал) и ассоциированный триггер для журнала снимков содержится в той же схеме, что и главная таблица. Рекомендацией является совет не обновлять эти объекты. Назначайте PCTFREE=0 PCTUSED=100.
Привилегии для создания журнала снимков:
CREATE TABLE
CREATE TRIGGER
CREATE ANY TABLE
CREATE ANY TRIGGER
Строка в журнале занимает примерно 13 байтов (6 байтов – ROWID, 7 – отметка времени).
Проблемы, возникающие при работе со снимками и их журналами:
Oracle автоматически отслеживает обновленные строки и удаляет старые; однако, если журнал используется несколькими снимками, Oracle не удаляет строки, пока эти строки не перестанут использоваться другими снимками; данная ситуация может возникнуть в том случае, если имеют место следующие случаи:
один из снимков не сконфигурирован для автоматического обновления
один из снимков имеет слишком большой интервал обновления
сбой сети помешал автоматическому обновлению одного из снимков
Средства борьбы:
Обновить снимки, ассоциированные с этим журналом.
Сжать журнал, удалив из него строки, необходимые лишь N- самым старым снимкам.
DBMS_SNAPSHOT.PURGE_LOG(‘ таблица‘, <количество>[,DELETE] );
“таблица” – имя главной таблицы, “количество” – указывает число снимков, обновлявшихся давно, чьи строки вы хотите удалить из журнала снимков (если вы укажете 2, то будут удалены строки двух наиболее старых снимков). Чтобы удалить из журнала все записи необходимо задать число больше 9999. Необязательный параметр DELETE гарантирует, что из журнала снимков будут удалены строки хотя бы для одного снимка.
