It was Connor who answered, but hey ;)
Your example works for me too:
SQL> CREATE TABLE text_tab
2 (
3 "ID" NUMBER NOT NULL ENABLE,
4 "TYPE" VARCHAR2(200 CHAR) NOT NULL ENABLE,
5 "TEXT_COL" VARCHAR2(4000 CHAR),
6 "CATEGORY" VARCHAR2(30) NOT NULL ENABLE,
7 CONSTRAINT "TEXT_TAB_PK" PRIMARY KEY ("ID")
8 );
Table created.
SQL>
SQL> BEGIN
2 ctx_ddl.create_preference ('TEXT_TAB_PREF','world_lexer');
3 END;
4 /
PL/SQL procedure successfully completed.
SQL>
SQL> BEGIN
2 EXECUTE IMMEDIATE 'CREATE INDEX text_ind ON text_tab(text_col) INDEXTYPE IS CTXSYS.CONTEXT ONLINE FILTER BY CATEGORY PARAMETERS('' SYNC (ON COMMIT) LEXER
TEXT_TAB_PREF'')';
3 END;
4 /
PL/SQL procedure successfully completed.
SQL>
SQL> BEGIN
2 ctx_ddl.optimize_index('TEXT_IND','REBUILD');
3 END;
4 /
PL/SQL procedure successfully completed.
I think you're going to have to take this up with Support.
Chris