У меня возникла проблема с выполнением этого запроса.CONTAINS не работает с Oracle Text
SELECT * FROM gob_attachment
WHERE CONTAINS (gob_a_document, 'java') > 0
Это дает мне
ORA-29902: error in executing ODCIIndexStart() routine
ORA-20000: Oracle Text error:
ORA-00942: table or view does not exist
29902. 00000 - "error in executing ODCIIndexStart() routine"
*Cause: The execution of ODCIIndexStart routine caused an error.
*Action: Examine the error messages produced by the indextype code and
take appropriate action.
Через некоторое Googling я disovered, что проблема может быть в индексе, но когда я посмотрел на стол и указательным они казались мне хорошо.
Создание сценария для индекса выглядит как этот
CREATE INDEX FTSI_GOB_A_DOCUMENT
ON GOB_ATTACHMENT (GOB_A_DOCUMENT)
INDEXTYPE IS CTXSYS.CONTEXT;
Единственное, что странно для меня является то, что, когда я смотрю Редактировать таблицу в таблицу свойств в SQL Developer я могу видеть, что Рабочее состояние индекса FAILED , Кто-нибудь знает, что это значит? Возможно, права БД?
Также он работает, когда я использую
dbms_lob.instr(gob_a_document, utl_raw.cast_to_raw('java')) > 0
вместо contains
Спасибо за любые советы
P.S. Это связанно с моим предыдущим вопросом Oracle DBMS_LOB.INSTR and CONTAINS performance
UPDATE
После воссоздания индекса и некоторые игры вокруг, я disovered, что я могу выполнить запрос выше, но это не вернет мне что-нибудь.
Если я попробую с CONTAINS(gob_a_document, '%')
, результат будет 26 строк и не знаю, по какому ключе выбранный запрос (по крайней мере, я не нашел ничего очевидного, я исследую его больше). Проблема может быть в том, что мы используем Oracle 10g и хранение DOCX файлов, которые поддерживаются с версии 11.
Дело в том, что индекс уже был создан в БД, поэтому сценарий, который я опубликовал здесь, был скопирован и вложен из SQL-разработчика. Поэтому я последовал твоему совету и воссоздал индекс. Теперь запрос выполняется, но он не дает мне никаких результатов (возвращается 0 строк). (и я уверен, что он должен вернуться как 100 строк) –
Мы храним документы во всех форматах (PDF, Word, HTML, ...). Также DOCS может вызвать проблему. Поэтому мой вопрос заключается в том, что сохранение неподдерживаемого типа документа (DOCX) приведет к моей проблеме? Этот запрос ничего не вернет? Мы используем Oracle 10g, а тип данных в столбце: BLOB –
будет хранить неподдерживаемый тип документа (DOCX) привести к вашей проблеме? Это, безусловно, способ сделать ставку. Но вам нужно будет расследовать это для себя, так как у меня нет экземпляра 10g для игры. – APC