Раздел БД в Ора 11г - PullRequest
       22

Раздел БД в Ора 11г

0 голосов
/ 10 марта 2011

Мне нужно выбрать в системном параметре дату, для которой необходимо создать раздел, а затем создать раздел с помощью хранимой процедуры. Любое руководство. Oracle 11g используется.

Ответы [ 3 ]

3 голосов
/ 10 марта 2011

Ронан,

Может быть, вы можете принять интервальное разбиение?Вы используете 11g, поэтому интервальное разбиение доступно для вас.Это создает разделы на необходимой основе, когда данные вставлены, а необходимый раздел еще не доступен.

2 голосов
/ 10 марта 2011

Вы можете использовать динамический PL / SQL что-то вроде:

select the_date into l_date from system_parameters where...;

execute immediate 'alter table mytable add partition p_' || replace(l_date,'-','')
|| ' values less than (to_date(''' || l_date || ''',''DD-MON-YYYY'')';
0 голосов
/ 10 февраля 2012

Я согласен с ответом @ik_zelf, если вы собираетесь реализовать партицию по дате и хотите сделать так, как и когда придет дата, перейдите к интервалу Partioning. Хранимая процедура также не понадобится.

Это новая функция в Oracle 11g. Который создает пристрастие для определенных интервалов при вставке записей, поэтому вам не нужно беспокоиться о новых разделах. Новым Partiotions будет присвоено системное имя, например SYS_PXXX ..

Вот как работает интервал.

CREATE TABLE interval_tab (
  id           NUMBER,
  code         VARCHAR2(10),
  description  VARCHAR2(50),
  created_date DATE
)
PARTITION BY RANGE (created_date)
INTERVAL(NUMTOYMINTERVAL(1,'MONTH')) -- change to 12 for an year  
(
   PARTITION part_01 values LESS THAN (TO_DATE('01-JAN-2012','DD-MON-YYYY'))
);

Interval Partition не имеет ничего общего с более ранним Partition, последний раздел, созданный до интервала, будет точкой перехода здесь.

Вы также можете пойти с

ALTER TABLE также ДОБАВЛЯЕТ РАЗДЕЛЕНИЕ ..

...