问题描述
嗨,汤姆
我们正在尝试在分区表上创建多组XML索引。
表没有子分区,因为它们还不受XML索引的支持,但是我们需要XML索引具有多个组。
这是表格:
该表加载了从云应用程序下载的xml文件,如下所示:
COM_COMUNIDAD_ID = 国家标识
Fecha_foto _id = 日期
ARCHIVO_NOMBRE = xml文件的名称
ARCHIVO_TIPO = xml文件的类型 (清单、活动等)。
CONTENIDO_XML = 加载的xml文件的内容
我们可以成功创建XML索引:
但是,当尝试将组添加到该索引时,我们得到错误:
我们正在尝试在分区表上创建多组XML索引。
表没有子分区,因为它们还不受XML索引的支持,但是我们需要XML索引具有多个组。
这是表格:
CREATE TABLE REPLICA_OFSC.R_OFSC_DAILY_EXTRACT_XML_P ( COM_COMUNIDAD_ID INTEGER, FECHA_FOTO_ID DATE, ARCHIVO_NOMBRE VARCHAR(250), ARCHIVO_TIPO VARCHAR(250), CONTENIDO_XML XMLTYPE ) PARTITION BY RANGE (FECHA_FOTO_ID) INTERVAL (INTERVAL '1' DAY) (PARTITION VALUES LESS THAN ( DATE '2017-11-01')); INSERT INTO R_OFSC_DAILY_EXTRACT_XML_P SELECT * FROM R_OFSC_DAILY_EXTRACT_XML; COMMIT;
该表加载了从云应用程序下载的xml文件,如下所示:
COM_COMUNIDAD_ID = 国家标识
Fecha_foto _id = 日期
ARCHIVO_NOMBRE = xml文件的名称
ARCHIVO_TIPO = xml文件的类型 (清单、活动等)。
CONTENIDO_XML = 加载的xml文件的内容
我们可以成功创建XML索引:
BEGIN
DBMS_XMLINDEX.registerParameter('IX_TIME_SLOT_XML_P',
'
XMLTABLE IX_TIME_SLOT_XML_P ''time_slots/time_slot''
COLUMNS
"ID_DE_TIME_SLOT" VARCHAR(1000) PATH ''Field[@name="ID de Time Slot"]'',
"NOMBRE_DE_TIME_SLOT" VARCHAR(1000) PATH ''Field[@name="Nombre de Time Slot"]'',
"LABEL_DE_TIME_SLOT" VARCHAR(1000) PATH ''Field[@name="Label de Time Slot"]'',
"ESTADO_DE_TIME_SLOT" VARCHAR(1000) PATH ''Field[@name="Estado de Time Slot"]'',
"HORA_DE_INICIO" VARCHAR(1000) PATH ''Field[@name="Hora de Inicio"]'',
"HORA_DE_FIN" VARCHAR(1000) PATH ''Field[@name="Hora de Fin"]''
');
END;
CREATE INDEX IX_DAILY_XML_P ON REPLICA_OFSC.R_OFSC_DAILY_EXTRACT_XML_P(CONTENIDO_XML) INDEXTYPE IS XDB.XMLIndex
PARAMETERS ('PARAM IX_TIME_SLOT_XML_P') LOCAL;
但是,当尝试将组添加到该索引时,我们得到错误:
BEGIN
DBMS_XMLINDEX.registerParameter('IX_ACTIVITY_WORK_SKILLS_XML_P',
'
ADD_GROUP GROUP IX_ACTIVITY_WORK_SKILLS_XML_P
XMLTABLE IX_ACTIVITY_WORK_SKILLS_XML_P ''appt_work_skills/appt_work_skill''
COLUMNS
"ID_DE_ACTIVIDAD" VARCHAR(1000) PATH ''Field[@name="ID de Actividad"]'',
"ID_DE_HABILIDAD_DE_TRABAJO_DE_" VARCHAR(1000) PATH ''Field[@name="ID de Habilidad de Trabajo de la Actividad"]'',
"NIVEL_REQUERIDO_DE_HABILIDAD" VARCHAR(1000) PATH ''Field[@name="Nivel Requerido de Habilidad"]'',
"NIVEL_PREFERIDO_DE_HABILIDAD" VARCHAR(1000) PATH ''Field[@name="Nivel Preferido de Habilidad"]''
');
END;
ALTER INDEX IX_DAILY_XML_P PARAMETERS('PARAM IX_ACTIVITY_WORK_SKILLS_XML_P');
Error starting at line 50 in command:
ALTER INDEX IX_DAILY_XML_P PARAMETERS('PARAM IX_ACTIVITY_WORK_SKILLS_XML_P')
Error report:
SQL Error: ORA-29874: warning in the execution of ODCIINDEXALTER routine
ORA-29960: line 1, ORA-02149: Specified partition does not exist
29874. 00000 - "warning in the execution of ODCIINDEXALTER routine"
*Cause: A waring was returned from the ODCIIndexAlter routine.
*Action: Check to see if the routine has been coded correctly
Check the user defined warning log tables for greater details.
专家解答
注册组IX_ACTIVITY_WORK_SKILLS_XML_P的语法是错误的。你不ADD_GROUP,只需说明它是什么:
CREATE TABLE R_OFSC_DAILY_EXTRACT_XML_P
( COM_COMUNIDAD_ID INTEGER,
FECHA_FOTO_ID DATE,
ARCHIVO_NOMBRE VARCHAR(250),
ARCHIVO_TIPO VARCHAR(250),
CONTENIDO_XML XMLTYPE
)
PARTITION BY RANGE (FECHA_FOTO_ID) INTERVAL (INTERVAL '1' DAY)
(PARTITION VALUES LESS THAN ( DATE '2017-11-01'));
BEGIN
DBMS_XMLINDEX.registerParameter('IX_TIME_SLOT_XML_P',
' XMLTABLE IX_TIME_SLOT_XML_P ''time_slots/time_slot''
COLUMNS
"ID_DE_TIME_SLOT" VARCHAR(1000) PATH ''Field[@name="ID de Time Slot"]'',
"NOMBRE_DE_TIME_SLOT" VARCHAR(1000) PATH ''Field[@name="Nombre de Time Slot"]'',
"LABEL_DE_TIME_SLOT" VARCHAR(1000) PATH ''Field[@name="Label de Time Slot"]'',
"ESTADO_DE_TIME_SLOT" VARCHAR(1000) PATH ''Field[@name="Estado de Time Slot"]'',
"HORA_DE_INICIO" VARCHAR(1000) PATH ''Field[@name="Hora de Inicio"]'',
"HORA_DE_FIN" VARCHAR(1000) PATH ''Field[@name="Hora de Fin"]''
');
END;
/
CREATE INDEX IX_DAILY_XML_P ON R_OFSC_DAILY_EXTRACT_XML_P(CONTENIDO_XML)
INDEXTYPE IS XDB.XMLIndex PARAMETERS ('PARAM IX_TIME_SLOT_XML_P') LOCAL;
BEGIN
DBMS_XMLINDEX.registerParameter('IX_ACTIVITY_WORK_SKILLS_XML_P',
' GROUP IX_ACTIVITY_WORK_SKILLS_XML_P
XMLTABLE IX_ACTIVITY_WORK_SKILLS_XML_P ''appt_work_skills/appt_work_skill''
COLUMNS
"ID_DE_ACTIVIDAD" VARCHAR(1000) PATH ''Field[@name="ID de Actividad"]'',
"ID_DE_HABILIDAD_DE_TRABAJO_DE_" VARCHAR(1000) PATH ''Field[@name="ID de Habilidad de Trabajo de la Actividad"]'',
"NIVEL_REQUERIDO_DE_HABILIDAD" VARCHAR(1000) PATH ''Field[@name="Nivel Requerido de Habilidad"]'',
"NIVEL_PREFERIDO_DE_HABILIDAD" VARCHAR(1000) PATH ''Field[@name="Nivel Preferido de Habilidad"]''
');
END;
/
ALTER INDEX IX_DAILY_XML_P PARAMETERS('PARAM IX_ACTIVITY_WORK_SKILLS_XML_P');
Index IX_DAILY_XML_P altered. 「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




