Как определить табличное пространство при создании индекса CTXCAT - PullRequest
0 голосов
/ 05 апреля 2019

Можно ли определить табличное пространство при создании индекса? Если так, то каков синтаксис? Я не могу найти ссылку.

Я пытаюсь что-то вроде:

CREATE INDEX "X_INDEX" ON "X_TABLE" ("X_COLUMN") TABLESPACE X_3 INDEXTYPE IS "CTXSYS"."CTXCAT"

1 Ответ

0 голосов
/ 05 апреля 2019

В отличие от обычных индексов, которые имеют только 1 сегмент, доменные индексы создают несколько разных таблиц и индексов, каждый из которых может находиться в отдельном табличном пространстве.Поэтому вам нужно указать настройки табличного пространства в предпочтении BASIC_STORAGE .

Вот пример, основанный на этой ссылке.

begin
ctx_ddl.create_preference('mystore', 'BASIC_STORAGE');
ctx_ddl.set_attribute('mystore', 'I_TABLE_CLAUSE',
                        'tablespace foo storage (initial 1K)'); 
ctx_ddl.set_attribute('mystore', 'K_TABLE_CLAUSE',
                        'tablespace foo storage (initial 1K)'); 
ctx_ddl.set_attribute('mystore', 'R_TABLE_CLAUSE',
                        'tablespace users storage (initial 1K) lob
                         (data) store as (disable storage in row cache)');
ctx_ddl.set_attribute('mystore', 'N_TABLE_CLAUSE',
                        'tablespace foo storage (initial 1K)'); 
ctx_ddl.set_attribute('mystore', 'I_INDEX_CLAUSE',
                        'tablespace foo storage (initial 1K) compress 2');
ctx_ddl.set_attribute('mystore', 'P_TABLE_CLAUSE',
                        'tablespace foo storage (initial 1K)'); 
end;
/

CREATE INDEX "X_INDEX" ON "X_TABLE" ("X_COLUMN") 
    INDEXTYPE IS "CTXSYS"."CTXCAT" PARAMETERS(STORAGE mystore);
...