怎么看有没有文本索引
select index_name,ITYP_NAME,owner,index_type from DBA_indexes where ITYP_NAME in ('CONTEXT','CTXCAT','CTXRULE','CTXXPATH');
查看一个索引是不是文本索引
select ITYP_NAME from DBA_indexes where index_name ='STA_BIZ_FEE_CITY0_ADDRX';
Oracle 文本索引有四种类型:CONTEXT、CTXCAT、CTXRULE 和 CTXXPATH。
文本索引的命名
select table_name from user_tables where table_name='DR$RES_HOUSE_WHLADDRX$I';
可以看到在user_tables中文本索引的命名是DR$RES_HOUSE_WHLADDRX$I,其实是系统自己加DR$和$I(I是不确定的,有见过$X)上去。如果要在dba_index中找,真正的名字应该是RES_HOUSE_WHLADDRX
如果发现没有CTXSYS用户 e)创建 CTXSYS 用户,创建 CTXAPP 角色 @./ctx/admin/catctx.sql ctxsys system temp nolock --(密码、表空间、临时表空间、用户状态) --如果当前sql脚本无执行权限,请手工添加。 f)为 CTXSYS 执行初始化工作,如果没有此操作,后续操作会失败。 connect ctxsys/ctxsys; @./ctx/admin/defaults/drdefus.sql 还有一种方法是用dbca。不过一般情况下由于没有图形界面反而没有以上方法好用。
其实就是安装的时候选择oracle text
重建文本索引
1) 在测试数据库下sql window先删除文本索引RES_HOUSE_WHLADDRX: drop index RES_HOUSE_WHLADDRX; 2) 建立文本索引规则,在command window下执行: EXEC CTXSYS.CTX_DDL.CREATE_PREFERENCE('chinese_vgram_lexer', 'CHINESE_VGRAM_LEXER'); 3) 重建文本索引,在sql window下执行: CREATE INDEX RES_HOUSE_WHLADDRX ON RES_HOUSE ( WHLADDR ) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS (' LEXER chinese_vgram_lexer STOPLIST ctxsys.empty_stoplist SYNC (ON COMMIT)') PARALLEL 4; select table_name from user_tables where table_name='DR$RES_HOUSE_WHLADDRX$I';