Можно ли объявить отдельное табличное пространство в интервальном разделе?
У меня есть выделенное табличное пространство для данных и выделенное табличное пространство для индекса. Я перенес таблицу в таблицу с интервалами и перестроил индексы в отдельном табличном пространстве. Затем новые записи вошли в таблицу, создав новый интервал разбиения.
Моя проблема заключается в том, что раздел и его индекс были созданы в табличном пространстве, выделенном для данных, вместо:
- данные на выделенном табличном пространстве данных
- указатель на индекс выделенного табличного пространства
Есть ли решение, которое не требует постоянного обслуживания?
1 ответ
Вы можете изменить атрибуты по умолчанию для индекса. Новые разделы будут использовать указанный вами раздел:
create tablespace table_data
datafile 'table_data.dbf' size 1M autoextend on;
create tablespace index_data
datafile 'index_data.dbf' size 1M autoextend on;
create table t (
c1 int, c2 int
) partition by range ( c1 )
interval ( 1 ) (
partition p0 values less than ( 1 )
) tablespace table_data;
create index i on t ( c2 ) local;
insert into t values ( 1, 1 );
commit;
select partition_name, tablespace_name
from user_tab_partitions
where table_name = 'T';
PARTITION_NAME TABLESPACE_NAME
P0 TABLE_DATA
SYS_P622 TABLE_DATA
select partition_name, tablespace_name
from user_ind_partitions
where index_name = 'I';
PARTITION_NAME TABLESPACE_NAME
P0 TABLE_DATA
SYS_P622 TABLE_DATA
alter index i
modify default attributes tablespace index_data;
insert into t values ( 2, 2 );
commit;
select partition_name, tablespace_name
from user_tab_partitions
where table_name = 'T';
PARTITION_NAME TABLESPACE_NAME
P0 TABLE_DATA
SYS_P622 TABLE_DATA
SYS_P623 TABLE_DATA
select partition_name, tablespace_name
from user_ind_partitions
where index_name = 'I';
PARTITION_NAME TABLESPACE_NAME
P0 TABLE_DATA
SYS_P622 TABLE_DATA
SYS_P623 INDEX_DATA