このクエリの実行に問題があります。
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.
いくつかのグーグルの後、私はその問題がインデックスにある可能性があることを発見しましたが、テーブルとインデックスを見ると、それらは私には問題ないように見えました。
インデックスの作成スクリプトは次のようになります
CREATE INDEX FTSI_GOB_A_DOCUMENT
ON GOB_ATTACHMENT (GOB_A_DOCUMENT)
INDEXTYPE IS CTXSYS.CONTEXT;
私にとって奇妙なのは、SQL Developerのテーブルプロパティでテーブルを編集すると、インデックスの動作ステータスが失敗していることがわかることだけです。誰かがそれが何を意味するのか知っていますか?多分DB権?
また、使用すると動作します
dbms_lob.instr(gob_a_document, utl_raw.cast_to_raw('java')) > 0
それ以外のcontains
アドバイスありがとうございます
PSこれは私の前の質問に関連していますOracleDBMS_LOB.INSTRおよびCONTAINSパフォーマンス
アップデート
インデックスを再作成して遊んだ後、上記のクエリを実行できることに気づきましたが、何も返されません。
で試してみるとCONTAINS(gob_a_document, '%')
、結果は26行であり、クエリがそれらを選択したキーがわかりません(少なくとも、明らかなものは見つかりませんでした。さらに調査します)。問題は、Oracle 10gを使用していて、バージョン11からサポートされているDOCXファイルを保存していることである可能性があります。