Продолжаем изучать основные свойства СУБД Oracle.
Предлагаю вам мой перевод части документации Oracle Database Concepts 10g Release 2 (10.2) B14220-02.
Обзор логической структуры базы данных
Tablespaces (Табличные пространства)
База данных разделяется на логические структурные единицы - Tablespaces, эти единицы объединяют логически связанные структуры. Например, табличные
пространства часто хранят все объекты приложения, упрощая некоторые административные действия.
Каждая база данных логически разделена на одно или больше табличных пространств. Для каждого табличного пространства создается один или несколько
datafile'ов. В Datafile'ах физически хранятся данные табличного пространства. Емкость табличного пространства определяется, как сумма размеров всех
datafile'ов, входящих в его состав.
Каждая база данных Oracle содержит следующие табличные пространства: SYSTEM и SYSAUX, они создаются автоматически при создании базы. Тип табличных
пространств по умолчанию: smallfile tablespace. SYSTEM и SYSAUX создаются как пространства smallfile.
Существует и другой тип табличных пространств - bigfile tablespace. Этот тип позволяет заменить множество мелких файлов одним большим. Этот тип
создан для 64-разрядных систем и позволяет управлять файлами очень большого размера. Современная база данных Oracle может быть размером до 8 exabytes.
Управление datafile'ами абсолютно прозрачно для пользователя, т.е. пользователь работает на уровне табличного пространства, а не с каждым файлом по
отдельности.
Online и Offline табличные пространства.
Табличное пространство может быть online(доступное) или offline (недоступное). Обычно табличное пространство находится доступно для пользователей
(online), однако администратор может сделать его временно недоступным (offline) для решения своих административных задач. Этот механизм значительно
упрощает администрирование.
Oracle Data Blocks (блоки данных Oracle)
Наименьшая единица хранения данных в Oracle - блок данных. Каждый блок данных соответствует определенному количеству байт на физическом носителе.
Стандартный размер блока определяется переменной DB_BLOCK_SIZE. Дополнительно можно определить до пяти параметров. База банных использует и размещает
свободное пространство в блоках данных.
Extents
Следующий уровень организации хранения данных - extent. Extent - это особый набор смежных блоков данных, полученный за одно расширение занимаемого
пространства, т.е. (Прим. переводчика: при необходимости расширить табличное пространство Oracle выделяет на диске новое место - набор блоков, это и
есть Extent, т.е. Oracle расширяется, прирастает Extent'ами - блоками данных).
Segments (сегменты)
Следующий уровень хранения - сегмент. Сегмент - это набор extent'ов, предназначенный для хранения логических структур определенного вида.
Ниже описаны возможные типы сегментов.
Data segment (сегмент данных)
Каждая таблица, не входящая в состав кластера имеет сегмент данных. Все данные таблицы хранятся в extent'ах сегмента данных. Сегмент данных создается
для каждого раздела распределенных (partitioned) таблиц. Данные таблиц, входящих в кластер, хранятся в кластерном сегменте данных.
Index segment (индексный сегмент)
Индекс хранит свои данные в индексном сегменте. Для каждого раздела распределенного (partitioned) сегмента создается свой индексный сегмент.
Temporary segment (временный сегмент)
Временный сегмент создается, если он нужен для выполнения SQL-запроса. После завершения запроса сегмент возвращается в систему для дальнейшего
использования.
Rollback segment (cсегмент отката)
Если вы работаете в режиме автоматического управления откатами, то сервер базы данных управляет пространством отката, используя табличные пространства.
Oracle рекомендует использовать именно этот режим работы.
Предыдущие версии Oracle использовали сегменты отката для хранения необходимой при откате информации. Эта информация использовалась во время процедуры
восстановления, а также для отката пользовательских трансакций, для которых не была выполнена команда commit. В настоящее время Oracle не использует
сегменты отката, им на смену пришел механизм, основанный на табличных пространствах.
Oracle применяет сегмент отката SYSTEM для выполнения системных трансакций. Существует только один SYSTEM сегмент отката, он создается автоматически
при создании базы данных, и пользователю нет нужды заботиться о его функционировании.
Oracle автоматически выделяет место на диске, когда существующие extent'ы полностью использованы. Т.е. когда все extent'ы сегмента использованы,
Oracle автоматически выделяет дополнительные extent'ы для сегмента. Поскольку extent'ы выделяются по мере необходимости, сегмент может получиться
фрагментированным, т.е. extent'ы могут располагаться не последовательно.