Добавление секций в секционированную таблицу
Наиболее распространённым случаем является ситуация, когда вам нужно добавить новые секции к существующей секционированной таблице. Такая необходимость может возникнуть, например, при размещении новых логических группы данных. Логические группы могут быть организованы по историческому, временному, географическому, организационному или числовому признаку.
Пример – есть таблица Order, которая секционирована по столбцу OrderDate, и ваша компания готовится к началу нового финансового 2015 года. В этом случае вам необходимо добавить новую секцию, назвав её, например, FY2015.
Или предположим, что таблица Order секционируется по столбцу Country, и ваша компания расширяет рынок своей деятельности, скажем, на Нигерию. В этом случае вам необходимо добавить новую секцию, назвав её Nigeria.
Существует два способа, с помощью которых вы можете добавить секцию в секционированную таблицу:
- С помощью Database Administration Console;
- С помощью OpenEdge SQL.
Добавление секций с помощью Database Administration Console
Способ добавления секций в секционированную таблицу с помощью Database Administration Console аналогичен способу, которые применяется для добавления новых деталей политики секционирования в существующую политику. Вы познакомились с этим способом на втором уроке «СОЗДАНИЕ НОВЫХ СЕКЦИОНИРОВАННЫХ ТАБЛИЦ». Поэтому здесь мы дадим только некоторые дополнительные рекомендации.
При добавлении секции в секционированную таблицу, в которой реализовано секционирование по диапазону или любой тип подсекционирования, содержащий диапазон, верхняя граница новой секции должна быть больше, чем существующая граница. Если вы попытаетесь добавить секции, верхняя граница которой меньше существующей, то вы получите соответствующее предупреждение:
Partition partition-name must be marked as a split target because it splits an existing range.
Если вам необходимо добавить несколько секций, которые содержат диапазон, то вы должны добавлять их по одной и в порядке возрастания значения диапазона. Пример – таблица Order секционирована по диапазону на основе столбца OrderDate. Если вам необходимо добавить четыре новых секции, по одной на каждый финансовый квартал 2016 года, то вы сначала должны добавить секцию Q1_2016, затем Q2_2016 и т.д.
Добавление секций с помощью OpenEdge SQL
Для добавления секций в секционированную таблицу с помощью OpenEdge SQL применяется оператор SQL ALTER TABLE ADD. Здесь необходимо помнить, что для секционирования по списку или подсекционирования содержащего список применяется выражение «VALUES IN», а для секционирования по диапазону или подсекционирования содержащего диапазон – «VALUES <=».
Команда добавление секций в секционированную таблицу:
ALTER TABLE table-name ADD (PARTITION [partition-name1] VALUES IN | <= (const) [area-spec]), PARTITION [partition-name2] VALUES IN | <= (const) [area-spec]), ... );
Пример. Предположим, в таблице Order реализовано подсекционирование на основе столбцов Carrier и OrderDate, и существующая верхняя граница диапазона равна 31 декабря 2014 года. Нам необходимо добавить секцию для хранения данных за 2015 год. Пример ниже демонстрирует добавление двух list-range секций для двух значений столбца Carrier, у которых верхняя граница диапазона будет равно 31 декабря 2015 года:
ALTER TABLE "PUB"."Order" ADD (PARTITION "Order_StandardMail_2015" VALUES <= ('Standard Mail','12/31/2015'), PARTITION "Order_FlyByNight_Courier_2015" VALUES <= ('FlyByNight Courier','12/31/2015') );