- •Конспект лекций не официальный, возможны ошибки! Еремеев н.Б.
- •Распределенная база данных
- •Пример транзакции
- •Пример рбд
- •Прямые и косвенные соединения
- •Объекты: схемы и именования в рбд
- •Удаленные и распределенные предложения
- •Прозрачность в системе рбд
- •Архитектура рбд Oracle
- •Прозрачность в рбд. Прозрачность местоположения.
- •Прозрачность транзакций.
- •Прозрачность дублирования.
- •Разрешение имен в рбд
- •Снимки.
- •Двухфазный commit.
- •Фаза подготовки.
- •Фаза подтверждения
- •Создание точки подтверждения.
- •Проектирование распределенных приложений.
- •Уникальность имен.
- •Последовательности в распределенных транзакциях.
- •Обработка ошибок в удаленных процедурах.
- •Разрешение проблем распределенных транзакций
- •Снимки. Управление ими.
- •Спецификация определяющего запроса снимка (as ...).
- •Порядок создания снимков и их журналов:
- •Альтернативы снимкам.
- •Дублирование таблиц с помощью триггеров:
- •Создание триггера
- •Управление снимками
- •Создание снимков
- •Установление параметров памяти для снимков.
- •Конфигурирование автоматических обновлений
- •Ручное обновление снимков.
- •Связь между декларативными ограничениями и снимками.
- •Управление журналами снимков.
- •Внутренняя реализация журнала снимка.
- •Удаление журнала снимков.
- •Управление распределенными бд администратором.
- •Принципы простроения глобального имени бд:
- •Безопасность бд.
- •Характеристики и квоты различных табличных пространств.
- •Ресурсные лимиты и профили пользователей.
- •Лицензирование.
- •Привилегии и роли.
- •Защита таблиц.
- •Защита обзоров:
- •Усиление защиты таблиц через обзоры:
- •Защита процедур.
- •Табличные пространства и файлы данных Файлы данных
- •Табличное пространство
- •Объекты табличного пространства
- •Блок данных
- •Экстенты
- •Сегменты
- •Копирование и восстановление баз данных
- •Рекомендации по копированию баз данных.
- •Стратегии копирования Стратегии копирования в режиме no archive log
- •Стратегии копирования в режиме archive log
- •Процедуры копирования.
- •Процедура полного копирования базы данных
- •Восстановление
- •Опции предложений Audit и NoAudit.
- •Дополнительные опции по аудиту предложений:
- •Включение аудита
- •Выключение аудита.
- •Контролирование роста и размера аудиторского журнала.
- •Защита аудиторского журнала
- •Аудит с помощью триггеров
- •Поддержка национальных языков.
- •Лингвистическая сортировка.
- •Перекрытие стандартных умолчаний.
- •Форматы чисел и дат.
- •Объекты в Oracle.
- •Атрибуты
- •Сравнение объектов
- •Синтаксис объявления типов
- •Объявление и инициализация объектов
- •Вызов методов
- •Хранение объектов в бд
- •Использование оператора select
- •Вставка объектов
- •Обновление объектов
- •Удаление объектов
Вставка объектов
Существует две основных формы вставки объектов:
Определяют и вставляют все атрибуты, которые есть у объекта persons.
BEGIN
INSERT INTO persons values ('Jenifer', 'Lapidus',…);
С использованием конструктора
INSERT INTO persons values (Person ('Jenifer', 'Lapidus',…));
Модификация оператора INSERT.
В операторе INSERT появилась возможность возвращать в локальную переменную ссылку на объект в таблице, т.е. после вставки объекта можно какой-то локальной переменной присвоить ссылку на объект.
Пример
DECLARE
p1_ref REF person,
p2_ref REF person,
…
BEGIN
INSERT INTO persons p VALUES (Person ('Paul','Chang', …))
RETURNING ref(p) INTO p1_ref;
INSERT INTO persons2
SELECT VALUES (p) FROM persons p
WHERE p.last_name LIKE '%Jones'; - в таблицу persons2 копируются все записи таблицы persons, у которых атрибут last_name подобен Jones.
Еще одна особенность вставок:
CREATE TABLE department (
Dept_name varchar2(20),
Manager person,
Location varchar2(20));
/
Запись в такую таблицу вставляется следующим образом:
INSERT INTO department
VALUES (‘payroll’,person (‘Alan’,’Tsai’,…),’Los Angeles’);
В отличие от предыдущей ситуации, где можно вернуть указатель на объект, здесь этого сделать нельзя, т.к. можно вернуть только указатель на всю строку ROWID, а не указатель на поле.
Обновление объектов
Пример:
…
BEGIN
UPDATE persons p SET p.home_address.street=’341 Oakdene Ave’
WHERE p.last_name=’Brody’;
…
UPDATE persons p SET p=Person(‘Beth’,’Steinberg’,…)
WHERE p.last_name=’Steinway’;
END;
Удаление объектов
Пример:
…
BEGIN
DELETE from persons p
WHERE p.home_address.street=’108 Palm Dr’;
…
END;
