oracle全文检索
达梦与oracle的对比
6、DM7中实现了数据字典缓存技术,执行期间不必封锁整个数据字典,可以有效降低DDL操作对整体系统并发执行的影响。
7、DM7为具有多个处理器(CPU)的计算机提供了并行查询,以优化查询执行和索引操作。并行查询其优势就是可以通过多个线程来处理查询作业,从而提高查询的效率。
8、DM7数据压缩采用智能压缩策略,自动选择最合适的压缩算法进行数据压缩,可以显著提升数据的压缩比,进一步减少系统的空间资源开销。
1、DM7可以提供数据库或整个服务器的冷/热备份以及对应的还原功能,达到数据库数据保护和迁移。支持的备份类型包括物理备份、逻辑备份,可实现全库、表空间、B树3个级别的备份。支持增量备份,支持以检查点进行还原。
2、DM7提供事务级的同步复制和异步复制功能。DM7数据复制功能支持一到多、多到一、级联复制、多主多从复制、环形复制、对称复制以及大数据对象复制。
7、DM7实现了对存储数据的透明存储加密、半透明存储加密和非透明存储加密。每种模式均可自由配置加密算法。用户可以根据自己的需要自主选择采用何种加密模式。
Oracle数据库系统在实现数据库安全性管理方面采取的基本措施有:
1、通过验证用户名称和口令,防止非Oracle用户注册到Oracle数据库,对数据库进行非法存取操作。
7、提供了与第三代高级语言的借口软件PRO*系列,能在C,C++等主语言中嵌入SQL语句及过程化(PL/SQL)语句,对数据库中的数据进行操纵。且他有许多优秀的前台开发工具如POWER BUILD、SQL*FORMS、VISIA BASIC等,可以快速开发生产基于客户端PC平台的应用程序,并具有良好的移植性。
使用Oracle全文索引搜索文本
使用Oracle全文索引搜索文本不使用Oracle text功能,也有很多方法可以在Oracle数据库中搜索文本.可以使用标准的INSTR 函数和LIKE操作符实现。
SELECT *FROM mytext WHERE INSTR (thetext, 'Oracle') > 0;SELECT * FROM mytext WHERE thetext LIKE '%Oracle%';有很多时候,使用instr和like是很理想的, 特别是搜索仅跨越很小的表的时候.然而通过这些文本定位的方法将导致全表扫描,对资源来说消耗比较昂贵,而且实现的搜索功能也非常有限,因此对海量的文本数据进行搜索时,建议使用oralce提供的全文检索功能建立全文检索的步骤步骤一检查和设置数据库角色首先检查数据库中是否有CTXSYS用户和CTXAPP脚色。
如果没有这个用户和角色,意味着你的数据库创建时未安装intermedia功能。
你必须修改数据库以安装这项功能。
默认安装情况下,ctxsys用户是被锁定的,因此要先启用ctxsys 的用户。
步骤二赋权在ctxsys用户下把ctx_ddl的执行权限赋于要使用全文索引的用户,例:grant execute on ctx_ddl to pomoho;步骤三设置词法分析器(lexer)Oracle实现全文检索,其机制其实很简单。
即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle 称为term)找出来,记录在一组以dr$开头的表中,同时记下该term 出现的位置、次数、hash 值等信息。
检索时,Oracle 从这组表中查找相应的term,并计算其出现频率,根据某个算法来计算每个文档的得分(score),即所谓的‘匹配率’。
而lexer则是该机制的核心,它决定了全文检索的效率。
Oracle 针对不同的语言提供了不同的lexer, 而我们通常能用到其中的三个:n basic_lexer: 针对英语。
oracle查询表索引语句
oracle查询表索引语句Oracle是一种关系型数据库管理系统,可以使用SQL语言进行数据查询和操作。
在Oracle中,索引是一种特殊的数据库对象,它可以提高查询效率和数据访问速度。
索引可以根据一个或多个列值进行排序,并且可以通过索引来快速定位到满足查询条件的数据行。
下面列举了一些常用的Oracle查询表索引的语句。
1. 查看表的索引信息:```sqlSELECT index_name, table_name, column_nameFROM all_ind_columnsWHERE table_name = '表名';```这个语句可以查询指定表的所有索引,包括索引名称、索引所在的表以及索引列。
2. 查看表的主键索引:```sqlSELECT constraint_name, column_nameFROM all_cons_columnsWHERE table_name = '表名'AND constraint_name = 'PK_表名';```这个语句可以查询指定表的主键索引,包括主键约束名称以及主键列。
3. 查看表的唯一索引:```sqlSELECT index_name, table_name, column_nameFROM all_ind_columnsWHERE table_name = '表名'AND uniqueness = 'UNIQUE';```这个语句可以查询指定表的唯一索引,包括索引名称、索引所在的表以及索引列。
4. 查看表的非唯一索引:```sqlSELECT index_name, table_name, column_nameFROM all_ind_columnsWHERE table_name = '表名'AND uniqueness = 'NONUNIQUE';```这个语句可以查询指定表的非唯一索引,包括索引名称、索引所在的表以及索引列。
oracle 全文检索 索引类型
oracle 全文检索索引类型Oracle全文检索是指在Oracle数据库中对文本数据进行搜索和查询,提供全文搜索功能。
全文检索的目标是对存储在数据库中的文本数据进行有效的搜索、查询和过滤,以提供更精确、更快速的搜索结果。
在Oracle中,全文索引类型主要包括CONTEXT索引和INTERMEDIA索引。
下面将对这两种索引类型进行详细介绍。
1. CONTEXT索引:CONTEXT索引是Oracle提供的一种基于全文检索的索引类型。
它使用了Oracle Text功能,可以在数据库中创建和管理全文索引。
CONTEXT索引可以用于检索包含关键字的文本列,对表中的文本数据进行全文搜索和查询。
其主要特点包括:- 支持多种语言:CONTEXT索引支持多种语言的全文搜索,可以根据不同语言的特点进行分词和搜索。
- 精确度和性能:CONTEXT索引提供了各种文本搜索的功能和选项,可以根据实际需求进行设置,兼顾搜索结果的准确性和搜索性能的要求。
- 可扩展性:CONTEXT索引可以随着文本数据的增长而自动维护和更新,保持索引的实时性。
- 高级搜索功能:CONTEXT索引支持通配符和模糊搜索等高级搜索功能,可以更灵活地匹配和检索文本数据。
- 可调节分词器:可以根据需要选择不同的分词器,以适应不同的语言和文本特点。
2. INTERMEDIA索引:INTERMEDIA索引是Oracle提供的另一种全文检索索引类型,它可以用于在Oracle数据库中进行多媒体数据的全文检索和查询。
INTERMEDIA索引主要用于存储和管理多媒体数据,如图像、音频、视频等,对这些多媒体数据进行全文搜索和查询。
其主要特点包括:- 多媒体数据支持:INTERMEDIA索引可以用于存储和管理各种多媒体数据,不仅仅是文本数据,可以对图像、音频、视频等进行全文搜索和查询。
- 内置分析器:INTERMEDIA索引提供了内置的分析器和语义解析器,可以理解和分析多媒体数据的结构和内容,从而提供更准确的搜索结果。
基于Oracle Text的信息系统资料库全文检索技术
( )过滤 器 提取 文 档 数 据 并 将其 转换 为文 本 表 示 方 式 。存 储 二进 制 文 档 ( wod 2 如 r
或 ar b t co a 文件 )时需 要 这样 做 。过滤器的输 出不 必是 纯 文本 格 式 , 可 以是 x 或 h — 它 ml t
ml 之类 的文 本 格式 。
O al Te t rce x 的原 理及 其 在信 息 系统 中的使 用 。
关 键词 : a l Te t 资料库 ; 文检 索 0rce x ; 全
1 引 言
OrceT x 是 Orce al e t a l 提供 的一 个服务 集 , 功能 十分 强大 , 可 以 为文 档 提 供索 引 方 它 法 、 行检 索 , 可 以对 文 档进 行格式 转换 、 进 还 存储 和 管理等 。它 不仅 支 持 TXT、 HTML等 纯文 本格 式 , 支持 很 多种 二进 制格 式的 文档 , D C、 P P F等等 。OrceTe t 还 如 O P T、 D al x 还 可用来 对 不 同语 种 的 文档进 行 检索 。Orc x 是完 全集 成在 数据 库 核心 内的 , 对 数 a l Te t e 它 据 库 中的 文档 进 行检 索 的效 率很 高 。
( )分段 器 提取 过 滤器 的输 出信息 , 3 并将 其转 换为 纯文 本 。包 括 x 和 h ml 内的 ml t 在
不 同 文本 格式 有 不 同的分 段器 。转换 为纯 文本 涉 及检 测 重要 文档 段标 记 、 移去 不 可 见 的 信 息 和文本 重新 格式化 。
( )词 法 分析 器提 取 分段器 中的纯 文本 , 将 其拆 分 为不 连 续 的标 记 。既 存在 空 白 4 并 字 符 分 隔语 言使 用 的词 法分 析器 , 也存在分 段复 杂的亚 洲语 言使用 的专 门词法 分析器 。 ( )索 引引 擎提 取词 法分 析器 中的所 有标 记 、 档 段在 分段 器 中的偏 移 量 以及 被 称 5 文 为 非索 引字 的 低 信息含 量字 列表 , 并构 建反 向索 引 。倒排 索 引 存 储标 记和 含有 这 些 标 记
oracle 查询索引语句
oracle 查询索引语句一、查询索引定义1. 查询Oracle数据库中所有的索引```SELECT index_name, table_name FROM all_indexes;```2. 查询指定表中的所有索引```SELECT index_name FROM all_indexes WHERE table_name = '表名';```3. 查询指定索引的定义```SELECT index_name, table_name, column_name FROM all_ind_columns WHERE index_name = '索引名';```4. 查询索引的类型```SELECT index_name, table_name, index_type FROM all_indexes;```5. 查询索引的存储方式```SELECT index_name, table_name, index_type, index_subpartition_name, index_partition_name FROM all_indexes;```二、查询索引状态与统计信息1. 查询索引的状态(有效/无效)```SELECT index_name, status FROM all_indexes;```2. 查询索引的使用情况(最后一次访问时间、读取次数等)```SELECT index_name, last_analyzed, num_rows, leaf_blocks, distinct_keys, clustering_factor FROM all_indexes;```3. 查询索引的大小```SELECT index_name, table_name, index_type, ROUND(bytes/1024/1024, 2) AS size_mb FROM dba_segments WHERE segment_type = 'INDEX';```4. 查询索引的碎片化情况```SELECT index_name, table_name, index_type, blevel, leaf_blocks, distinct_keys, clustering_factor FROM all_indexes; ```5. 查询索引的使用情况(是否被频繁访问)```SELECT index_name, table_name, user_reads, user_updates FROM all_indexes;```三、查询索引的相关约束1. 查询索引所属的表的主键约束```SELECT index_name, table_name FROM all_indexes WHERE index_type = 'NORMAL' AND uniqueness = 'UNIQUE';```2. 查询索引所属的表的外键约束```SELECT index_name, table_name FROM all_indexes WHERE index_type = 'NORMAL' AND uniqueness = 'NONUNIQUE';```3. 查询索引所属的表的唯一约束```SELECT index_name, table_name FROM all_indexes WHERE index_type = 'NORMAL' AND uniqueness = 'NONUNIQUE';```4. 查询索引所属的表的检查约束```SELECT index_name, table_name FROM all_indexes WHERE index_type = 'NORMAL' AND uniqueness = 'NONUNIQUE';```5. 查询索引所属的表的默认值约束```SELECT index_name, table_name FROM all_indexes WHERE index_type = 'NORMAL' AND uniqueness = 'NONUNIQUE';```四、查询索引的相关操作1. 查询索引的创建语句```SELECT dbms_metadata.get_ddl('INDEX', '索引名') FROM dual; ```2. 查询索引的重建语句```SELECT 'ALTER INDEX ' || index_name || ' REBUILD;' FROM all_indexes;```3. 查询索引的重命名语句```SELECT 'ALTER INDEX ' || index_name || ' RENAME TO 新索引名;' FROM all_indexes;```4. 查询索引的删除语句```SELECT 'DROP INDEX ' || index_name || ';' FROM all_indexes;```5. 查询索引的禁用语句```SELECT 'ALTER INDEX ' || index_name || ' UNUSABLE;' FROM all_indexes;```五、查询索引的相关性能优化1. 查询索引是否需要重新构建```SELECT index_name, table_name, last_analyzed FROM all_indexes WHERE last_analyzed < SYSDATE - 30;```2. 查询未使用的索引```SELECT index_name, table_name FROM all_indexes WHERE status = 'VALID' AND (user_reads = 0 OR user_updates = 0); ```3. 查询索引碎片化严重的情况```SELECT index_name, table_name, blevel, leaf_blocks, distinct_keys, clustering_factor FROM all_indexes WHERE blevel > 3;```4. 查询索引的大小是否过大```SELECT index_name, table_name, index_type, ROUND(bytes/1024/1024, 2) AS size_mb FROM dba_segments WHERE segment_type = 'INDEX' AND bytes/1024/1024 > 100;```5. 查询索引的选择性是否低```SELECT index_name, table_name, distinct_keys, num_rows, (distinct_keys/num_rows) AS selectivity FROM all_indexes WHERE selectivity < 0.1;```六、查询索引的相关性能统计1. 查询索引的读取次数与更新次数```SELECT index_name, table_name, user_reads, user_updates FROM all_indexes;```2. 查询索引的平均访问时间```SELECT index_name, table_name, blevel, leaf_blocks, distinct_keys, clustering_factor, num_rows, (leaf_blocks/clustering_factor) AS avg_access_time FROM all_indexes;```3. 查询索引的存储效率```SELECT index_name, table_name, blevel, leaf_blocks,distinct_keys, clustering_factor, (leaf_blocks/clustering_factor) AS storage_efficiency FROM all_indexes;```4. 查询索引的选择性```SELECT index_name, table_name, distinct_keys, num_rows, (distinct_keys/num_rows) AS selectivity FROM all_indexes;```5. 查询索引的碎片率```SELECT index_name, table_name, blevel, leaf_blocks, distinct_keys, clustering_factor, (leaf_blocks/clustering_factor) AS fragmentation FROM all_indexes;```以上是关于Oracle查询索引的一些常用语句,通过这些语句可以方便地查询索引的定义、状态、统计信息以及进行相关操作和性能优化。
[转载]oracleText全文检索功能对中文分词的支持情况
[转载]oracleText全⽂检索功能对中⽂分词的⽀持情况下⾯例⼦在XE中测试通过。
准备⼯作:CREATE TABLE issues (ID NUMBER,summary VARCHAR(120),description CLOB,author VARCHAR(80),ot_version VARCHAR(10));INSERT INTO issuesVALUES (1, 'Jane', 'Text does not make tea','Oracle Text is unable to make morning tea', 1);INSERT INTO issuesVALUES (2, 'John', 'It comes in the wrong color','I want to have Text in pink', 1);INSERT INTO issuesVALUES (3, 'Mike', 'I come from china', '所以我讲中⽂', 1);--下⾯两句话很难解析的INSERT INTO issuesVALUES (4, 'Mike', 'I come from china', '吉林省长春市的⼈民', 1);INSERT INTO issuesVALUES (5, 'Mike', 'I come from china','我们要积极地主动作好计划⽣育⼯作', 1);-- define datastore preference for issuesBEGIN--ctx_ddl.drop_preference ('issue_lexer');ctx_ddl.set_attribute ('issue_store', 'output_type', 'CLOB');ctx_ddl.create_preference ('issue_lexer', 'CHINESE_LEXER');END;/-- index issues 没有指定任何lexerCREATE INDEX issue_index ON issues(author) INDEXTYPE IS ctxsys.CONTEXT;--进⾏查询SELECT *FROM issuesWHERE contains (author, '中⽂', 1) > 0;会返回no rows selected。
ORACLE应用常见傻瓜问题1000问
ORACLE应用常见傻瓜问题1000问大伙儿在应用ORACLE的时候可能会遇到专门多看起来不难的问题, 专门对新手来说, 今天我简单把它总结一下, 公布给大伙儿, 期望对大伙儿有关心! 和大伙儿一起探讨, 共同进步!对ORACLE高手来说是不用看的。
1. Oracle安装完成后的初始口令?internal/oraclesys/change_on_installsystem/managerscott/tigersysman/oem_temp2. ORACLE9IAS WEB CACHE的初始默认用户和密码?administrator/administrator3. oracle 8.0.5怎幺创建数据库?用orainst。
假如有motif界面,能够用orainst /m4. oracle 8.1.7怎幺创建数据库?dbassist5. oracle 9i 怎幺创建数据库?dbca6. oracle中的裸设备指的是什幺?裸设备确实是绕过文件系统直截了当访问的储存空间7. oracle如何区分64-bit/32bit 版本???$ sqlplus '/ AS SYSDBA'SQL*Plus: Release 9.0.1.0.0 - Production on Mon Jul 14 17:01:09 2003(c) Copyright 2001 Oracle Corporation. All rights reserved.Connected to:Oracle9i Enterprise Edition Release 9.0.1.0.0 - Production With the Partitioning optionJServer Release 9.0.1.0.0 - ProductionSQL> select * from v$version;BANNER----------------------------------------------------------------Oracle9i Enterprise Edition Release 9.0.1.0.0 - ProductionPL/SQL Release 9.0.1.0.0 - ProductionCORE 9.0.1.0.0 ProductionTNS for Solaris: Version 9.0.1.0.0 - ProductionNLSRTL Version 9.0.1.0.0 - ProductionSQL>8. SVRMGR什幺意思?svrmgrl,Server Manager.9i下没有,差不多改为用SQLPLUS了sqlplus /nolog变为归档日志型的9. 请问如何辨论某个用户是从哪台机器登陆ORACLE的? SELECT machine , terminal FROM V$SESSION;10. 用什幺语句查询字段呢?desc table_name 能够查询表的结构select field_name,... from ... 能够查询字段的值select * from all_tables where table_name like '%'select * from all_tab_columns where table_name='??'11. 如何样得到触发器、过程、函数的创建脚本?desc user_sourceuser_triggers12. 如何样运算一个表占用的空间的大小?select owner,table_name,NUM_ROWS,BLOCKS*AAA/1024/1024 "Size M",EMPTY_BLOCKS,LAST_ANALYZEDfrom dba_tableswhere table_name='XXX';Here: AAA is the value of db_block_size ;XXX is the table name you want to check13. 如何查看最大会话数?SELECT * FROM V$PARAMETER WHERE NAME LIKE 'proc%'; SQL>SQL> show parameter processesNAME TYPE V ALUE------------------------------------ ------- ------------------------------aq_tm_processes integer 1db_writer_processes integer 1job_queue_processes integer 4log_archive_max_processes integer 1processes integer 200那个地点为200个用户。
Oracle模糊查询优化
Oracle模糊查询优化模糊查询是数据库查询中经常⽤到的,⼀般常⽤的格式如下:(1)字段 like '%关键字%' 字段包含"关键字“的记录即使在⽬标字段建⽴索引也不会⾛索引,速度最慢(2)字段 like '关键字%' 字段以"关键字"开始的记录可以使⽤到在⽬标字段建⽴的升序索引(3)字段 like '%关键字' 字段以"关键字“结束的记录可以使⽤到⽬标字段建⽴的降序索引对于⽆法使⽤索引的 '%关键字%' 模式,有没有办法优化呢,答案是肯定的,在ORacle中提供了instr(strSource,strTarget)函数,⽐使⽤'%关键字%'的模式效率⾼很多。
instr函数说明:INSTR (源字符串, ⽬标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。
只检索⼀次,就是说从字符的开始 到字符的结尾就结束。
语法如下: instr( string1, string2 [, start_position [, nth_appearance ] ] ) 参数分析: string1 源字符串,要在此字符串中查找。
string2 要在string1中查找的字符串. start_position 代表string1 的哪个位置开始查找。
此参数可选,如果省略默认为1. 字符串索引从1开始。
如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
nth_appearance 代表要查找第⼏次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。
注意: 如果String2在String1中没有找到,instr函数返回0. ⽰例: SELECT instr('syranmo','s') FROM dual; -- 返回 1 SELECT instr('syranmo','ra') FROM dual; -- 返回 3 SELECT instr('syran mo','a',1,2) FROM dual; -- 返回 0 对⽐: instr(title,'⼿册')>0 相当于 title like '%⼿册%' instr(title,'⼿册')=1 相当于 title like '⼿册%' instr(title,'⼿册')=0 相当于 title not like '%⼿册%'模糊查询优化: 了解了instr函数的⽤法,优化就变得简单了,例如 %关键字% 等同于 instr(字段,'关键字')>0实际应⽤:t表中将近有1100万数据,很多时候,我们要进⾏字符串匹配,在SQL语句中,我们通常使⽤like来达到我们搜索的⽬标。
Oracle Text使用小结
Oracle Text使用小结一、Oracle Text介绍Oracle从7.3开始支持全文检索,即用户可以使用Oracle服务器的上下文(ConText)完成基于文本的查询(具体可采用通配符查找、模糊匹配、相关分类、近似查找、条件加权和词意扩充等方法);在Oracle 8.0.x中称为ConText ;在Oracle 8i 中称为interMedia Text ; Oracle9i中称为Oracle Text。
Oracle Text是9i 标准版和企业版的一部分,Oracle9i将全文检索功能做为内置功能提供给用户,使得用户在创建数据库实例时自动安装全文检索。
Oracle Text使Oracle 9i具备了强大的文本检索能力和智能化的文本管理能力。
使用Oracle Text,可以方便而有效地利用标准的SQL工具来构建基于文本的新的开发工具或对现有应用程序进行扩展。
应用程序开发人员可以在任何使用文本的Oracle数据库应用程序中充分利用Oracle Text搜索,应用范围可以是现有应用程序中可搜索的注释字段,也可是实现涉及多种文档格式(包括doc,excel,txt,pdf等)和复杂搜索标准的大型文档管理系统,还可是来自Internet和文件系统的文本数据搜索XML应用程序。
Oracle Text支持Oracle数据库所支持的大多数语言的基本全文搜索功能。
要使用Oracle Text,必须具有CTXAPP角色或者是CTXSYS用户。
Oracle Text 为系统管理员提供CTXSYS用户,为应用程序开发人员提供CTXAPP角色。
CTXSYS 用户可执行以下任务:启动Oracle Text服务器,执行CTXAPP角色的所有任务。
具有CTXAPP 角色的用户可执行以下任务:创建索引,管理Oracle Text数据字典,包括创建和删除首选项,进行Oracle Text查询,使用Oracle Text PL/SQL程序包。
达梦与oracle的对比
杂查询提供了先进的软件级解决方案,具有业界先进的架构和高度的可靠性。
兼容1、体系结构方面,DM7兼容o racle的单库单实例式结构、表空间-数据文件机制、回滚机制、多版本并发控制、闪回。
2、应用开发接口兼容,兼容PL/SQL常用语法90%、OCI、OOCI、OO4O接口兼容、系统包机制。
3、维护管理方式兼容,兼容大量V$动态视图、AWR性能分析报告、10053等事件。
(案例:现已成功应用于商务部、政法委、工信部、国家电网、中国铁建集团、中国铁路总公司、中国航信等政府机关、大型中央国有企业以及国防,其中达梦数据库替换OR ACLE在国家智能电网已稳定运行6年,占有率达80%;经过实测,达梦数据库支撑的中国铁建集团财务大共享系统,支持在线用户高达12000个。
)高可用性1、DM7可以提供数据库或整个服务器的冷/热备份以及对应的还原功能,达到数据库数据保护和迁移。
支持的备份类型包括物理备份、逻辑备份,可实现全库、表空间、B树3个级别的备份。
支持增量备份,支持以检查点进行还原。
2、DM7提供事务级的同步复制和异步复制功能。
DM7数据复制功能支持一到多、多到一、级联复制、多主多从复制、环形复制、对称复制以及大数据对象复制。
1、RAC是Or acle数据库高可用性解决方案。
高可用性包含两部分的内容:首先是在这种解决方案下要确保数据不丢失,这是最基础的也是必须要保证的;2、其次是确保不停机,使Oracl e数据库一直维持在正常的运行状态,避免停机给客户带来的损失高安全性1、DM7是具有自主知识产权的高安全数据库管理系统,已通过公安部安全四级评测。
是目前安全等级最高的商业数据库之一。
同时DM7还通过了中国信息安全测评中心的EAL4级评测。
Oracle-Text-组件-说明
2.1 Oracle 10g中重建2.1.1 Manualinstallation of Text 10gR1 (10.1.0.x)--安装Text 组件
1. Text dictionary, schema name CTXSYS, iscreated by calling following script from SQL*Plus connected as SYSDBA:
CATALOG Oracle Database Catalog Views 11.2.0.3.0
ห้องสมุดไป่ตู้
COMP_ID COMP_NAME VERSION
--------------- ---------------------------------------------
CATPROC Oracle Database Packages and T11.2.0.3.0
APS OLAP Analytic Workspace 11.2.0.3.0
17 rows selected.
MOS上的说明:
Oracle 8i/9i/10g/11g 组件(Components) 说明
/tianlesoftware/article/details/5937382
Oracle Text 组件 说明Oracle Text 组件 说明
一.OracleText 组件说明
在说明之前,我们先用如下SQL 查看一下DB中的组件:
SQL> col comp_id for a15
SQL> col version for a15
SQL> col comp_name for a30
oracle索引。其中全文检索最变态
oracle索引。
其中全⽂检索最变态全⽂检索位图索引B全⽂检索很少使⽤,如果产品上使⽤⼤家可以⽤Lcunce这些应⽤如果⾮要在数据库做这个采⽤就把⽤⼀个全⽂检索索引检索索引不会像其他的索引创建⼀个对象他会创建⼗个相关的对象。
⼗张的其中⼀张表存在形式如下Dtaken_text token_last tokent_count是 1 1是⼀个 1 1我是 1 1我是⼀个 1 1通过形式就猜到冗余存储如果表数据10M 索引表估计要50m⼤家会想问like 会⽤全⽂索引实际是不会的下⾯⽅法使⽤select * form t where contains("name","DBA")>0我插⼊⼀条sql 会直接有索引吗答案可能你猜错了没有的需要⼿⼯同步alter index t_idx_rebuild parameters('sync');⼿⼯同步有时间也是优势,以后讲sql优化⽅案会讲到的。
删除更新同样需要公共同步当然oracle 可以⾃动同步,只是默认没有开启。
全⽂索引操作量太⼤。
位图索引在⼤量相同数据时B树索引是⾮常低效的。
位图索引存款空间⼩对 or⽐较⾼效。
位图索引适合数据仓库不适合 oltp位图索引⽤在下⾯情况1.重复率⾼的数据2.特定类型的查询。
对 or⽐较⾼效。
3.联合索引B树索引唯⼀索引和主键的区别。
主键侧重的外键,唯⼀索引强调索引。
采⽤数据结构B树索引。
⼤量插⼊压⼒很⼤。
Hive索引的弊端:– 每次查询时候都要先⽤⼀个job扫描索引表,如果索引列的值⾮常稀疏,那么索引表本⾝也会⾮常⼤– 索引表不会⾃动rebuild,如果表有数据新增或删除,那么必须⼿动rebuild索引表数据索引是传统RDBMS的标准技术,⽤来加速查询Hive⾃0.7版本开始⽀持索引,但提供的功能很有限,效率也并不⾼,因此Hive索引很少使⽤Hive索引原理:– 在指定列上建⽴索引,⽣成⼀张索引表(Hive的⼀张物理表),记录以下三个字段:索引列的值、该值对应的HDFS⽂件路径、该值在⽂件中的偏移量– 在执⾏索引字段查询时候,⾸先额外⽣成⼀个MapReduce job,根据对索引列的过滤条件,从索引表中过滤出索引列的值对应的hdfs⽂件路径及偏移量,输出到hdfs上的⼀个⽂件中,然后根据这些⽂件中的hdfs路径和偏移量,筛选原始input⽂件,⽣成新的split,作为整个job的split,达到不⽤全表扫描的⽬的。
oracle21c新特性
oracle21c新特性Oracle明确:Oracle 21c 其实就相当于 Oracle 20c,因为 20c从未进⼊公众可⽤的版本发布。
在官⽅的版本计划中,20c 已经被移出,并做出如下声明:Oracle考虑到2020年我们的客户将⾯临前所未有的经济和业务中断。
我们决定不将Database 20c Preview版本升级为General Availability。
相反,我们将所有20c功能都合并到21c版本中,并使21c在我们的“⾃制数据库免费层”中可⽤,以便所有⼈都可以免费试⽤驱动新功能和增强功能。
1. ⾃动化的In-Memory 管理 - Self-Managing In-MemoryIn-Memory 技术引⼊之后,为Oracle数据库带来了基于内存的列式存储能⼒,⽀持 OLTP 和 OLAP 混合的计算。
在 21c 中,Oracle ⽀持了⾃主的In-Memory 管理,通过⼀个简单的初始化参数 inmemory_automatic_level 设置,DBA将不再需要⼈⼯指定将哪些数据表放置在内存中,数据库将⾃动判断需要将哪些对象加⼊或驱逐出In-Memory的列式存储中。
内存对象的管理,是通过数据库内置的机器学习算法⾃动实现的,并且数据库可以进⼀步的⾃动压缩较少访问的内存列数据。
inmemory_automatic_level = HIGH 设置,可以⽤于指定⾼度的⾃动的内存管理级别。
2. 原⽣的区块链⽀持 - Native Blockchain Tables随着区块链技术的不断成熟和发展,Oracle 在其多模的数据库⽀持中,引⼊了原⽣的区块链表⽀持。
在 21c 中数据库中可以通过 blockchain 关键字来创建区块链表:CREATE Blockchain TABLE <blockchain_table_name>;很多客户希望在不涉及多个组织的情况下,利⽤区块链的防篡改和不可否认属性,区块链表使客户可以在需要⾼度防篡改的数据管理,⽽⼜⽆需在多个组织中分布分类帐或依靠分散的信任模型时使⽤Oracle数据库。
oracle获取元数据的方法
oracle获取元数据的方法元数据是指描述数据的数据,是对数据的定义和描述,可以理解为数据的“数据”。
在数据库管理系统中,元数据包括表、列、索引、约束等数据库对象的定义和属性信息。
Oracle是一款广泛使用的关系型数据库管理系统,通过使用Oracle 提供的元数据查询语句,可以方便地获取数据库中的元数据信息。
下面将介绍一些常用的Oracle元数据查询方法。
1. 查询表信息通过查询表的元数据,可以获取表的名称、列信息、索引、约束等相关信息。
查询所有表名:SELECT table_name FROM all_tables;查询指定表的列信息:SELECT column_name, data_type, data_length, nullable FROM all_tab_columns WHERE table_name = '表名';查询指定表的索引信息:SELECT index_name, column_name FROM all_ind_columns WHERE table_name = '表名';查询指定表的约束信息:SELECT constraint_name, constraint_type FROM all_constraints WHERE table_name = '表名';2. 查询列信息通过查询列的元数据,可以获取列的名称、数据类型、长度、是否允许为空等相关信息。
查询指定列的信息:SELECT column_name, data_type, data_length, nullable FROM all_tab_columns WHERE table_name = '表名' AND column_name = '列名';查询指定列的索引信息:SELECT index_name FROM all_ind_columns WHERE table_name = '表名' AND column_name = '列名';3. 查询索引信息通过查询索引的元数据,可以获取索引的名称、所属表、索引类型等相关信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全文检索(oracle text)Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力,Oracle Text是Oracle9i采用的新名称,在oracle8/8i中被称为oracle intermedia text,oracle8以前是oracle context cartridge。
Oracle Text的索引和查找功能并不局限于存储在数据库中的数据。
它可以对存储于文件系统中的文档进行检索和查找,并可检索超过150种文档类型,包括Microsoft Word、PDF和XML。
Oracle Text查找功能包括模糊查找、词干查找(搜索mice 和查找mouse)、通配符、相近性等查找方式,以及结果分级和关键词突出显示等。
你甚至可以增加一个词典,以查找搭配词,并找出包含该搭配词的文档。
Oracle text 需要为可检索的数据项建立索引,用户才能够通过搜索查找内容,索引进程是根据管道建模的,在这个管道中,数据经过一系列的转换后,将其关键字会添加到索引中。
该索引进程分为多个阶段,如下图1.数据检索(Datastore):只是将数据从数据存储(例如web页面、数据库大型对象或本地文件系统)中取出,然后作为数据流传送到下一个阶段。
2. 过滤(Filter):过滤器负责将各种文件格式的数据转换为纯文本格式,索引管道中的其他组件只能处理纯文本数据,不能识别 Ms word 或 excel 等文件格式。
3. 分段(Sectioner):分段器添加关于原始数据项结构的元数据。
4. 词法分析(Lexer):根据数据项的语言将字符流分为几个字词。
5. 索引(Index):最后一个阶段将关键字添加到实际索引中。
测试环境:Linux AS release 4 (Nahant Update 3), oracle10g(10.2.0.2.0)内容简介:本文档主要以实验为主,文档中包含了大量的实验例子,部分测试用例来自document,部分来自网友的测试,所有的例子都在oracle10g中测试通过。
(1).配置oracle text9i之前,Oracle Text不是默认安装的,必须手工安装。
检查数据库中是否有ctxsys用户和ctxapp脚色,如果没有这个用户和角色,这意味着你在创建数据库时没有安装oracle text 功能,需要先配置上该功能。
9i安装text--创建表空间SQL>create tablespace drsys datafile '/opt/oracle10g/oradata/10gtest/drsys01.dbf' size 100m;SQL> connect / as sysdba--创建ctxsys用户SQL> @?/ctx/admin/dr0csys password default_tablespace_name temporary_tablespace_name SQL> connect ctxsys/password--创建数据字典SQL> @?/ctx/admin/dr0inst @?/ctx/lib/libctxx9.soSQL> @?/ctx/admin/defaults/drdefus.sql ;Oracl0g安装text:SQL> connect / as sysdbaSQL> @?/ctx/admin/catctx.sql ctxsys TBS_DRSYS temp unlockConn ctxsys/ctxsysSQL> @?/ctx/admin/defaults/drdefel.sql(2).创建测试用户oratextAlter user ctxsys identified by ctxsys account unlock(10g默认安装,帐号被锁定);Create tablespace oratext datafile '/opt/oracle10g/oradata/10gtest/oratext01.dbf' size 2000m ;Create user oratext identified by oratect default tablespace oratext temporary tablespace temp;Alter database tempfile '/opt/oracle10g/oradata/10gtest/temp01.dbf' resize 2000m; SQL>Create user oratext identified by oratext default tablespace oratext temporary tablespace temp;Grant resource, connect, ctxapp to oratext;Grant execute on ctxsys.ctx_cls to oratext;Grant execute on ctxsys.ctx_ddl to oratext;Grant execute on ctxsys.ctx_doc to oratext;Grant execute on ctxsys.ctx_output to oratext;Grant execute on ctxsys.ctx_query to oratext;Grant execute on ctxsys.ctx_report to oratext;Grant execute on ctxsys.ctx_thes to oratext;Grant execute on ctxsys.ctx_ulexer to oratext;查看系统默认的oracle text参数Select pre_name, pre_object from ctx_preferences(3).Oracle Text索引原理Oracle text 索引将文本中所有的字符转化成记号(token),如会转化成www,taobao,com这样的记号。
Oracle10g里面支持四种类型的索引,context,ctxcat,ctxrule,ctxxpath索引类型 描述 查询操作符CONTAINS CONTEXT用于对含有大量连续文本数据进行检索。
支持word、html、xml、text等很多数据格式。
支持范围(range)分区,支持并行创建索引(Parallelindexing)的索引类型。
支持类型:VARCHAR2, CLOB, BLOB, CHAR, BFILE,XMLType, and URIType.DML操作后,需要CTX_DDL.SYNC_INDEX 手工同步索引如果有查询包含多个词语,直接用空格隔开(如 oracle itpub)CTXCAT适用于混合查询语句(如查询条件包括产品id,价格,描述等)。
适CATSEARCH 合于查询较小的具有一定结构的文本段。
具有事务性。
DML操作后,索引会自动进行同步。
操作符:and,or,>,<, =,between,inMATCHES CTXRULE Use CTXRULE index to build a document classification or routingapplication. The CTXRULE index is an index created on a tableof queries, where the queries define the classification orrouting criteria.CTXXPATH Create this index when you need to speed up existsNode() querieson an XMLType column.1.Context索引Oracle text索引把全部的word转化成记号,context 索引的架构是反向索引(inverted index),每个记号都映射着包含它自己的文本位置,如单词dog可能会有如下的条目Dog Doc1 Doc3 Doc5这表示dog在文档doc1,doc3,doc5中都出现过。
索引建好之后,系统中会自动产生如下DR$MYINDEX$I,DR$MYINDEX$K,DR$MYINDEX$R,DR$MYINDEX$X,MYTABLE5个表(假设表为mytable,索引为myindx)。
Dml操作后,context索引不会自动同步,需要利用ctx_ddl.sync_index手工同步索引。
例子: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;/--建立context 索引Create index idx_docs on docs(text)indextype is ctxsys.context parameters('filter ctxsys.null_filter section group ctxsys.html_section_group');--查询Column text format a40;Select id, text from docs where contains(text, 'france') > 0;id text---------- -------------------------------3 <html>france is in europe.</html>2 <html>paris is a city in france.</html>--继续插入数据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;Select id, text from docs where contains(text, 'city') > 0;--新插入的数据没有查询到id text--------------------------------------------2 <html>paris is a city in france.</html>--索引同步beginctx_ddl.sync_index('idx_docs', '2m');end;--查询Column text format a50;Select id, text from docs where contains(text, 'city') > 0; --查到数据id text-----------------------------------------------5 <html>mexico city is big.</html>4 <html>los angeles is a city in california.</html>2 <html>paris is a city in france.</html>-- or操作符Select id, text from docs where contains(text, 'city or state ') > 0;--and 操作符Select id, text from docs where contains(text, 'city and sta te ') > 0;或是Select id, text from docs where contains(text, 'city sta te ') > 0;--score表示得分,分值越高,表示查到的数据越精确SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, 'oracle', 1) > 0;Context类型的索引不会自动同步,这需要在进行Dml后,需要手工同步索引。