成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎么創(chuàng)建OracleText用戶

這篇文章主要講解了“怎么創(chuàng)建Oracle Text用戶”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么創(chuàng)建Oracle Text用戶”吧!

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作與策劃設(shè)計(jì),潢川網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:潢川等地區(qū)。潢川做網(wǎng)站價(jià)格咨詢:18980820575

1.創(chuàng)建Oracle Text用戶

在創(chuàng)建Oracle Text索引和使用Oracle Text PL / SQL包之前,需要?jiǎng)?chuàng)建一個(gè)具有CTXAPP角色的用戶。 該角色可以執(zhí)行以下操作:

  • 創(chuàng)建和刪除Oracle Text索引首選項(xiàng)

  • 使用Oracle Text PL / SQL軟件包

--1.創(chuàng)建用戶ctxdev
CREATE USER ctxdev IDENTIFIED BY oracle default tablespace tbs_ctxdev;
--2.授予角色給用戶ctxdev
GRANT RESOURCE, CONNECT, CTXAPP TO ctxdev;
--3.授予CTX PL/SQL程序包的執(zhí)行權(quán)限
GRANT EXECUTE ON CTXSYS.CTX_CLS TO ctxdev;
GRANT EXECUTE ON CTXSYS.CTX_DDL TO ctxdev;
GRANT EXECUTE ON CTXSYS.CTX_DOC TO ctxdev;
GRANT EXECUTE ON CTXSYS.CTX_OUTPUT TO ctxdev;
GRANT EXECUTE ON CTXSYS.CTX_QUERY TO ctxdev;
GRANT EXECUTE ON CTXSYS.CTX_REPORT TO ctxdev;
GRANT EXECUTE ON CTXSYS.CTX_THES TO ctxdev;
GRANT EXECUTE ON CTXSYS.CTX_ULEXER TO ctxdev;
--這些權(quán)限已經(jīng)被授予給CTXAPP角色。 但是由于角色權(quán)限在PL/SQL過程中并不總是起作用,因此最安全的方式是將這些權(quán)限顯式授予已經(jīng)具有CTXAPP角色的用戶。
SQL> select role,privilege,table_name from role_tab_privs where role='CTXAPP' order by 2,3;
ROLE		     PRIVILEGE				      TABLE_NAME
-------------------- ---------------------------------------- --------------------
CTXAPP		     DELETE				      DR$DICTIONARY
CTXAPP		     EXECUTE				      CTX_ANL
CTXAPP		     EXECUTE				      CTX_DDL
CTXAPP		     EXECUTE				      CTX_ENTITY
CTXAPP		     EXECUTE				      CTX_OUTPUT
CTXAPP		     EXECUTE				      CTX_THES
CTXAPP		     EXECUTE				      CTX_TREE
CTXAPP		     EXECUTE				      CTX_ULEXER
CTXAPP		     EXECUTE				      DRIENTL
CTXAPP		     EXECUTE				      DRITHSL
CTXAPP		     INSERT				      DR$DICTIONARY
CTXAPP		     INSERT				      DR$THS
CTXAPP		     INSERT				      DR$THS_BT
CTXAPP		     INSERT				      DR$THS_FPHRASE
CTXAPP		     INSERT				      DR$THS_PHRASE
CTXAPP		     SELECT				      DR$DICTIONARY
CTXAPP		     UPDATE				      DR$DICTIONARY
CTXAPP		     UPDATE				      DR$THS_PHRASE

如果數(shù)據(jù)庫沒有安裝Oracle Text,則授予CTXAPP會(huì)報(bào)如下錯(cuò)誤:

ORA-01919: role 'CTXAPP' does not exist

此時(shí)我們需要給數(shù)據(jù)庫安裝Oracle Text,測(cè)試環(huán)境是12c多租戶,可以在PDB(注意要先在CDB中安裝,不然下次重啟數(shù)據(jù)庫時(shí),檢測(cè)到CDB中沒有Oracle Text,PDB會(huì)進(jìn)入受限模式)中直接安裝Oracle Text組件:

--方法1:執(zhí)行catctx.sql腳本
SQL> alter session set container=orcl;
SQL> select COMP_ID,COMP_NAME,VERSION,STATUS,SCHEMA from user_registry where comp_id='CONTEXT';
no rows selected
--1.安裝Oracle Text
SQL> @?/ctx/admin/catctx.sql oracle SYSAUX TEMP NOLOCK  --執(zhí)行腳本+參數(shù)[ctxsys用戶密碼、用戶默認(rèn)永久sysaux、臨時(shí)表空間temp、創(chuàng)建后用戶是否鎖定nolock |lock]
SQL> col comp_name for a20;
SQL> set linesize 200;
SQL> col schema for a20;
SQL> col status for a20;
SQL> col version for a20;
SQL> col comp_id for a20;
SQL> select COMP_ID,COMP_NAME,VERSION,STATUS,SCHEMA from user_registry where comp_id='CONTEXT';
COMP_ID 	     COMP_NAME		  VERSION	       STATUS		    SCHEMA
-------------------- -------------------- -------------------- -------------------- --------------------
CONTEXT 	     Oracle Text	  12.2.0.1.0	       VALID		    CTXSYS
--2.安裝默認(rèn)語言首選項(xiàng)
SQL> @?/ctx/admin/defaults/dr0defin.sql "AMERICAN";
--方法2:DBCA silent install的方式
--注意:在12.1.0.2或12.2.0.1中不支持通過DBCA將數(shù)據(jù)庫組件(如Oracle Text)添加到單個(gè)PDB。 此功能將在18.1中添加。
--語法:
--非多組戶環(huán)境:
dbca -silent -configureDatabase -sourceDB <db unique name for RAC or SID for Single Instance db> -sysDBAUserName <user name with SYSDBA privileges> -sysDBAPassword <password for sysDBAUserName user name>] -addDBOption ORACLE_TEXT
--多租戶環(huán)境:
dbca -silent -configurePluggableDatabase -sourceDB <container_name> -pdbName <pluggable_name> -sysDBAUserName SYS -sysDBAPassword <password> -addDBOption ORACLE_TEXT
--1.安裝Oracle Text
dbca -silent -configureDatabase  -SourceDB lycdb -sysDBAUsername sys -sysDBAPassword oracle -addDBOption ORACLE_TEXT
--2.安裝默認(rèn)語言首選項(xiàng)
如果語言不是英語,則安裝適當(dāng)?shù)奶囟ㄓ谡Z言的默認(rèn)首選項(xiàng)。$ORACLE_HOME/ctx/admin/defaults目錄中包含為Oracle Text支持的每種語言創(chuàng)建特定于語言的默認(rèn)首選項(xiàng)的腳本,例如英語(US),丹麥語(DK),荷蘭語(NL),芬蘭語(SF),法語 (F),德語(D),意大利語(IT),葡萄牙語(PT),西班牙語(E)和瑞典語(S)。 它們以drdefXX.sql的形式命名,其中XX是國(guó)際憑證代碼。
如果不知道國(guó)際憑證代碼,也可以調(diào)用dr0defdp.sql(刪除默認(rèn)首選項(xiàng))和dr0defin.sql(根據(jù)語言名稱,安裝首選項(xiàng))
一般英文用:AMERICAN,中文用SIMPLIFIED CHINESE
例如,要手動(dòng)安裝德語默認(rèn)首選項(xiàng),請(qǐng)以CTXSYS身份登錄sqlplus并運(yùn)行以下語句:
SQL> connect / sysdba
SQL> spool defprefs_install.log
SQL> alter user ctxsys identified by ctxsys account unlock;
SQL> connect ctxsys/ctxsys
SQL> @?/ctx/admin/defaults/dr0defdp.sql
SQL> @?/ctx/admin/defaults/dr0defin.sql "SIMPLIFIED CHINESE";
SQL> connect SYS/password as SYSDBA
SQL> alter user ctxsys account lock password expire;
SQL> spool off

2.查詢應(yīng)用程序簡(jiǎn)單體驗(yàn)

在基本的文本查詢應(yīng)用程序中,用戶輸入查詢?cè)~或短語,并期望該應(yīng)用程序返回與查詢最匹配的文檔列表。 這樣的應(yīng)用程序涉及創(chuàng)建一個(gè)CONTEXT索引并使用CONTAINS對(duì)其進(jìn)行查詢。

通常,查詢應(yīng)用程序需要用戶界面。 CONTEXT查詢應(yīng)用程序中提供了一個(gè)如何使用CONTEXT索引類型構(gòu)建這樣的查詢應(yīng)用程序的示例。

下面示例提供了基本的SQL語句,用于加載文本表,為文檔建立索引以及查詢索引。

--1.創(chuàng)建存放文本數(shù)據(jù)的表,并插入數(shù)據(jù)
SQL> conn ctxdev/oracle@orcl
CREATE TABLE docs (id NUMBER PRIMARY KEY, text VARCHAR2(200));
INSERT INTO docs VALUES(1, '<HTML>California is a state in the US.</HTML>');
INSERT INTO docs VALUES(2, '<HTML>Paris is a city in France.</HTML>');
INSERT INTO docs VALUES(3, '<HTML>France is in Europe.</HTML>');
commit;
--2.創(chuàng)建Context索引
--通過在文本列上創(chuàng)建一個(gè)CONTEXT索引來為HTML文件建立索引,如下所示。 因?yàn)橐獮镠TML編制索引,所以本示例使用NULL_FILTER首選項(xiàng)類型(不進(jìn)行過濾)和HTML_SECTION_GROUP類型。 如果為PDF,Microsoft Word或其他格式的文檔建立索引,請(qǐng)使用CTXSYS.AUTO_FILTER(默認(rèn)設(shè)置)作為FILTER首選項(xiàng)。
CREATE INDEX idx_docs ON docs(text)
     INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS
     ('FILTER CTXSYS.NULL_FILTER SECTION GROUP CTXSYS.HTML_SECTION_GROUP');
     
--3.查詢表數(shù)據(jù)
--查找包含單詞France的所有文檔:
COLUMN text FORMAT a40;
SQL> SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, 'France', 1) > 0;
  SCORE(1)	   ID TEXT
---------- ---------- --------------------------------------------------------------------------------
	 4	    2 <HTML>Paris is a city in France.</HTML>
	 4	    3 <HTML>France is in Europe.</HTML>
--4.展示文檔
--在實(shí)際的應(yīng)用程序中,可以顯示所選文檔并突出顯示查詢?cè)~。 Oracle Text使您可以使用CTX_DOC軟件包標(biāo)記文檔??梢栽赟QL * Plus中使用匿名PL/SQL塊演示HTML文檔標(biāo)記。 但是,在實(shí)際應(yīng)用程序中,可以在瀏覽器中顯示文檔。此PL/SQL示例使用內(nèi)存中的CTX_DOC.MARKUP版本突出顯示文檔3中的單詞France。它分配了一個(gè)臨時(shí)CLOB(字符大對(duì)象數(shù)據(jù)類型)來存儲(chǔ)標(biāo)記文本,并將其讀回到標(biāo)準(zhǔn)輸出。 然后在退出之前將CLOB釋放:
SET SERVEROUTPUT ON;
DECLARE
  mklob CLOB;
  amt   NUMBER := 40;
  line  VARCHAR2(80);
BEGIN
  CTX_DOC.MARKUP('idx_docs', '3', 'France', mklob);
  DBMS_LOB.READ(mklob, amt, 1, line);
  DBMS_OUTPUT.PUT_LINE(line);
  DBMS_LOB.FREETEMPORARY(mklob);
END;
/
<HTML><<<France>>> is in Europe.</HTML>
PL/SQL procedure successfully completed.
--5.數(shù)據(jù)處理后同步索引
--創(chuàng)建CONTEXT索引時(shí),需要顯式同步索引,以使用對(duì)文本表的任何插入,更新或刪除來更新索引??梢允褂肅TX_DDL.SYNC_INDEX過程來執(zhí)行此操作。
--插入新數(shù)據(jù)
INSERT INTO docs VALUES(4, '<HTML>Los Angeles is a city in California.</HTML>');
INSERT INTO docs VALUES(5, '<HTML>Mexico City is big.</HTML>');
commit;
--提交后沒能查詢到新數(shù)據(jù)
SQL> SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, 'city', 1) > 0;
  SCORE(1)	   ID TEXT
---------- ---------- --------------------------------------------------------------------------------
	 4	    2 <HTML>Paris is a city in France.</HTML>
--將索引與2 Mb的內(nèi)存同步,然后重新運(yùn)行查詢:     
SQL> EXEC CTX_DDL.SYNC_INDEX('idx_docs', '2M');
PL/SQL procedure successfully completed.
--新數(shù)據(jù)可以正常查詢
SQL> SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, 'city', 1) > 0;
  SCORE(1)	   ID TEXT
---------- ---------- --------------------------------------------------------------------------------
	 4	    2 <HTML>Paris is a city in France.</HTML>
	 4	    4 <HTML>Los Angeles is a city in California.</HTML>
	 4	    5 <HTML>Mexico City is big.</HTML>

3.目錄應(yīng)用程序簡(jiǎn)單體驗(yàn)

示例提供了基本的SQL語句,可為出售電子設(shè)備(例如相機(jī)和CD播放器)的拍賣網(wǎng)站創(chuàng)建目錄索引。 每天都會(huì)添加新的庫存,并且必須將項(xiàng)目描述,投標(biāo)日期和價(jià)格一起存儲(chǔ)。

對(duì)于混合查詢,該應(yīng)用程序需要良好的響應(yīng)時(shí)間。 關(guān)鍵是確定用戶經(jīng)常搜索哪些列以創(chuàng)建合適的CTXCAT索引。 對(duì)此類索引的查詢使用CATSEARCH運(yùn)算符。

--1.創(chuàng)建一張庫存表并插入數(shù)據(jù)
conn ctxdev/oracle@orcl
CREATE TABLE auction(
item_id NUMBER,
title VARCHAR2(100),
category_id NUMBER,
price NUMBER,
bid_close DATE);
INSERT INTO AUCTION VALUES(1, 'NIKON CAMERA', 1, 400, '24-OCT-2002');
INSERT INTO AUCTION VALUES(2, 'OLYMPUS CAMERA', 1, 300, '25-OCT-2002');
INSERT INTO AUCTION VALUES(3, 'PENTAX CAMERA', 1, 200, '26-OCT-2002');
INSERT INTO AUCTION VALUES(4, 'CANON CAMERA', 1, 250, '27-OCT-2002');
commit;
--2.確定可能要檢索的條件。 在此示例中,確定所有查詢都在title列中搜索商品說明,并且大多數(shù)查詢都按price排序。 當(dāng)使用CATSEARCH運(yùn)算符時(shí),請(qǐng)為文本列指定術(shù)語,并為結(jié)構(gòu)化子句指定條件。
--3.創(chuàng)建子索引以按價(jià)格排序
--創(chuàng)建一個(gè)名為auction_set的索引集,并為price列添加一個(gè)子索引
EXEC CTX_DDL.CREATE_INDEX_SET('auction_iset');
EXEC CTX_DDL.ADD_INDEX('auction_iset','price');
--4.創(chuàng)建CTXCAT索引
CREATE INDEX auction_titlex ON AUCTION(title) INDEXTYPE IS CTXSYS.CTXCAT PARAMETERS ('index set auction_iset');
--5.查詢
COLUMN title FORMAT a40;
SELECT title, price FROM auction WHERE CATSEARCH(title, 'CAMERA', 'order by price')> 0;
TITLE					      PRICE
---------------------------------------- ----------
PENTAX CAMERA					200
CANON CAMERA					250
OLYMPUS CAMERA					300
NIKON CAMERA					400
SQL> SELECT title, price FROM auction WHERE CATSEARCH(title, 'CAMERA', 'price <= 300')>0;
TITLE					      PRICE
---------------------------------------- ----------
PENTAX CAMERA					200
CANON CAMERA					250
OLYMPUS CAMERA					300
--6.更新表數(shù)據(jù),CTXCAT索引會(huì)自動(dòng)更新
INSERT INTO AUCTION VALUES(5, 'FUJI CAMERA', 1, 350, '28-OCT-2002');
INSERT INTO AUCTION VALUES(6, 'SONY CAMERA', 1, 310, '28-OCT-2002');
commit;
SQL> SELECT title, price FROM auction WHERE CATSEARCH(title, 'CAMERA', 'order by price')> 0;
TITLE					      PRICE
---------------------------------------- ----------
PENTAX CAMERA					200
CANON CAMERA					250
OLYMPUS CAMERA					300
SONY CAMERA					310
FUJI CAMERA					350
NIKON CAMERA					400

4.分類應(yīng)用程序簡(jiǎn)單體驗(yàn)

分類應(yīng)用程序的功能是根據(jù)文檔內(nèi)容執(zhí)行某些操作。 這些操作可以包括為文檔分配類別ID或?qū)⑽臋n發(fā)送給用戶。 結(jié)果是對(duì)文檔進(jìn)行分類。

--1.創(chuàng)建規(guī)則表
conn ctxdev/oracle@orcl
CREATE TABLE queries (
      query_id      NUMBER,
      query_string  VARCHAR2(80)
    );
INSERT INTO queries VALUES (1, 'oracle');
INSERT INTO queries VALUES (2, 'larry or ellison');
INSERT INTO queries VALUES (3, 'oracle and text');
INSERT INTO queries VALUES (4, 'market share');
commit;
--2.創(chuàng)建CTXRULE索引
CREATE INDEX queryx ON queries(query_string) INDEXTYPE IS CTXSYS.CTXRULE;
--3.在SELECT語句的WHERE子句中使用MATCHES運(yùn)算符可將文檔與查詢匹配,然后對(duì)文檔進(jìn)行分類
COLUMN query_string FORMAT a35;
SELECT query_id,query_string FROM queries WHERE MATCHES(query_string, 'Oracle announced that its market share in databases increased over the last year.')>0;
  QUERY_ID QUERY_STRING
---------- -----------------------------------
	 4 market share
	 1 oracle

感謝各位的閱讀,以上就是“怎么創(chuàng)建Oracle Text用戶”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)怎么創(chuàng)建Oracle Text用戶這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

本文標(biāo)題:怎么創(chuàng)建OracleText用戶
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article28/ggcgcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、做網(wǎng)站、云服務(wù)器、定制網(wǎng)站、企業(yè)建站、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)
健康| 桂平市| 鄢陵县| 渝北区| 泰兴市| 东安县| 昌邑市| 黔西县| 临洮县| 克拉玛依市| 密山市| 长阳| 云龙县| 南京市| 佛教| 林州市| 南开区| 鹿邑县| 高尔夫| 金乡县| 元朗区| 菏泽市| 高邑县| 二连浩特市| 高陵县| 石泉县| 安国市| 塔河县| 温州市| 长子县| 秭归县| 宜章县| 崇州市| 延津县| 修水县| 平谷区| 和田市| 鱼台县| 桂林市| 黑龙江省| 靖安县|