Табличные пространства и файлы данных 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Табличные пространства и файлы данных



 

Файлы данных

Используемые данные БД Oracle логически хранятся в табличных пространствах, а физически – в файлах данных. В файлах данных содержатся все объекты (таблицы, индексы и т.д.). Объекты хранятся в табличных пространствах и могут располагаться в нескольких файлах данных.

Файлы данных – это физические структуры, каждая из которых связана с одним табличным пространством.

Табличное пространство

Вся БД Oracle состоит из одного или нескольких единиц логической памяти, называемых табличным пространством.

Каждое табличное пространство состоит из одного или нескольких файлов операционной системы. При создании объекта схемы (индексы, таблицы) создается сегмент этого объекта в предназначенном табличном пространстве базы данных. Табличным пространством можно управлять (архивировать, …).

Для хранения данных пользователей не рекомендуется использовать табличное пространство System. Рекомендуется создавать свое табличное пространство, используя команду CREATE TABLE SPACE. В момент создания файлов всегда нужно приблизительно оценивать объем БД, т.к. в дальнейшем изменения будут очень трудоемкими.

Если табличное пространство полностью заполнено, можно добавить файл данных, используя команду ALTER TABLESPACE с опцией atDatafile. Количество файлов данных не ограничено.

Табличное пространство может быть запущено или нет (online/offline). Табличное пространство System всегда находится в состоянии online. Администратор системы может перевести табличное пространство в состояние offline для того чтобы:

§ сделать часть БД недоступной;

§ выполнить резервное копирование offline-вого пространства;

§ сделать приложение вместе с его группой таблиц недоступным на время обновления или сопровождения приложения.

Объекты табличного пространства

1) Блок данных – это минимальный элемент, который Oracle считывает или записывает на диск. Один блок данных соответствует фиксированному числу байт физического пространства БД на диске. Размер этого блока зависит от используемой ОС, но обычно не превышает установленного максимума (для Oracle - 4Кб).

2) Экстенты – специфическое число смежных блоков данных, распределяемых для хранения специфического типа информации. При создании любого объекта всегда указывается размер начального и дополнительного экстентов. Например, при создании таблиц создается начальный экстент. При заполнении таблицы экстент заполняется и нужно указать новый экстент. Объект не может занимать дробное число экстентов.

3) Сегмент – совокупность экстентов, распределенных для специфического типа структуры данных. Для каждой таблицы всегда создается сегмент данных, для каждого индекса создается свой сегмент индекса.

Блок данных

Блок данных – это наименьшая единица ввода/вывода. Формат данных один и тот же, независимо от того, что содержит блок данных.

Блок данных имеет следующие поля:

§ заголовок (содержит адрес, тип сегмента);

§ оглавление таблиц (информация о том какие таблицы имеют строки в этом блоке);

§ оглавление строк (информация о действительных строках в блоке);

§ данные строк (содержит данные таблицы или индексы). Данные могут переходить из одного блока в другой.

§ свободное пространство (используется для вставки новых строк и обновления строк, требующих дополнительного пространства).

Для каждого блока определены следующие параметры:

§ PCTFREE – определяет сколько в процентах должно остаться свободного пространства в блоке, чтобы Oracle посчитал, что данный блок заполнен и перешел заполнять к следующему. Это свободное пространство используется для транзакций.

§ PCTUSED – определяет сколько в процентах должно быть свободного места, чтобы блок можно было заполнять снова.

Экстенты

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

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

Когда все блоки в начальном сегменте заполняются, 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 (специальные табличные пространства).



Поделиться:


Последнее изменение этой страницы: 2017-01-26; просмотров: 788; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.205.154 (0.009 с.)