♣ 题目部分 在Oracle中,虚拟列索引(Virtual Column Indexes)的作用是什么?...♣ 答案部分 在Oracle 11g之前的版本中,如果需要使用表达式或者一些计算公式,那么需要创建数据库视图;如果需要在这个视图上使用索引,那么会在表上创建基于函数的索引。...虚拟列是Oracle 11g新引入的一项技术,虚拟列是一个表达式,在运行时计算,不存储在数据库中,不能更新虚拟列的值。...③ 可以通过视图DBA_TAB_COLS的DATA_DEFAULT列来查询虚拟列的表达式,当创建了虚拟列索引(其实是一种函数索引)后,在视图DBA_IND_EXPRESSIONS中不能查询索引列。...⑪ 在已经创建的表中增加虚拟列时,若没有指定虚拟列的字段类型,则Oracle会根据关键字“GENERATED ALWAYS AS”后面的表达式计算的结果自动设置该字段的数据类型。
♣ 题目部分 在Oracle中,如何监控索引的使用状况?...♣ 答案部分 在开发应用程序时,可能会建立很多索引,那么这些索引的使用到底怎么样,是否有些索引一直都没有用到过,在这种情况下就需要对这些索引进行监控,以便确定它们的使用情况,并为是否可以清除它们给出依据...监控索引有两种方式: 1、直接监控索引的使用情况 (1)设置所要监控的索引:ALTER INDEX IDX_T_XX MONITORING USAGE; (2)查看该索引有没有被使用:SELECT *...可以从视图DBA_HIST_SQL_PLAN中获取到数据库中所有索引的扫描次数情况,然后根据扫描次数和开发人员沟通是否需要保留索引。...从图中可以看到有一个3.6G大的索引在13号到22号从没使用过,接下来,可以继续查询该索引是否是联合索引,创建是否合理,分析为何不走该索引,从而判断是否可以删除索引。
♣ 题目部分 在Oracle中,为什么索引没有被使用? ♣ 答案部分 “为什么索引没有被使用”是一个涉及面较广的问题。有多种原因会导致索引不能被使用。...还有很多其它原因会导致不能使用索引,这个问题在MOS(MOS即My Oracle Support)“文档1549181.1为何在查询中索引未被使用”中有非常详细的解释,作者已经将相关内容发布到BLOG(...一、快速检查 n 表上是否存在索引? n 索引是否应该被使用? 二、索引本身的问题 n 索引的索引列是否在WHERE条件中(Predicate List)?...n 索引列是否用在连接谓词中(Join Predicates)? n 连接顺序(Join Order)是否允许使用索引? n 索引列是否在IN或者多个OR语句中?...n 索引列是否使用了前置通配符(%)? n 索引列是否使用了非等值连接符? n 是否在WHERE子句中对索引列进行了IS NULL值判断? n 是否查询转换失败导致不能选择索引?
♣ 题目部分 在Oracle中,如何查找未使用绑定变量的SQL语句?...⊙ 【DB笔试面试586】在Oracle中,什么是自适应游标共享(4)?⊙ 【DB笔试面试586】在Oracle中,什么是自适应游标共享(3)?...⊙ 【DB笔试面试586】在Oracle中,什么是自适应游标共享(2)?⊙ 【DB笔试面试586】在Oracle中,什么是自适应游标共享(1)?...⊙ 【DB笔试面试585】在Oracle中,什么是常规游标共享?⊙ 【DB笔试面试584】在Oracle中,如何得到已执行的目标SQL中的绑定变量的值?...⊙ 【DB笔试面试583】在Oracle中,什么是绑定变量分级?⊙ 【DB笔试面试582】在Oracle中,什么是绑定变量窥探(下)?
♣ 题目部分 在Oracle中,模糊查询可以使用索引吗?...② 模糊查询形如“WHERE COL_NAME LIKE '%ABC';”不能使用索引,但是可以通过REVERSE函数来创建函数索引才能使用到索引。...如果字符串ABC在原字符串中位置不固定,那么可以通过改写SQL进行优化。改写的方法主要是通过先使用子查询查询出需要的字段,然后在外层嵌套,这样就可以使用到索引了。...④ 建全文索引后使用CONTAINS也可以用到域索引。...'AA%') filter(REVERSE(SUBSTR("TABLE_NAME",1,LENGTH("TABLE_NAME")-4)) LIKE 'AA%') --如果字符串ABC在原字符串中位置不固定
在WEHRE条件中like中关键字两边都有"%"; 5. 查询条件值与列类型不一致; 6. 查询条件列进行数学运算; 7. 索引列在 IN 或者多个 OR 语句中; 8....参数一致两个节点为db;tns别名为在tnsnames.ora文件中自定义的别名,应用使用此别名连接数据库,如连接字符串为db,tns别名设置为crmdb,应用连接直接使用crmdb即可,方便辨别。...MySQL 体系结构中一直说也有 SGA 和 PGA,5.7 的官方文档也没有描述,那请问是在 InnoDB 中,还是具体位置在哪?...---- 问题五、oracle 11g支持IPV6吗? 公司最近在做IPV6的改造方案,我想问下对现有oracle数据库会有什么影响吗?公司主要用oracle11g和oracle12c。...分区索引按照列HASH分区还是有其它方式?
崔华,网名 dbsnake Oracle ACE Director,ACOUG 核心专家 我们都知道,在Oracle数据库中是“未commit的数据我们读不到,commit后的数据我们也不一定能马上读到...但从Oracle 11g开始,Oracle更改了在某些特定条件一致读的行为,这使得一些看起来不合常理的行为在Oracle 11g以及后续的版本中得以出现,即在Oracle 11g以及后续的版本中,当满足一定的条件时...就不做一致读”的行为在Oracle 11g及其后续的版本中在默认情况下就已经被开启了,这也许有些激进。...我们现在去Session 2中把表EMP中empno=7369的记录所对应的ename列的值恢复成原先的“SMITH”并且在列empno上创建一个名为idx_emp_empno的非唯一性索引: Session...最后,我们来总结一下,从上述测试过程我们可以得到如下结论: 在Oracle 11g以及后续的版本中,默认情况下(即隐含参数“_row_cr”的值为TRUE的情况下),如果是通过唯一性索引去访问数据,则我们就可以马上读到
采用这种方式,索引的功能就像表中数据的快捷方式,如果没有可用的索引,那么 Oracle 就必须读取表中的每一行,才能确定该行是否包含所需的信息。...(图片 引自《ORACLE DATABASE 11G 性能优化攻略》) 创建 Oracle 的索引时需要考虑很多的因素,Oracle 提供了多种索引属性和选项,这些对象都需要 DBA 或者开发手工创建,...Oracle 数据库索引类型及用途大概如下: Oracle 数据库表和 B 树索引物理布局大概如下: (图片 引自《ORACLE DATABASE 11G 性能优化攻略》) Oracle 索引创建和维护说明如下...但事实上日常中我们所创建的索引并非战略性索引,恰恰是大量冗余或是根本没有用到的索引耗用了大量的存储空间,导致 DML 性能低下。Oracle 提供了索引监控特性来初略判断未使用到的索引。...比 11g v$object_usage 视图多了一列 OWNER,其他列均一样。12c 及以上版本普通用户使用 USER_OBJECT_USAGE 视图查看。
在Oracle看来,是两条完全不同的SQL,即对应SQL文本哈希值不同,因为where条件中一个id是1,一个是2,1和2的ASCII是不同的,可实际上这两条SQL除了查询条件不同,其他的文本字符均一致...两条记录,说明Oracle认为这两条SQL是不同。...如下是测试表: 其中name列是非唯一索引,NAME是A的有100000条记录,NAME是B的有1条记录,值分布是不均匀的,上一篇文章中我们使用如下两条SQL做实验, select* from t1...首先A为条件 显示使用了全表扫描。再以B为条件, 发现仍旧是全表扫描,我们之前知道B值记录只有一条,应该使用索引范围扫描,而且这两个SQL执行计划中Rows、Bytes和Cost值完全一致。...简而言之,数据分布不均匀的列使用绑定变量,尤其在11g之前,受绑定变量窥探的影响,可能会造成一些特殊值作为检索条件选择错误的执行计划。11g的时候则推出了ACS(自适应游标),缓解了这个问题。
这之后主库将日志传递到备库,备库利用logminer从主库的日志中解析出主库所执行过的SQL,在备库上重新执行一遍,从而保证与主库的数据在逻辑上保持一致。...针对下面的情形在写redo的时候会附加列值唯一信息 表存在主键,则主键值会随同被更新列一起做为update语句的一部分 表无主键,存在非空的唯一索引/...约束时,则最短的非空的唯一索引/约束会随同被更新列做为update语句的一部分 表无主键,无唯一索引/约束,所有可定长度的列(除long,lob,long raw,object...11g而言,可以直接从active database来创建,也可以基于10g 的RMAN使用duplicate方式来创建。...在Oracle 10g中需要,且重建时要保持密码与主库相同 g、修改备库LOG_ARCHIVE_DEST_n参数 与物理备库所不同的是,逻辑备库被open后会产生自己的重做日志(redo),因此我们需要配置参数
如果进行比较的两个值的数据类型不同,那么Oracle必须将其中一个值进行类型转换使其能够比较。这就是所谓的隐式类型转换。通常当开发人员将数字存储在字符列时会导致这种问题的产生。...Oracle在运行时会在索引字符列使用TO_NUMBER函数强制转化字符类型为数值类型。由于添加函数到索引列所以导致索引不被使用。实际上,Oracle也只能这么做,类型转换是一个应用程序设计因素。...需要注意的是,在Oracle 11g之前,若NOT IN的列没有指定非空的话(注意:是主表和子表的列未同时有NOT NULL约束,或都未加IS NOT NULL限制),则NOT IN选择的是filter...这里的第二点需要注意平衡,如果联合索引的联合列太多,必然导致索引过大,虽然消减了回表动作,但是索引块变多,在索引中的查询可能就要遍历更多的BLOCK了,所以需要全面考虑,联合索引列不宜过多,一般来说超过...(29)选择合适的索引。Oracle在进行一次查询时,一般对一个表只会使用一个索引。
(该问题只是在Oracle 10g里的限制,Oracle 11g已经不存在此问题。)客户正好使用的是10g系统,通过此次问题的分析,可以掌握查询转换问题的基本思路与方法。 测试环境 ?...之后,分别对3个表创建第一个字段C1列的单列索引。最后,收集统计信息。 ? 案列1:GROUP BY 与 Join Predicate Pushing ?...内嵌视图的查询块(SEL$2)里存在ORDER BY语句,所以视图合并失败。这个是两个版本都相同的地方。...但是,从下面信息中可以看到,在Oracle 11g里连接谓词推入(Join Predicate Push)成功了。...我们看了几个在查询转换(Query Transformation)中非常典型的连接谓词推入的例子。希望在实践中不断进行尝试,来加深对查询转换的理解。优化过程中,经常会问自己为什么不选择索引呢?
; 在Oracle看来,是两条完全不同的SQL,即对应SQL文本哈希值不同,因为where条件中一个id是1,一个是2,1和2的ASCII是不同的,可实际上这两条SQL除了查询条件不同,其他的文本字符均一致...其中name列是非唯一索引,NAME是A的有100000条记录,NAME是B的有1条记录,值分布是不均匀的,上一篇文章中我们使用如下两条SQL做实验, select * from t1 where name...显示使用了全表扫描。 再以B为条件, ? ? 发现仍旧是全表扫描,我们之前知道B值记录只有一条,应该使用索引范围扫描,而且这两个SQL执行计划中Rows、Bytes和Cost值完全一致。...简而言之,数据分布不均匀的列使用绑定变量,尤其在11g之前,受绑定变量窥探的影响,可能会造成一些特殊值作为检索条件选择错误的执行计划。...总结: 本文主要介绍了11g之前使用绑定变量和非绑定变量在解析效率方面的区别,以及绑定变量在绑定变量窥探开启的情况下副作用的效果。
这是杂货铺的第463篇文章 曾经测试过Oracle 11g下count(*)、count(1)、count(主键列)和count(包含空值的列)这几种操作,究竟有何区别,结论如下, 11g下,通过实验结论...,说明了count(1)和count(主键索引字段)其实都是执行的count(*),而且会选择索引的FFS扫描方式,count(包含空值的列)这种方式一方面会使用全表扫描,另一方面不会统计空值,因此有可能和业务上的需求就会有冲突...,因此使用count统计总量的时候,要根据实际业务需求,来选择合适的方法,避免语义不同。...前几天,碰巧看见PostgreSQL中文社区发的一篇文章,关于在PG中count(1)和count(*)的效率问题,从结论看,和Oracle很像,但是他是从开源code,探究的整个过程,能够更准确地了解背后的原理...三种方式在ExecInterpExpr函数中的处理 列名: EEO_CASE(EEOP_OUTER_FETCHSOME) { slot_getsomeattrs
next 安装即可 安装完后 你的Application中多出来这两项 如图 ?...11g数据库了 #下载镜像 docker pull alexeiled/docker-oracle-xe-11g #启动镜像为一个容器,并命名为oracle docker run -h "oracle..." --name "oracle" -d -p 49160:22 -p 49161:1521 -p 49162:8080 alexeiled/docker-oracle-xe-11g 此时 oracle...并进入sqlplus界面 使用docker exec -it :在容器里执行命令,并输出结果 docker exec -it 0deb75d61474 /bin...此时代表我们mac os 使用docker 安装 oracle 11g已经成功了
一、Oracle XE 数据库与连接工具安装使用 Oracle数据库历来以价格昂贵出名,当然贵有贵的道理,成为一个Oracle DBA也是令人羡慕的事情,如果程序员熟悉Oracle使用也有机会接触到大型的项目...1.1 数据库服务安装 现在,Oracle推出了一个免费的数据库产品,Database 快捷版 11g ,这个就像SqlServer Express版本一样,都是免费的,与收费版在功能没有任何区别,但是有些使用条件限制...安装完成之后,在桌面会有一个快捷方式:Oracle Database 11g Express Edition 入门 ,单击,进入Web的管理界面: ?...具体创建用户,创建表的工作,可以使用Oracle的SQL语句来做,但我们这里通过另外一个工具来做,还是在之前的Oracle XE 下载页面: Oracle SQL Developer Oracle...四、免安装Oracle客户端,使用ODP.Net 前面使用ODP.Net的过程,都是在本地机器安装了Oracle XE数据库和Oracle VS 开发插件的情况下进行的,但是,如果把访问Oracle的程序部署到一台没有装过
5、集群将ctss改成使用ntp服务同步时间 描述: 我有一套oracle 11g集群环境,之前使用的ctss服务同步时间,后来我改成ntp服务同步时间了,但是ntp服务在节点上配置这视乎有点问题,我强制同步了一次时间之后...解答: 在Oracle RAC数据库中,节点间的时间同步非常重要。而在部分企业环境中,数据库之间、应用服务器和数据库之间的时间同步是必须的。在这种情况下,使用NTP进行时间同步就成了必然的选择。...单独赋unlimited tablespace后可正常使用。是否在18c中这个权限需要单独赋予?...8、有一个列内容需要两千个汉字,应用什么字符类型 描述: 有一个列内容需要两千个汉字,应用什么字符类型,long可以吗?...对于Oracle来说,在11g或更早的版本,varchar2的话,用GBK正好最大能存下2000汉字,如果是UTF8,那么varchar2列是不够的。
对于SQL脚本而言,其中DB_healthcheck_lhr_v6.0.1_ALL_RW.sql是读写版本,在脚本执行过程中会对Oracle数据库做DDL(创建一些用到的临时表)和DML操作(对自己创建的临时表...DML操作),但是,在脚本执行后会清理掉创建的临时表,基本上不会留下任何痕迹。...wfr=c&ifr=shopdetail 【Oracle健康检查脚本加量不加价】对Oracle 10g、11g和12c版本分别提供了只读版,并且加上了MySQL的健康检查 小麦苗健康检查脚本有如下的特点...: 1、 绿色版、免安装、纯SQL文本 2、 跨平台,只要有SQL*Plus环境即可运行 3、 兼容Oracle 10g、11g及12c版本 4、 对Oracle 10g、11g和12c版本分别提供了只读版...10个对象分区个数超过100个的表 无效对象无效的对象无效的普通索引无效的分区索引无效的触发器 索引情况索引个数超过5个的表大表未建索引组合索引与单列索引存在交叉位图索引和函数索引外键未建索引大索引从未使用索引列个数大于
关于Oracle中结果集数据的顺序问题,在《Oracle读取数据的顺序问题》中曾通过实验说明过,最近在整理一些案例,碰巧看到了这篇《Ordering of Result Data (Doc ID 344135.1...如果想让Oracle返回有序的数据,唯一的操作,就是指定order by子句。...如果你的程序中,没指定子句order by,他的返回顺序,不同的场景下,可能就是不同的,不可控,这是我们在开发过程中,需要注意的。...除此之外,有两个隐藏参数,可能会对一些结果的返回顺序产生影响, 1. _newsort_enabled 允许使用新的排序算法。11g下默认值是TRUE。 2....这个问题很隐蔽,可以参考《Oracle不同版本group by的变化》,因为从10g开始,group by用了hash聚合,不是sort聚合,因此不会默认排序了,如果在9i,程序中没指定order by
目前一共包含以下4个脚本,其中DB_healthcheck_lhr_v6.0.1_ALL_RW.sql 是读写版本,在脚本执行过程中会对数据库做DDL(创建一些用到的临时表)和DML操作(对自己创建的临时表...DML操作),但是,在脚本执行后会清理掉创建的临时表,基本上不会留下任何痕迹。...生成的脚本示例文件下载地址: https://share.weiyun.com/5lb2U2M 【Oracle健康检查脚本加量不加价】对Oracle 10g、11g和12c版本分别提供了只读版 小麦苗健康检查脚本有如下的特点...: 1、 绿色版、免安装、纯SQL文本 2、 跨平台,只要有SQL*Plus环境即可运行 3、 兼容Oracle 10g、11g及12c版本 4、 对Oracle 10g、11g和12c版本分别提供了只读版...10个对象分区个数超过100个的表 无效对象无效的对象无效的普通索引无效的分区索引无效的触发器 索引情况索引个数超过5个的表大表未建索引组合索引与单列索引存在交叉位图索引和函数索引外键未建索引大索引从未使用索引列个数大于
领取专属 10元无门槛券
手把手带您无忧上云