Загрузка обмена разделами для определенных подразделов

Рассмотрим стратегию архивирования - где мы должны архивировать определенный набор данных.

Вместо процедуры вставки / удаления - я думал об использовании обмена разделами.

Таблица, которая должна быть заархивирована, представляет собой диапазон интервалов, разбитый по дате, с подразделом списка по стране.

Это для конкретных стран, которые я хочу обменять на разделы.

create table 
test_table
(tbl_id number,
country varchar2(2),
sales_dt date,
volume number)
partition by range (sales_dt) interval (NUMTOYMINTERVAL(1,'Month'))
subpartition by list (country)
Subpartition template
(subpartition p_ireland values ('IR'),
subpartition p_france values ('FR'),
subpartition p_other values (DEFAULT))
(partition before_2008 values less than (to_date('01-JAN-2008','DD-MON-YYYY')));

Загруженные данные правильно распределяются по разделам и подразделам. Все имена разделов сгенерированы системой.

Когда я перехожу к обмену разделами для всех подразделов FR - я не могу определить логику.

С использованием

Alter table test_table
exchange subpartition system_generated_name
with table TEST_TABLE_ARCH;

Я могу поменять местами определенный «известный» подраздел.

Я знаю, что вы можете использовать логику for с Oracle 11g, но не можете заставить синтаксис работать.

Любые идеи?


person Nitibob    schedule 12.08.2011    source источник


Ответы (1)


Мы проверяли это в прошлом и полагали, что нам нужно разработать процедуру, чтобы сделать это правильно. Цель состоит в том, чтобы выполнить два обмена разделами: один между исходной таблицей и пустой таблицей подкачки, а второй - между уже заполненной таблицей подкачки и архивной таблицей.

Предварительные требования: Создайте пустую таблицу подкачки, чтобы выполнить подкачку раздела с исходной таблицей. Кроме того, создайте архивную таблицу, которая также будет разбита на разделы.

Процесс высокого уровня:

  • создать новый пустой раздел в архивной таблице.
  • Произведите обмен разделами между таблицей подкачки и исходным разделом, который вы хотите заархивировать (результат: пустой раздел в исходной таблице, заархивированный раздел в таблице подкачки)
  • Произвести обмен разделами между таблицей подкачки и новым пустым разделом в архивной таблице; (результат: исходный раздел исходной таблицы теперь является разделом в вашей архивной таблице, а таблица подкачки снова пуста)
  • Отбросьте пустой раздел в исходной таблице (при условии, что вы не хотите его повторно использовать)

Мы никогда не кодировали это, поэтому этот процесс может нуждаться в настройке, но мы думаем, что это то, что нам пришлось бы сделать, если бы мы следовали такой стратегии.

person Bart K    schedule 28.09.2011
comment
Спасибо за ответ. Я смог выполнить базовый обмен разделами - в соответствии с вашими отличными шагами, но не смог настроить таргетинг на определенные подразделы. Я пошел по маршруту двух сопоставлений, одно для вставки в архивную таблицу и одно для удаления. - person Nitibob; 17.10.2011