- •Хранение баз данных
- •Табличные области
- •Табличная область system
- •Другие табличные области
- •Оперативные и отключенные табличные области
- •Постоянные и временные табличные области
- •Табличные области только для чтения и чтения/записи
- •Дополнительные сведения о файлах данных
- •Число файлов данных для табличной области
- •Использование пространства файлов данных
- •Сращивание свободного пространства в файлах данных табличной области
- •Размеры файлов данных
- •Повреждение файлов данных
- •Оперативные и отключенные файлы данных
- •Управляющие файлы
- •Зеркально отображенные управляющие файлы
- •Сегменты, экстенты и блоки данных
- •Сегменты данных и индексные сегменты
- •Временные сегменты
- •Временные табличные области
- •Сегменты отката
- •Запись информации в сегменты отката
- •Сегмент отката system
- •Несколько сегментов отката
- •Назначение конкретных сегментов отката
- •Оперативные и отключенные сегменты отката
- •Общие и частные сегменты отката
- •Отложенные сегменты отката
- •Другие функции сегментов отката
- •Блоки данных
- •Выделение блоков данных
- •Доступность блоков данных и списки свободных блоков
- •Сцепление строк и размер блока данных
- •Параметры хранения объектов
- •Размещение табличных областей
- •Параметры для экстентов
- •Initial 500k
- •Специальные параметры хранения данных для сегментов отката
- •Initial 100k
- •Параметры для блоков данных
- •Параметры для списков свободных блоков
- •Пороги блоков
- •Элементы транзакций
- •Установки по умолчанию для хранения объектов
- •Установки по умолчанию для пользователей
- •Установки по умолчанию для табличных областей
- •Initial 100k
- •Уникальность хранения мультимедийных данных
- •Дополнительные сведения о локаторах lob
- •Разделение данных
- •Разделенные таблицы
- •Размещение строк в разделах данных
- •Использование maxvalue
- •Разделенные индексы
- •Варианты создания разделенных индексов
- •Равноразделенные объекты
- •Глобальные разделенные индексы
- •Имена таблиц с учетом разделов
- •Управление разделением
- •Соответствие индексов и таблиц
- •Контрольные вопросы.
Временные табличные области
Для того чтобы оптимизировать процесс выделения временных сегментов, в базах данных Oracleможно создавать временные табличные области, являющиеся большими временными сегментами. С помощью временной табличной области можно более эффективно выделять временное рабочее пространство для транзакций, так как при этомOracleне нужно выделять по мере необходимости физические сегменты, а затем отменять выделение; в этом случае просто вводятся и удаляются элементы таблицы сегментов табличной области.
Сегменты отката
Результатом выполнения любой транзакции может стать либо её завершение, либо её откат. Как правило, транзакция завершается (commit), при этом все внесенные ею изменения записываются в базу данных. Откат (rollback) транзакции отменяет все её результаты, как если бы она никогда не выполнялась. Чтобы гарантировать откат транзакции,Oracleдолжна следить за данными, модифицируемыми транзакцией, до тех пор, пока она не завершится или не будет выполнен её откат.
Для записи данных отката транзакции в Oracleсуществуют специальные сегменты, называемые сегментами отката (rollback segments). Иногда их называют сегментами отмены (undo segments). Когда выполняется откат транзакции,Oracleсчитывает нужные данные в сегменте отката, чтобы воссоздать информацию в том виде, в каком она была до изменения её транзакцией. На рис. $.6 показано, как для отмены результатов выполнения откатываемой транзакции используются сегменты отката.
Запись информации в сегменты отката
Oracleзаписывает информацию в сегменты отката не так, как это происходит с сегментами других видов. На рис. $.7 показано, как производится запись информации в экстенты сегмента отката.
Как можно увидеть на рис. $.7, сегмент отката представляет собой циклическую группу экстентов. Когда транзакции записывают информацию в текущий экстент сегмента отката и в итоге заполняют его информацией отката, точка записи переходит, или поворачивается (wrap) к следующему экстенту сегмента и запись информации продолжается. Если транзакция настолько продолжительна, что она прокручивает все экстенты сегмента отката и при этом заполняется текущий экстент,Oracleприходится выделять дополнительный экстент для сохранения ранее записанной информации, которая может потребоваться для отката длительной транзакции. Если сегменты отката становятся больше своего первоначального размера,Oracleможет сократить их до оптимального числа экстентов. Позже будет рассказано о некоторых параметрах хранения, устанавливаемых для управления выделением экстентов для сегментов отката.
Сегмент отката system
Для каждой базы данных Oracleсуществует, по меньшей мере, один сегмент отката, называемыйSYSTEM(системный). При создании новой базы данных в табличной областиSYSTEMавтоматически создается сегмент откатаSYSTEM.
Сам по себе сегмент отката SYSTEMне может обеспечить нормальное функционирование производственной системы базы данных. После создания новой базы данных необходимо создать дополнительные сегменты отката, которые поддержат на должном уровне запланированную нагрузку на базу данных со стороны транзакций.
Несколько сегментов отката
Как правило, для базы данных Oracleсоздается несколько сегментов отката, которые размещаются в табличной области, специально отведенной для хранения их информации. Число сегментов отката для базы данных не ограничивается. Каждый такой сегмент может иметь собственные размеры и атрибуты хранения. О хранении сегментов, в том числе и о хранении сегментов отката, более подробно рассказано ниже.
Когда начинает выполняться новая транзакция, Oracleавтоматически назначает ей доступный сегмент отката базы данных. Чтобы распределить нагрузку среди всех доступных сегментов отката это назначение производится по алгоритму циклического обслуживания, иногда называемому каруселью (round-robin).
Все изменения, вносимые транзакцией, регистрируются в назначенном ей сегменте отката. Один сегмент может применяться для нескольких транзакций, но одна транзакция не может использовать более одного сегмента отката.