oracle全文索引之datastore_3_FILE_DATASTORE
DATASTORE是FILE_DATASTORE的测试
[oracle@rhel140 ~]$ cat OUTPUT.TXT
ORACLE
oracle
[oracle@rhel140 LOG]$ cat EMPXT_000_2012_2680.LOG
SOURCE
ABC
SQL> conn myuser/myuser
Connected.
SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));
Table created.
SQL> INSERT INTO T VALUES (1, 'OUTPUT.TXT');
1 row created.
SQL> commit;
Commit complete.
SQL> BEGIN
2 CTX_DDL.CREATE_PREFERENCE('TEST_FILE', 'FILE_DATASTORE');
3 CTX_DDL.SET_ATTRIBUTE('TEST_FILE', 'PATH', '/home/oracle');
4 END;
5 /
PL/SQL procedure successfully completed.
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
PARAMETERS ('DATASTORE TEST_FILE'); 2
Index created.
SQL> SELECT * from T WHERE CONTAINS(DOCS, 'ORACLE') > 0;
ID DOCS
---- --------------------
1 OUTPUT.TXT
需要注意的是在建立PREFERENCE的PATH属性时不能用客户端的目录和文件,一定是服务器端的目录和文件,
我用WINDOWS的目录时,在dr$index_error中就会出现下面的错误
SQL> select * from ctxsys.dr$index_error;
ERR_IDX_ID ERR_TIMES ERR_TEXTKEY
---------- --------- ------------------
ERR_TEXT
--------------------------------------------------------------------------------
1181 13-MAY-09 AAAM52AAEAAAAGkAAA
DRG-11513: unable to open or write to file /home/oracle/OUTPUT.TXT
SQL> INSERT INTO T VALUES (2, 'LOG/EMPXT_000_2012_2680.LOG');
1 row created.
SQL> commit;
Commit complete.
SQL> exec CTX_DDL.SYNC_INDEX('IND_T_DOCS');
PL/SQL procedure successfully completed.
SQL> SELECT * from T WHERE CONTAINS(DOCS, 'SOURCE') > 0;
no rows selected
Oracle似乎只支持在FILE_DATASTORE中设置的路径中进行搜索,即使像上面这个例子中第2条记录,文档存储在
指定路径下的子目录中,这种情况也是没有办法进行索引的。
如果将文件位置从/home/oracle/LOG挪到/home/oracle目录下,则可以进行索引:
SQL> host mv /home/oracle/LOG/EMPXT_000_2012_2680.LOG /home/oracle
SQL> UPDATE T SET DOCS = 'EMPXT_000_2012_2680.LOG' WHERE ID = 2;
1 row updated.
SQL> COMMIT;
Commit complete.
SQL&g
相关文档:
oracle表空间操作详解
1
2
3作者: 来源: 更新日期:2006-01-04
5
6
7建立表空间
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
oracle 从10.2.0.2 到 10.2.0.4 升级
一、下载升级包
下载地址:
ftp://updates.oracle.com/6810189/p6810189_10204_Linux-x86.zip
注意:不要用flashget下载,用迅雷下载。文件大小1G多。
二、关闭数据库
以oracle用户远程登录suse系统:
1. sqlplus /nolog
SQL> connect /as sysdba
SQL> ......
语法:
substr( string, start_position, [ length ] )
取子字符串,从start_position开始,取length个,length为可选,如果length为空则返回start_position后的所有字符。
实例:
substr('This is a test', 6, 2) would return 'is'
&nbs ......
lengthb(string)计算string所占的字节长度 :返回字符串的长度,单位是字节
length(string)计算string所占的字符长度 :返回字符串的长度,单位是字符
对于单字节字符,LENGTHB和LENGTH是一样的.
如可以用length(‘string’)=lengthb(‘string’)判断字符串是否含有中文。
select lengt ......
SQL> create table test2(s1 varchar(10),s2 varchar2(10));
表已创建。
SQL> insert into test2 values('11','111');
已创建 1 行。
SQL> insert into test2 values('22','222');
已创建 1 行。
SQL> CREATE OR REPLACE PACKAGE test222 AS
2 TYPE t_cursor IS REF CURSOR;
3 procedure p_tes ......