文本索引小结

怎么看有没有文本索引
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';

你可能感兴趣的:(数据库,索引,文本索引)