国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

講解Oracle數(shù)據(jù)庫的全文索引設置步驟

2024-08-29 13:52:13
字體:
供稿:網(wǎng)友
一.創(chuàng)建數(shù)據(jù)庫

1、使用dbassist創(chuàng)建數(shù)據(jù)庫時要選擇jserver和intermedia兩個選項。

2、檢查你的數(shù)據(jù)庫是否安裝了intermedia,可以通過檢查是否有ctxsys用戶和ctxapp角色(role).

3、如果沒有這個用戶和角色,意味著數(shù)據(jù)庫創(chuàng)建時未安裝intermedia功能。必須修改數(shù)據(jù)庫以安裝這項功能。修改過程:

運行 $Oracle_HOME/bin/dbassist, 選擇'modify database', 然后在選擇數(shù)據(jù)庫功能時將jserver 和 intermedia 都選上(安裝intermedia必須同時安裝jserver).

二.設置extPRoc

Oracle 通過 ‘外部調(diào)用功能’(external procedure)來實現(xiàn)intermedia的,因此正確地設置extproc是關鍵一步。 一般數(shù)據(jù)庫安裝完jserver和intermedia后在listener.ora 和tnsnames.ora中已經(jīng)設置了extproc。

1、測試extproc是否正常

重新啟動listener,然后,使用tnsping 來測試一下是否配置正確,

命令行下運行

tnsping extproc_connection_data 或者

tnsping extproc_connection_data.world

如果配置正確,會顯示:

Attempting to contact (ADDRESS=(PROTOCOL=ipC)(KEY=EXTPROC)) OK(140毫秒)

如果正確,可以跳過2、3步驟。否則請按照步驟2、3設置listener.ora 和tnsnames.ora文件,修改后一定要重新啟動listener,但并不需要重新啟動數(shù)據(jù)庫。

2、設置listerner.ora

如果tnsping失敗,需要配置listener 使它能監(jiān)聽intermedia 調(diào)用的請求。可以通過運行$ORACLE_HOME/bin/netassit 來進行配置,也可以手工修改配置文件:$ORACLE_HOME/network/admin/listener.ora ,然后重新啟動listener。

下面以一個例子來講述如何手工修改配置文件:

打開listener.ora文件,在修改前,通常有如下內(nèi)容(假定使用缺省listener):

LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = MYDATABASE)(PORT = 1521)) ) SID_LIST_LISTENER = (SID_DESC = (GLOBAL_DBNAME = mydatabase.world) (ORACLE_HOME = /u01/app/oracle/product/8.1.6) (SID_NAME = mydatabase) )

這個listener還沒有配置extproc, 因此,需要為它增加對extproc的監(jiān)聽,辦法就是分別增加description 和 sid_desc. 修改后的listner.ora 如下:

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = MYDATABASE)(PORT = 1521)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = mydatabase.world) (ORACLE_HOME = /u01/app/oracle/product/8.1.6) (SID_NAME = mydatabase) ) (SID_DESC = (PROGRAM = extproc) (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/8.1.6) ) )

注意上面的host, global_dbname,sid_name,oracle_home應填寫你的數(shù)據(jù)庫的實際值,但program一項必須填寫extproc.

3、設置tnsnames.ora

其次,要配置服務器端的tnsnames.ora文件。該文件的位置在$ORACLE_HOME/network/admin下面。同樣可以通過運行netasst來進行配置。

在tnsnames.ora文件中需要增加如下一項:

EXTPROC_CONNECTION_DATA,EXTPROC_CONNECTION_DATA.WORLD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) (CONNECT_DATA = (SID = PLSExtProc) ) )

注意其中,KEY 和SID必須與listener.ora中的key 和sid_name對應相同。

三.設置詞法分析器(lexer)

Oracle 缺省使用basic_lexer這個分析器。basic_lexer針對英語。要指定使用中文分析器, 操作步驟:

1. 用ctxsys用戶登陸intermedia text manager,口令ctxsys:

2.選擇首選項——〉語言指示器——〉創(chuàng)建,輸入指示器的名字如chinese_lexer,選擇lexer下的chinese_vgrnm_lexer 。

3.建立intermedia索引,指定索引名,選擇方案和表下的字段,例如system方案下的DOM_1_DOCLIB中的CURRENTTEXT字段,首選項中選擇chinese_lexer 。

這樣建立的全文檢索索引,就會使用chinese_vgram_lexer作為分析器。

4.在索引建好后,在該用戶下查到Oracle自動產(chǎn)生了以下幾個表,可以使用dba studio查看:(假設索引名為myindex):

DR$myindex$I,DR$myindex$K,DR$myindex$R,DR$myindex$N

其中以I表最重要,查詢該表:

select token_text, token_count from DR$I_RSK1$I where rownum<=20;

可以看到該表中保存的是Oracle分析你的文檔后,生成的term記錄,包括term出現(xiàn)的位置、次數(shù)、hash值等。

四.使用job定時同步和優(yōu)化

在intermedia索引建好后,如果表中的數(shù)據(jù)發(fā)生變化,增加或修改了記錄,由于對表所發(fā)生的任何dml語句,都不會自動修改索引,因此,必須定時同步(sync)和優(yōu)化(optimize)索引,以正確反映數(shù)據(jù)的變化。

同步(sync):將新的term 保存到I表;

優(yōu)化(optimize):清除I表的垃圾,主要是將已經(jīng)被刪除的term從I表刪除。

Oracle提供了一個ctx server來做這個同步和優(yōu)化的工作,只需要在后臺運行這個進程,它會監(jiān)視數(shù)據(jù)的變化,及時進行同步。但存在許多問題。可以用下的兩個job來完成(該job要建在和表同一個用戶下):

-- sync: VARIABLE jobno number; BEGIN DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''myindex'');', SYSDATE, 'SYSDATE + (1/24/4)'); commit; END; -- optimizer VARIABLE jobno number; BEGIN DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.optimize_index(''myindex'',''FULL'');', SYSDATE, 'SYSDATE + 1'); commit; END;

注釋:第一個job的SYSDATE + (1/24/4)是指每隔15分鐘同步一次,第二個job的SYSDATE + 1是每隔1天做一次全優(yōu)化。至于具體的時間間隔,大家可以根據(jù)各自的應用需要來靈活應用。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 内江市| 富宁县| 灵台县| 玉田县| 宜州市| 北票市| 张北县| 宕昌县| 台东县| 京山县| 东乌珠穆沁旗| 徐闻县| 南城县| 集安市| 龙川县| 金沙县| 玉树县| 乌拉特中旗| 太谷县| 乐陵市| 贵港市| 吉隆县| 富平县| 嘉兴市| 曲沃县| 广宗县| 湛江市| 苏尼特左旗| 玛沁县| 浦东新区| 锡林浩特市| 崇州市| 西青区| 淮滨县| 台中县| 阜宁县| 平遥县| 博兴县| 迭部县| 福建省| 祥云县|