真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么創(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ù)庫(kù)沒有安裝Oracle Text,則授予CTXAPP會(huì)報(bào)如下錯(cuò)誤:

ORA-01919: role 'CTXAPP' does not exist

此時(shí)我們需要給數(shù)據(jù)庫(kù)安裝Oracle Text,測(cè)試環(huán)境是12c多租戶,可以在PDB(注意要先在CDB中安裝,不然下次重啟數(shù)據(jù)庫(kù)時(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)語(yǔ)言首選項(xiàng)
SQL> @?/ctx/admin/defaults/dr0defin.sql "AMERICAN";
--方法2:DBCA silent install的方式
--注意:在12.1.0.2或12.2.0.1中不支持通過DBCA將數(shù)據(jù)庫(kù)組件(如Oracle Text)添加到單個(gè)PDB。 此功能將在18.1中添加。
--語(yǔ)法:
--非多組戶環(huán)境:
dbca -silent -configureDatabase -sourceDB  -sysDBAUserName  -sysDBAPassword ] -addDBOption ORACLE_TEXT
--多租戶環(huán)境:
dbca -silent -configurePluggableDatabase -sourceDB  -pdbName  -sysDBAUserName SYS -sysDBAPassword  -addDBOption ORACLE_TEXT
--1.安裝Oracle Text
dbca -silent -configureDatabase  -SourceDB lycdb -sysDBAUsername sys -sysDBAPassword oracle -addDBOption ORACLE_TEXT
--2.安裝默認(rèn)語(yǔ)言首選項(xiàng)
如果語(yǔ)言不是英語(yǔ),則安裝適當(dāng)?shù)奶囟ㄓ谡Z(yǔ)言的默認(rèn)首選項(xiàng)。$ORACLE_HOME/ctx/admin/defaults目錄中包含為Oracle Text支持的每種語(yǔ)言創(chuàng)建特定于語(yǔ)言的默認(rèn)首選項(xiàng)的腳本,例如英語(yǔ)(US),丹麥語(yǔ)(DK),荷蘭語(yǔ)(NL),芬蘭語(yǔ)(SF),法語(yǔ) (F),德語(yǔ)(D),意大利語(yǔ)(IT),葡萄牙語(yǔ)(PT),西班牙語(yǔ)(E)和瑞典語(yǔ)(S)。 它們以drdefXX.sql的形式命名,其中XX是國(guó)際憑證代碼。
如果不知道國(guó)際憑證代碼,也可以調(diào)用dr0defdp.sql(刪除默認(rèn)首選項(xiàng))和dr0defin.sql(根據(jù)語(yǔ)言名稱,安裝首選項(xiàng))
一般英文用:AMERICAN,中文用SIMPLIFIED CHINESE
例如,要手動(dòng)安裝德語(yǔ)默認(rèn)首選項(xiàng),請(qǐng)以CTXSYS身份登錄sqlplus并運(yùn)行以下語(yǔ)句:
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ǔ),并期望該應(yīng)用程序返回與查詢最匹配的文檔列表。 這樣的應(yīng)用程序涉及創(chuàng)建一個(gè)CONTEXT索引并使用CONTAINS對(duì)其進(jìn)行查詢。

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

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

--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, 'California is a state in the US.');
INSERT INTO docs VALUES(2, 'Paris is a city in France.');
INSERT INTO docs VALUES(3, 'France is in Europe.');
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 Paris is a city in France.
	 4	    3 France is in Europe.
--4.展示文檔
--在實(shí)際的應(yīng)用程序中,可以顯示所選文檔并突出顯示查詢?cè)~。 Oracle Text使您可以使用CTX_DOC軟件包標(biāo)記文檔。可以在SQL * 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;
/
<<>> is in Europe.
PL/SQL procedure successfully completed.
--5.數(shù)據(jù)處理后同步索引
--創(chuàng)建CONTEXT索引時(shí),需要顯式同步索引,以使用對(duì)文本表的任何插入,更新或刪除來更新索引。可以使用CTX_DDL.SYNC_INDEX過程來執(zhí)行此操作。
--插入新數(shù)據(jù)
INSERT INTO docs VALUES(4, 'Los Angeles is a city in California.');
INSERT INTO docs VALUES(5, 'Mexico City is big.');
commit;
--提交后沒能查詢到新數(shù)據(jù)
SQL> SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, 'city', 1) > 0;
  SCORE(1)	   ID TEXT
---------- ---------- --------------------------------------------------------------------------------
	 4	    2 Paris is a city in France.
--將索引與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 Paris is a city in France.
	 4	    4 Los Angeles is a city in California.
	 4	    5 Mexico City is big.

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

示例提供了基本的SQL語(yǔ)句,可為出售電子設(shè)備(例如相機(jī)和CD播放器)的拍賣網(wǎng)站創(chuàng)建目錄索引。 每天都會(huì)添加新的庫(kù)存,并且必須將項(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)建一張庫(kù)存表并插入數(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ù)語(yǔ),并為結(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語(yǔ)句的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)注!


文章題目:怎么創(chuàng)建OracleText用戶
本文地址:http://weahome.cn/article/ggcgcp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部