Как указать табличное пространство для создания индекса типа XML в Oracle 11g

Я пытаюсь создать столбец XML Index on XML Type в одной из моих таблиц. Здесь мы используем 2 табличных пространства, одно для таблиц и второе для индексов.

Я хотел бы создать XMLIndex в табличном пространстве индекса.

Я использую запрос ниже -

CREATE INDEX VISION_IX1 ON MDT_VISION_LOGGING_TBL(RAWMESSAGE)
INDEXTYPE IS XDB.XMLINDEX
NOPARALLEL;

Пожалуйста, помогите мне с тем, где упомянуть пункт о табличном пространстве.

1 ответ

Вы должны назвать таблицу путей, чтобы иметь возможность указать хранилище для неструктурированного компонента:

CREATE TABLE MDT_VISION_LOGGING_TBL(ID NUMBER, RAWMESSAGE XMLTYPE) TABLESPACE TS_TABLES;

Table MDT_VISION_LOGGING_TBL created.

CREATE INDEX VISION_IX1 ON MDT_VISION_LOGGING_TBL(RAWMESSAGE)
INDEXTYPE IS XDB.XMLINDEX
PARAMETERS('PATH TABLE VISION_IX_PATH_TABLE (TABLESPACE TS_INDEXES)')
NOPARALLEL;

Index VISION_IX1 created.

Вы можете увидеть, где было выделено хранилище:

SELECT US.SEGMENT_NAME, US.SEGMENT_TYPE, US.TABLESPACE_NAME
FROM USER_OBJECTS UO
JOIN USER_SEGMENTS US
ON US.SEGMENT_NAME = UO.OBJECT_NAME
WHERE UO.CREATED > TRUNC(SYSDATE);

SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME              
------------------------------ ------------------ ------------------------------
MDT_VISION_LOGGING_TBL         TABLE              TS_TABLES                         
SYS304166_VISION_IX_PIKEY_IX   INDEX              TS_TABLES                         
SYS304166_VISION_IX_VALUE_IX   INDEX              TS_TABLES                         
SYS_IL0000304163C00003$$       LOBINDEX           TS_TABLES                         
SYS_LOB0000304163C00003$$      LOBSEGMENT         TS_TABLES                         
VISION_IX_PATH_TABLE           TABLE              TS_INDEXES                        

Вы можете указать, что два других создаваемых индекса идут и в предпочитаемом вами табличном пространстве:

CREATE INDEX VISION_IX1 ON MDT_VISION_LOGGING_TBL(RAWMESSAGE)
INDEXTYPE IS XDB.XMLINDEX
PARAMETERS('PATH TABLE VISION_IX_PATH_TABLE (TABLESPACE TS_TABLES)
  PIKEY INDEX VISION_IX_PIKEY (TABLESPACE TS_INDEXES)
  VALUE INDEX VISION_IX_VALUE (TABLESPACE TS_INDEXES)')
NOPARALLEL;

SELECT US.SEGMENT_NAME, US.SEGMENT_TYPE, US.TABLESPACE_NAME
FROM USER_OBJECTS UO
JOIN USER_SEGMENTS US
ON US.SEGMENT_NAME = UO.OBJECT_NAME
WHERE UO.CREATED > TRUNC(SYSDATE);

SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME              
------------------------------ ------------------ ------------------------------
MDT_VISION_LOGGING_TBL         TABLE              TS_TABLES                         
SYS_IL0000304183C00003$$       LOBINDEX           TS_TABLES                         
SYS_LOB0000304183C00003$$      LOBSEGMENT         TS_TABLES                         
VISION_IX_PATH_TABLE           TABLE              TS_INDEXES                        
VISION_IX_PIKEY                INDEX              TS_INDEXES                        
VISION_IX_VALUE                INDEX              TS_INDEXES                        
Другие вопросы по тегам