Можно ли объявить отдельное табличное пространство в интервальном разделе? - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть выделенное табличное пространство для данных и выделенное табличное пространство для индекса.Я перенес таблицу в таблицу с интервалами и перестроил индексы в отдельном табличном пространстве.Затем в таблицу вошли новые записи, создав новый интервальный раздел.

Моя проблема заключается в том, что раздел и его индекс были созданы в табличном пространстве, выделенном для данных, вместо:

  • данныхв табличном пространстве, выделенном для данных
  • индекс в табличном пространстве, выделенном для индекса

Существует ли решение, которое не требует постоянного обслуживания?

1 Ответ

0 голосов
/ 13 февраля 2019

Вы можете изменить атрибуты по умолчанию для индекса.Новые разделы будут использовать указанный вами раздел:

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    
...