oracle全文索引之LEXER_1_BASIC_LEXER
介绍完Oracle全文索引的FILTER属性,继续介绍Oracle的LEXER属性。 Oracle全文索引的LEXER属性用于处理各种不同的语言。最基本的英文使用BASE_FILTER,而如果需要使用中文则可以使用CHINESE_VGRAM_LEXER或CHINESE_LEXER。[@more@]这篇文章简单说明BASIC_LEXER属性。BASIC_LEXER属性支持多种语言,比如英语、德语、荷兰语、挪威语、瑞典语等等。BASIC_LEXER除了支持多种语言,还可以设置多种属性。比如这个例子中介绍的索引的大小写设置:SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));表已创建。SQL> INSERT INTO T VALUE
oracle全文索引之FILTER_4_PROCEDURE_FILTER
这篇文章继续介绍全文索引的FILTER属性,介绍全文索引的PROCEDURE_FILTER属性。 对于一些复杂的需求,Oracle 自定义的FILTER可能并不合适,Oracle支持用户自己编写用于FILTER的程序。Oracle提供两种方式,一种是USER_FILTER一种 是PROCEDURE_FILTER。USER_FILTER是用户编译好的命令行程序,而PROCEDURE_FILTER是调用用户编写的存储过程。[@more@]下面举一个PROCEDURE_FILTER的例子,在例子中被索引的文档为纯文本格式,要求是不索引文档中注释部分的内容。这种要求是预定义FILTER无法达到的,只能通过PROCEDURE_FILTER的方式来解
oracle全文索引之FILTER_3_FORMAT_COLUMN
这篇文章继续介绍全文索引的FILTER属性,介绍对不同类型的数据采用不同类型的FILTER属性的方法。如果Oracle索引的文档包括多种类型,比如doc文件、html文件、pdf文件、纯文本文件等等。由于Oracle不建议对HTML、XML和纯文本文件使用INSO_FILTER,因此没有一个统一适用的FILTER属性适合所有的文档。[@more@]Oracle提供了一种FORMAT列的方法,通过设置FORMAT列的内容可以通知Oracle建立何种FILTER甚至是不建立索引。下面看一个简单的例子:[oracle@rhel140 ~]$ sqlplus myuser/myuserSQL*Plus: Release 10.2.0.1.0 - Production on Sun May
oracle全文索引之FILTER_2_INSO_FILTER
这篇文章继续介绍全文索引的FILTER属性,介绍Oracle的INSO_FILTER属性。[@more@]Oracle的全文索引除了可以支持文本文件外,还可以支持多种文档格式,对于这些文档格式,在建立索引的时候需要指定INSO_FILTER参数,使用这个过滤参数,Oracle的全文索引可以识别绝大部分的常见文档,比如:word、pdf等。下面看一个索引文档的例子:SQL> conn myuser/myuserConnected.SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));Table created.SQL> INSERT INTO T VALUES (1, 'pdf.pdf');1 row created.SQL> INSERT INTO T VALUES (
oracle全文索引之FILTER_1_NULL_FILTER
介绍完Oracle全文索引的DATASTORE属性,继续介绍Oracle的FILTER属性。Oracle全文索引的FILTER属性主要是针对具有一定格式的文档,Oracle根据FILTER的设定来过滤那些不属于文章内容的部分。 FILTER属性包含的属性有:CHARSET_FILTER、INSO_FILTER、NULL_FILTER、USER_FILTER、PROCEDURE_FILTER几种。[@more@]这里仍然从FILTER的最简单属性NULL_FILTER开始介绍:SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(4000));表已创建。SQL> INSERT INTO T VALUES (1, 'This is a sample for Oracle TEXT.');已创建 1 行。SQL> INSERT I
oracle全文索引之datastore_6_NESTED_DATASTORE
这篇文章继续讨论全文索引的DATASTORE属性,介绍NESTED_DATASTORE。[@more@]全文索引支持将数据存储在多个列中或存储在主子表中,全文索引还支持将数据存储在嵌套表中。嵌套表的例子和主子表比较类似:首先创建嵌套表对象,并建立嵌套表:SQL> CREATE TYPE T_NESTED_REC AS OBJECT2 (3 LINE_NO NUMBER,4 TEXT VARCHAR2(100)5 );6 /类型已创建。SQL> CREATE TYPE T_NESTED_TAB AS TABLE OF T_NESTED_REC;2 /类型已创建。SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, DOCS T_NESTED_TAB, OTHER VARCHAR2(1))2 NESTED TABLE DOCS S
oracle全文索引之datastore_5_detail_datastore
这篇文章继续讨论全文索引的DATASTORE属性,介绍DETAIL_DATASTORE。 [@more@] 全文索引运行将被索引的数据存储在子表的多条记录中,下面看一个简单的例子: SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, AUTHER VARCHAR2(30), TITLE VARCHAR2(30));Table created.SQL> CREATE TABLE T1 (ID NUMBER PRIMARY KEY, FID NUMBER, SEQ NUMBER, DOCS VARCHAR2(1000), 2 CONSTRAINT FK_T1_FID FOREIGN KEY (FID) REFERENCES T(ID)) 3 ;Table created.SQL> INSERT INTO T VALUES (1, 'YTK', 'DETAIL DATASTORE');1 row created.SQ
oracle全文索引之datastore_4_URL_DATASTORE
全文索引可以很方便的索引存储在INTERNET上的信息。在数据库中只需要存储需要索引的文章的URL就可以了。 由于目前讨论的是DATASTORE属性,因此这个例子只索引HTML文章,对于其他需要使用FILTER属性的文章,在以后讨论。[@more@]SQL> show user;USER is "MYUSER"SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));Table created.SQL> INSERT INTO T VALUES (1, 'http://yangtingkun.itpub.net/');1 row created.SQL> INSERT INTO T VALUES (2, 'http://www.itpub.net/');1 row created.SQL> COMMIT;Commi
oracle全文索引之datastore_3_FILE_DATASTORE
DATASTORE是FILE_DATASTORE的测试[@more@][oracle@rhel140 ~]$ cat OUTPUT.TXTORACLEoracle[oracle@rhel140 LOG]$ cat EMPXT_000_2012_2680.LOGSOURCEABCSQL> conn myuser/myuserConnected.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> BEGIN2 CTX_DDL.CREATE_PREFERENCE('TEST_FILE', 'FILE_DATASTORE');3 CTX_DDL.SET_ATTRIBUTE('TEST_FILE', 'PATH', '/home/oracle');4 END; 5 /PL/SQL procedur
oracle全文索引之datastore_2_MULTI_COLUMN_DATASTORE
继续讨论全文索引的DATASTORE属性,介绍MULTI_COLUMN_DATASTORE。[@more@]如果被索引的文章是保存在数据库中,但是内容分布在多个列中,那么可以通过建立一个MULTI_COLUMN_DATASTORE来索引完整的文章:SQL> CREATE TABLE T (ID NUMBER, DOC1 VARCHAR2(4000), DOC2 VARCHAR2(4000), DOC3 VARCHAR2(4000));表已创建。SQL> INSERT INTO T VALUES (1, 2 'The first paragraph of article in doc1.', 3 'The second partments is the doc2.', 4 'The last content is in the doc3.');已创建 1 行。SQL> INSERT INTO T VAL
oracle全文索引之datastore_1_DIRECT_DATASTORE
Oracle Text功能十分强大,开始学习,主要参考yangtingkun的blog和文档进行。第一步先搞清楚datastore的类型。[@more@]DATASTORE的类型如下:DIRECT_DATASTOREMULTI_COLUMN_DATASTOREDETAIL_DATASTOREFILE_DATASTORENESTED_DATASTOREURL_DATASTOREUSER_DATASTORE下面就各种类型进行测试,DIRECT_DATASTORE是最简单的,默认是就是用这种类型Oracle的全文索引不要求被索引的文章一定存储在数据库中,不过如果文章存储在数据库的一列中,那么这种情况建立索引是最简单的。SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(4000));表已创建。
oracle 10g gird control的安装
几乎花了两个星期才装成功的,主要是由于/etc/hosts文件配的不对,装好之后觉的还蛮简单的,自己真笨,有几次差点就想放弃了。 [@more@]在新的机器上安装时不需要安装oracle的任何软件,在安装gird control时会自动安装oracle软件和数据库的。装成功的配置如下:#add parameters to /etc/sysctl.confkernel.shmall = 2097152kernel.shmmax = 536870912kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 65536net.ipv4.ip_local_port_range = 1024 65000net.core.rmem_default = 262144net.core.rmem_max = 262144n
cursor_sharing为force时带来的一个执行计划的假象
有时候可能存在评估的执行计划和真实的执行计划不一样,查看执行计划的方法如下: a.explain plan ,可通过dbms_xplan.display来查看执行计划 b.set autot c.v$sql_plan d.dbms_xplan.display_cursor a,b的执行计划都是根据explain plan得到的,因此都不是真实的(基表是sql_plan),而3,4的执行计划都是真实的(基表是 V$SQL_PLAN),cursor_sharing为force+直方图的时候可能存在一个假象,就是set autot trace给你显示的执行计划很完美,而真实的执行计划是当作绑定变量处理的,第一次查询的时候可能存在bind peeking的影响,而之后的
object_id 与data_object_id 的区别
对于dba_objects,有几个值得注意的地方 1, object_id与data_object_id是有区别的,前者指dictionary object number;后者指dictionary object number of the segment2, 对普通表及索引来说,object_id与data_object_id是一致的.当object不占用存储空间时, data_object_id为null,如分区表(不是指分区),view,sequence,synonym等等3, 分区表中的分区有不同的object_id和data_object_id; 分区表无data_object_id 注意dba_objects.object_id与dba_objects.data_object_id的区别OBJECT_ID :Dictionary object number of the objectDATA_
一个shell 脚本用来同步表用的
经常要将数据从外网同步到内网,一般会先drop掉内网的所有table后import数据进来。但是这样就会导致内网的AP不能使用。为将影响减少到最少,写了个脚本,将表一个个的导入进来,即truncate掉一个表再import一个表。[@more@]1.需先将外网的数据都export出来,本例的dump文件是t_remhs.dmp,需同步的文件是t_remhs_5,t_remhs_4,t_remhs_3,t_remhs_2,t_remhs_1[oracle@qht109 remhs_dump]$ exp l5m/l5m file=t_remhs.dmp tables=t_remhs_5,t_remhs_4,t_remhs_3,t_remhs_2,t_remhs_1Export: Release 10.2.0.4.0 - Production on Wed Mar 11 15:
Automatic Storage Management (ASM)在oracle的使用
测试了一下ASM在数据库中的使用,各种文件的建立方法。1.登入ASM库建立diskgroupSession ASM:SQL> drop diskgroup dgroup1;Diskgroup dropped.SQL> create diskgroup dgroup1 normal redundancy2 failgroup fgr...
ASM的数据库迁移回到DISK上
今天将昨天迁移到ASM的数据库再迁回到DISK上,测试步骤如下:1.由于RMAN backup时数据库需在archive状态,先将数据库置于archive状态:SQL> shutdown immediate;SQL> startup mount;SQL> alter database archiv...
迁移已存在的数据库到ASM中
此次测试将数据库迁移到ASM中,本例已将ASM instance和DB instance都建立好。测试环境:vmware server1.05+rhel4 u4+oracle 10.2.0.1参考 http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10734/rc...
10G bigfile表空间的支持--VLDB
学习bigfile的记录,bigfile表空间是针对大型数据库存储时db_files和maxdiatafiles数量不够用时使用的,一个数据库最多有64000个datafile,bigfile tablespace相对small tablespace有以下特点:1.一个bigfile表空...
通过SQLLDR导入LOB数据
本例通过SQLLDR来导入CLOB和BLOB对象。建表的SQL:CREATE TABLE lob_tab (number_content NUMBER(10),varchar2_content VARCHAR2(100),date_content DATE,clob_content CLOB,blob_content BLOB);需要导入的LOB资...