Опция Partitioning является функциональным расширением Oracle Database 12с Enterprise Edition для работы с большими базами данных, например, в хранилищах данных. Использование этой программной опции позволяет повысить производительность, надежность и управляемость приложений, работающих с большими таблицами. Идея механизма секционирования (партицирования) состоит в том, что таблица физически разбивается на отдельные сегменты-секции (или подсекции для комбинированных схем секционирования) в соответствии с некоторым условием - ключом секционирования. Ключом секционирования может быть, например, значение в поле даты или комбинация значений в каких-либо столбцах таблицы. При этом на логическом уровне таблица остается единой, монолитной, а на физическом уровне с каждой такой секцией система работает независимо. Каждая индивидуальная секция имеет собственное имя и может иметь собственные характеристики хранения, такие как режимы сжатия или указание на табличное пространство, в котором будет храниться данная секция. Поэтому с точки зрения администратора базы данных секционированный объект состоит из нескольких частей, которыми можно управлять как вместе, так и по отдельности. Это значительно упрощает обслуживание крупных объектов хранения в базе данных и предоставляет администратору значительную свободу в выборе оптимальных схем хранения таких объектов. Однако с точки зрения приложения секционированная таблица выглядит, как обычная несекционированная, и для доступа к ней не требуются какие-либо специальные модификации текста SQL-предложений.
При секционировании сокращается время, требующееся для выполнения большинства операций с таблицами. Это уменьшение достигается путем применения этих операций к отдельным секциям крупных таблиц и увеличением производительности вследствие их параллельного выполнения. Так, например, запрос к большой исходной таблице автоматически заменяется запросами к отдельным ее секциям, и эти запросы выполняются одновременно и независимо друг от друга, уменьшая тем самым общее время обработки. Кроме того, возрастает надежность системы, так как уменьшается влияние сбоев в отдельных секциях на работу всего приложения.
Применение секционирования упрощает задачи администрирования крупных объектов хранения. Каждая из секций может быть индивидуально переведена в автономное или, наоборот, в оперативное состояние. Ее можно копировать и восстанавливать при сбое независимо от других секций. Можно импортировать, экспортировать или загружать данные только в требуемые секции, уменьшая тем самым время, требующееся для выполнения таких операций. Операции с секциями могут выполняться параллельно. Для каждой секции таблицы может быть построен индивидуальный индекс, что также сокращает время, необходимое для выполнения операций с данными и для сопровождения самих индексов.Возможны разнообразные локальные и глобальные стратегии индексирования.
Допускается несколько методов секционирования:
Секционирование по диапазону или интервалу позволяет задать разбиение на секции по попаданию в диапазон значений некоторого поля, а при секционировании по списку значений секция определяется перечислением значений соответствующего поля. Секционирование хешированием производится с помощью некоторой хеш-функции, что позволяет равномерно распределить данные по секциям. Ссылочное секционирование позволяет сходным образом секционировать связанные таблицы. При комбинированном секционировании разрешается использовать сочетание различных методов. Например, можно разбить исходную таблицу на секции по диапазону значений одного поля, а каждую такую секцию дополнительно разбить на подсекции по списку значений в другом поле.