テーブルの CLOB 列に Oracle テキスト インデックスを作成しようとしていますが、同期パラメーターを 'SYNC (EVERY "(sysdate+30/24/60/60)")' として指定しようとすると、失敗します。権限が不十分であるというエラー。
テーブルは次のように定義されます。
CREATE TABLE MESSAGE
(
MESSAGE_ID NUMBER(19,0),
FROM NUMBER(19,0),
TO NUMBER(19,0),
RECEIVED_AT TIMESTAMP (6),
MESSAGE_TYPE_ID NUMBER(19,0),
MESSAGE_DATA CLOB,
IS_SEARCHABLE CHAR(1 BYTE)
)
したがって、次のように message_data 列にテキスト インデックスを作成しようとすると:
BEGIN
CTX_DDL.CREATE_PREFERENCE('msg_data_lexer', 'BASIC_LEXER');
CTX_DDL.SET_ATTRIBUTE('msg_data_lexer', 'skipjoins', '_-');
CTX_DDL.CREATE_PREFERENCE('msg_data_wordlist', 'BASIC_WORDLIST');
CTX_DDL.SET_ATTRIBUTE('msg_data_wordlist', 'SUBSTRING_INDEX', 'YES');
CTX_DDL.SET_ATTRIBUTE('msg_data_wordlist', 'PREFIX_INDEX', 'TRUE');
CTX_DDL.SET_ATTRIBUTE('msg_data_wordlist', 'PREFIX_MIN_LENGTH', '3');
CTX_DDL.SET_ATTRIBUTE('msg_data_wordlist', 'PREFIX_MAX_LENGTH', '6');
END;
/
CREATE INDEX message_msg_data_txt_idx on message(message_data)
INDEXTYPE IS CTXSYS.CONTEXT
FILTER BY message_type_id, from_entity, to_entity, is_searchable
PARAMETERS ('DATASTORE CTXSYS.DEFAULT_DATASTORE
FILTER CTXSYS.NULL_FILTER
LEXER msg_data_lexer
SYNC (EVERY "SYSDATE + (30/24/60/60)")
WORDLIST msg_data_wordlist');
したがって、基本的には、30 秒ごとに同期するインデックスを作成したいと考えています。これは、常に多くの新しいメッセージが追加される (1 秒あたり数百から数千のメッセージになる可能性がある) テーブルであるためです。
create index を実行すると、次のように出力されます。
Error at Command Line:1 Column:13
Error report:
SQL Error: ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
DRG-50857: oracle error in drvddl.IndexCreate
ORA-27486: insufficient privileges
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 366
29855. 00000 - "error occurred in the execution of ODCIINDEXCREATE routine"
私が知る限り、ユーザーは必要なすべての権限を持っています。「sync」パラメーターを削除するか、「SYNC (ON COMMIT)」に変更すると、インデックスが適切に作成されます。
sync パラメータを「every」に設定できないのはなぜですか? 私は何を間違っていますか?
私が使用しているOracleのバージョンは次のとおりです。
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production