在UNIX伺服器上設定Oracle8i全文檢索索引(1)

來源:互聯網
上載者:User

由於工作需要,筆者在HP UX, Soralis 上面設定了Oracle Intermedia來實現全文檢索索引。目前已經投入實際使用。設定過程中有許多問題和經驗,拿來和大家交流。本文依據的是Oracle 8.1.6 和8.1.7兩個版本,不能保證適用於其他版本。 
目前全文檢索索引功能幾乎所有主流資料庫都支援。此前筆者曾在sql server 2000上實現,感覺非常簡單,方便,但建立全文檢索索引索引的時間比較長,通常要十幾個小時。Oracle 的全文檢索索引建立和維護索引都要快得多,筆者的65萬記錄的一個表建立索引只需要20分鐘,同步一次只需要1分鐘。但設定就要複雜得多。 
一.設定過程 
1.首先,檢查你的資料庫是否安裝了intermedia 
這可以通過檢查是否有ctxsys使用者和ctxapp角色(role). 如果沒有這個使用者和角色,意味著你的資料庫建立時未安裝intermedia功能。你必須修改資料庫以安裝這項功能。 
修改過程: 
運行 $ORACLE_HOME/bin/dbassist, 選擇'modify database', 然後在選擇資料庫功能時將j server 和 intermedia 都選上安裝intermedia必須同時安裝jserver).強烈建議你在做這個改動前先備份整個資料庫。 
 
2.設定extproc 
Oracle 是通過所謂的‘外部調用功能’(external procedure)來實現intermedia的,因此正確地設定extproc是關鍵一步。 
首先要配置listener 使它能監聽intermedia 調用的請求。你可以通過運行$ORACLE_HOME/bin/netassit 來進行配置,也可以手工修改設定檔:$ORACLE_HOME/network/admin/listener.ora ,然後重新啟動listener。下面以一個例子來講述如何手工修改設定檔。 
開啟listener.ora檔案,在修改前,通常有如下內容假定使用預設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的監聽,辦法就是分別增加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應填寫你的資料庫的實際值,但program一項必須填寫extproc. 
其次,要設定管理員端的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對應相同。 
修改完成後,重新啟動listener (先用lsnrctl stop, 然後 lsnrctl start), 然後,使用tnsping 來測試一下是否配置正確: 
tnsping extproc_connection_data 或者 
tnsping extproc_connection_data.world,如果配置正確,會顯示: 
Attempting to contact (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)) OK140毫秒) 
否則請檢查你的上述兩個檔案,並注意,在修改後一定要重新啟動listener,但並不需要重新啟動資料庫。  


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.