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

Экстенты

Экстенты – это логические единицы распределения пространства БД, состоящие из определенного числа непрерывных блоков.

Независимо от типа, каждый сегмент в БД создается с экстентом как минимум одного типа. Исключением являются сегменты отката – они имеют два экстента.

Когда все блоки в начальном сегменте заполняются, Oracle дополнительно выделяет сегмент (инкрементальный, extended), пока в табличном пространстве не исчерпается место.

Распределение сегментов (экстенты для сегментов).

  1. Oracle отыскивает первый свободный непрерывный участок блоков данных, составляющих размер дополнительного экстента. Если точное совпадение не найдено, Oracle ищет множество непрерывных блоков данных, размером не меньше требуемого. В противном случае Oracle соединяет все блоки данных в один непрерывный. Если экстент не может быть распределен после вторичного поиска, возвращается ошибка.

  2. После того, как Oracle находит необходимое свободное место в табличном пространстве, часть этого свободного места, соответствующая значению инкрементирующего экстента, распределяется этому экстенту. Оставшаяся часть пространства помечается как свободная (если она больше пяти блоков).

  3. Заголовок сегмента и словарь данных обновляется, чтобы показать, что новый экстент распределен и что распределенное пространство больше не свободно.

Освобождение экстентов

Экстенты сегмента не возвращаются в табличное пространство, пока сегмент не освобождается как единица (например, при удалении таблицы или кластера).

Исключения:

  • при выполнении операции TRUNCATE для таблицы все дополнительные экстенты освобождаются для таблицы;

  • Oracle сам освобождает экстенты для сегментов отката.

Сегменты

Сегмент – это набор экстентов, содержащих все данные для конкретного типа структуры логического пространства внутри табличного пространства.

БД Oracle может содержать четыре типа сегментов:

  • сегменты данных;

  • сегменты индексов;

  • сегменты отката;

  • временные сегменты.

Сегменты данных создаются косвенно командами CREATE CLASTER, CREATE TABLE, CREATE SNAPSHOT. При создании этих объектов можно указывать размер начального и дополнительного экстентов.

Сегмент индекса. Каждый индекс в БД содержит единственный сегмент индекса, включающий все данные этого индекса. Косвенно сегмент индекса можно создавать командой CREATE INDEX. Индекс создается по primary key и по unique.

Сегмент отката. Каждая БД имеет один или несколько сегментов отката (часть базы данных, в которой записываются действия транзакции). Всегда есть сегмент отката System. Сегмент отката может находиться в состоянии online или offline.

Временные сегменты используются для того, чтобы выделить пространство для промежуточных типов SQL. Использование временного сегмента могут потребовать предложения CREATE INDEX, SELECT…ORDER BY, SELECT DISTINCT, SELECT…GROUP BY, SELECT…UNION, SELECT…INTERSECT, SELECT…MINUS. Временные сегменты создаются обычно в Temporary Table Space (специальные табличные пространства).

Копирование и восстановление баз данных

Существует два режима копирования в Oracle:

  • когда Oracle запускается в режиме NO ARCHIVE LOG – похоже на обычное копирование; не гарантируется что при восстановлении данных все данные восстановятся;

  • режим ARCHIVE LOG – восстанавливаются полностью все данные до момента сбоя, даже в том случае, когда носитель полностью вышел из строя, т.к. создаются журнальные файлы. Лучше когда система обладает тремя винчестерами – 1-й использовать для хранения самой БД, 2-й и 3-й – для хранения двух копий журнальных файлов. Тогда при сбое можно полностью восстановить базу данных через журнальные файлы (если архивирование базы данных проводилось регулярно).

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