Партицирование таблиц

Начинающий ОРАКЛИСТ :-)
Дата: 02.10.2004 08:16:20
Есть очень большая таблица (на данный момент порядка 50 000 000 записей). Ежемесячный прирост - порядка 5 000 000 - 10 000 000 записей.
Хочу её сделать партицированной. Какие могут быть грабли? Кроме того, если делать RANGE PARTITION, но заранее неизвестно максимально число диапазонов - то как быть? И что будет, если появятся записи неудовлетворяющие ни одному диапазону? Партицирование естественно по месяцам (один месяц - одна партиция, ну или квартал - партиция)
killed
Дата: 02.10.2004 18:28:59
документацию откройте. Там все есть...
slim
Дата: 02.10.2004 20:11:30
Knowledge Xpert
Use ALTER TABLE ADD PARTITION to add a partition to the high end of the table (after the last existing partition). If the first element of the partition bound of the high partition is MAXVALUE, you cannot add a partition to the table. You must split the high partition.


Успехов.
dragonx
Дата: 04.10.2004 02:32:46
создавать и удалять пратиции можно ALETR TABLE...,
единственная грабля(ИХМО) тут с локальными индексами, они становятся нестабильными и их надо ребилдить.
Ааз
Дата: 04.10.2004 22:26:13
dragonx
создавать и удалять пратиции можно ALETR TABLE...,
единственная грабля(ИХМО) тут с локальными индексами, они становятся нестабильными и их надо ребилдить.
Уппсс... с глобальными?
dragonx
Дата: 05.10.2004 01:32:35
2 Ааз
не именно с локальными =)
Вячеслав Любомудров
Дата: 05.10.2004 03:34:27
А проверить слабо?
tst> create table t8(x date, y number, z number) partition by range(x)
  2  (partition p1 values less than(to_date('01012003', 'ddmmyyyy')),
  3  partition p2 values less than (to_date('01012004', 'ddmmyyyy')))
  4  /

Table created.

tst> create index t8_x on t8(x) local;

Index created.

tst> create index t8_y on t8(y);

Index created.

tst> create index t8_z on t8(z) global partition by range(z)
  2  (partition i1 values less than (5),
  3  partition i2 values less than (maxvalue))
  4  /

Index created.

tst> insert into t8 values(to_date('01012002', 'ddmmyyyy'), 1, 4);

1 row created.

tst> insert into t8 values(to_date('01012002', 'ddmmyyyy'), 2, 6);

1 row created.

tst> commit;

Commit complete.

tst> alter table t8 add partition p3 values less than (to_date('01012005', 'ddmmyyyy'));

Table altered.

tst> select index_name, partitioned, status from user_indexes where table_name='T8';

INDEX_NAME                     PAR STATUS
------------------------------ --- --------
T8_X                           YES N/A
T8_Y                           NO  VALID
T8_Z                           YES N/A

tst> select index_name, partition_name, status from user_ind_partitions
  2  where index_name like 'T8%';

INDEX_NAME                     PARTITION_NAME                 STATUS
------------------------------ ------------------------------ --------
T8_Z                           I2                             USABLE
T8_X                           P1                             USABLE
T8_X                           P3                             USABLE
T8_X                           P2                             USABLE
T8_Z                           I1                             USABLE

tst> insert into t8 values(sysdate, 3, 10);

1 row created.

tst> commit;

Commit complete.

tst> alter table t8 drop partition p1;

Table altered.

tst> select index_name, partitioned, status from user_indexes where table_name='T8';

INDEX_NAME                     PAR STATUS
------------------------------ --- --------
T8_X                           YES N/A
T8_Y                           NO  UNUSABLE
T8_Z                           YES N/A

tst> select index_name, partition_name, status from user_ind_partitions
  2  where index_name like 'T8%';

INDEX_NAME                     PARTITION_NAME                 STATUS
------------------------------ ------------------------------ --------
T8_Z                           I2                             UNUSABLE
T8_X                           P3                             USABLE
T8_X                           P2                             USABLE
T8_Z                           I1                             UNUSABLE

tst> 
;-)
dragonx
Дата: 05.10.2004 03:40:56
вот это и есть грабля =)))
Начинающий ОРАКЛИСТ :-)
Дата: 30.11.2004 13:18:34
Если честно, то не понял в чем грабля...
Поясните.
Кроме того, можно ли как-то сущуствующую обычную таблицу сделать партицированной? Ну там при помощи команды ALTER TABLE... Или придётся создавать новую таблицу (уже партицированную), вешать на неё все триггеры, констрейнты и перегонять в неё данные из исходной таблицы???

И если можно, то конкретную ссылку на документацию...
Калина
Дата: 30.11.2004 13:44:41
Начинающий ОРАКЛИСТ :-)
Если честно, то не понял в чем грабля...
Поясните.
Кроме того, можно ли как-то сущуствующую обычную таблицу сделать партицированной? Ну там при помощи команды ALTER TABLE... Или придётся создавать новую таблицу (уже партицированную), вешать на неё все триггеры, констрейнты и перегонять в неё данные из исходной таблицы???

И если можно, то конкретную ссылку на документацию...

нельзя , придется пересоздавать