Блок данных содержит фиксированное число байт физического пространства на диске. Размер блока данных устанавливается для каждой базы данных ORACLE при ее создании. Этот размер кратен размеру блока операционной системы. И что особенно важно, база данных распределяет свободное пространство блоками данных ORACLE, в отличие от операционной системы, где распределение пространства проводится в байтах. То есть ORACLE управляет пространством в файлах данных наименьшей единицей вводавывода блоком данных.
В блоках и хранятся строки данных, индексов или промежуточные результаты сортировок. Именно блоками сервер Oracle обычно выполняет чтение и запись на диск. Блоки в Oracle бывают размером 2 Кбайт, 4 Кбайт или 8 Кбайт (хотя допустимы также блоки размером 16 Кбайт и 32 Кбайт).
Заголовок (общий и переменный)
Заголовок содержит общую информацию о блоке, такую, как адрес блока и тип сегмента (например, является ли сегмент сегментом данных или индекса).
Список указателей таблиц
Эта часть блока данных содержит информацию о таблице, строки которой хранятся в этом блоке.
Список указателей строк
Эта часть блока содержит информацию о фактически хранящихся в блоке строках (включая адрес каждого отрезка строки в области данных строки).
Если строка удаляется, то пространство, которое было выделено для списка указателей строк в служебной части блока данных, не освобождается. Поэтому пустой блок, который когдато содержал 50 строк, продолжает выделять в своем заголовке 100 байтов для списка указателей строк. Это пространство может снова использоваться только в том случае, когда в блок вставляются новые строки.
Служебная часть блока
Совокупность заголовка блока данных, списка указателей таблиц и списка указателей строк называется служебной частью блока. Некоторая область служебной части блока имеет фиксированный размер, а общий размер служебной части блока не фиксирован. В среднем общий размер фиксированной и переменной областей служебной части блока данных колеблется от 84 до 107 байтов.
Данные строк
Эта часть блока содержит данные таблицы или индекса. Строка может храниться в нескольких блоках.
Свободное пространство
Свободное пространство выделяется для вставки новых строк, а также при обновлении строк, которым требуется дополнительное пространство, например, когда нулевой байтограничитель строки обновляется и приобретает определенное значение. Попадут ли вставляемые строки в конкретный блок, зависит от объема свободного пространства в этом блоке данных, а также от значения параметра PCTFREE.