文本索引小結

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章