Загрузка разделов обмена для определенных подразделов - PullRequest
0 голосов
/ 12 августа 2011

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

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

Будущийзаархивированная таблица - это интервал, разделенный по дате, с подразделом списка по стране.

Я хочу разделить обмен для определенных стран.

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, но не могу заставить синтаксис работать.

Любые идеи

1 Ответ

0 голосов
/ 28 сентября 2011

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

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

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

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

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

...