Блоки Oracle

Экстенты

Сегменты

Сегмент — общее имя, обозначающее какой-либо объект, который занимает место в файлах базы данных. Например, сегменты таблиц (сегменты данных), индексные сегменты, сегменты отката, временные сегменты и сегмент кэша (сегмент начальной загрузки). Сегмент использует определенное число блоков Oracle, которые находятся в одном табличном пространстве (хотя сами блоки могут принадлежать различным файлам, образующим табличное пространство).

 

Внешняя память для какого-либо объекта в базе данных выделяется порциями из определенного числа блоков. В файлах базы данных эти блоки должны быть смежными. Группа смежных блоков называется экстентом. Например, когда создается таблица с использованием установок по умолчанию, для самого первого экстента таблицы распределяется пять блоков Oracle (начальный экстент). По мере добавления и модификации строк в таблице пять блоков заполняются данными. Если последний блок заполнен, и должны быть вставлены новые строки, база данных автоматически выделяет для таблицы новый набор блоков (пять блоков), и новые строки вставляются в новый набор блоков. Это выделение дополнительных областей хранения (дополнительных экстентов) продолжается до тех пор, пока не будет исчерпано свободное место в табличном пространстве. Таблица начинается с одного начального экстента и затем выделяется другой (вторичный) экстент. Блоки экстента должны быть смежными в файле.

После того как экстент выделен сегменту (таблице), эти блоки не могут использоваться другим объектом базы данных, даже если все строки таблицы удалены. Таблицу нужно уничтожить (drop) или очистить (truncate), чтобы освободить внешнюю память, выделенную данной таблице. Исключение из этого правила - сегменты отката, которые могут динамически освобождать выделенною ям память.

 

Oracle "разбивает" файлы базы данных при их первоначальном создании на блоки Oracle. В результате для программного обеспечения СУБД упрощается работа с файлами и чтение данных в области оперативной памяти.

Эти блоки обычно имеют размер 1 KB (значение по умолчанию для системы PC-DOS), 2 KB (значение по умолчанию для большинства UNIX машин и VAX/VMS), 4 KB (значение по умолчанию для мэйнфреймов типа IBM) или больше. Файл базы данных размером 50 MB содержал бы 25600 блоков Oracle, при размере блока в 2 KB (50 МВ/2 KB).

Размер блока должен быть кратен размеру блока операционной системы. Независимо от размера блока не весь блок доступен для хранения данных; Oracle занимает некоторое пространство под заголовок для управления содержимым блока. Этот заголовок блока имеет минимальный размер, но он может увеличиваться.

Блоки Oracle — наименьшая единица внешней памяти. Увеличение размера блока Oracle может улучшать производительность; он задается только при создании базы данных.

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

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