oracle执行计划

如何解决ORA-04031错误

不羁岁月 提交于 2019-11-26 20:34:54
诊断并解决ORA-04031错误 当我们在共享池中试图分配大片的连续内存失败的时候,Oracle首先清除池中当前没使用的所有对象,使空闲内存块合并。如果仍然没有足够大单个的大块内存满足请求,就会产生ORA-04031错误。 当这个错误出现的时候你得到的错误解释信息类似如下: 1 [ oracle@yft ~ ] $ oerr ora 04031 2 04031 , 00000 , "unable to allocate % s bytes of shared memory (\" % s\",\" % s\",\" % s\",\" % s\")" 3 // * Cause: More shared memory is needed than was allocated in the shared 4 // pool. 5 // * Action: If the shared pool is out of memory, either use the 6 // DBMS_SHARED_POOL package to pin large packages, 7 // reduce your use of shared memory, or increase the amount of 8 // available shared memory by increasing the

Oracle 行迁移和行链接

荒凉一梦 提交于 2019-11-26 20:32:38
一、行迁移 1.1、行迁移概念 当一个行上的更新操作(原来的数据存在且没有减少)导致当前的数据不能在容纳在当前块,我们需要进行行迁移。一个行迁移意味着整行数据将会移动,仅仅保留的是一个转移地址。因此整行数据都被移动,原始的数据块上仅仅保留的是指向新块的一个地址信息。 成因:当行被update时,如果update更新的行大于数据块的pctfree值,就需要申请第2个块,从而形成迁移。 后果:导致应用需要访问更多的数据块,性能下降。 预防:1.将数据块的pctfree调大; 2.针对表空间扩大数据块的大小。 检查:analyze table 表名 validate structure cascade into chained_rows; 2.1、实例: 实验说明: (以EMPLOYEES表为例,如果涉及到该表有主键,并且有别的表的外键REFERENCE关联到本表,必须要执行步骤2和步骤7,否则不必执行); 1. 执行$ORACLE_HOME/rdbms/admin目录下的utlchain.sql脚本创建chained_rows表。 2. 禁用所有其它表上关联到此表上的所有限制(假想EMPLOYEES表有主键PK_EMPLOYEES_ID,假想test表有外键f_employees_id关联reference到employees表)。 select index_name,index

Oracle将表keep到内存

主宰稳场 提交于 2019-11-26 20:32:32
一、引言: 有时候一些基础表需要非常的频繁访问,尤其是在一些循环中,对该表中的访问速度将变的非常重要。为了提高系统的处理性能,可以考虑将一些表及索引读取并保存到内存中。 二、关于keep内存的几个参数 下面了解一下具体和CACHE有关的几个概念,即DB_CACHE中的几个pool: DB_CACHE_SIZE:指定缺省的buffer pool的大小,以字节为单位。 DB_KEEP_CACHE_SIZE:指定keep buffer pool的大小,以字节为单位。 DB_RECYCLE_CACHE_SIZE:指定recycle buffer pool的大小,以字节为单位。 Keep Buffer Pool 其作用是缓存那些需要经常查询的对象但又容易被默认缓冲区置换出去的对象,按惯例,Keep pool设置为合理的大小,以使其中存储的对象不再age out,也就是查询这个对象的操作不会引起磁盘IO操作,可以极大地提高查询性能。 默认的情况下db_keep_cache_size=0,未启用,如果想要启用,需要手工设置db_keep_cache_size的值,设置了这个值之后db_cache_size会减少。 并不是我们设置了keep pool之后,热点表就一定能够缓存在keep pool,keep pool同样也是由LRU链表管理的,当keep pool不够的时候,最先缓存到keep

Oracle之虚拟索引

我只是一个虾纸丫 提交于 2019-11-26 20:32:16
一、引言 DBA在日常维护管理数据库进行低性能SQL分析时,有时候需要通过创建索引对SQL进行优化,但有些时候我们创建的索引是否能用到?这个只能创建以后才能看出效果,但是在实际工作中,特别是对大表创建索引对系统性能有很大影响,因此我们不得不避开业务高峰时段,但是有没有一种办法创建索引而不影响性能呢?有,那就是虚拟索引。 虚拟索引不是物理存在的,它并不会创建实际的索引段,只是在数据字典中加了一个索引的记录,使得优化器能够意识到一个索引的存在,从而判断是否使用该索引作为访问路径。作用仅仅是为了DBA作SQL优化时使用,DBA根据虚拟索引的优化效果决定是否创建物理索引。 二、虚拟索引类型 虚拟索引支持B-TREE索引和BIT位图索引,在CBO模式下ORACLE优化器会考虑虚拟索引,但是在RBO模式下需要添加hint才行。 三、虚拟索引创建实例 SQL > drop table t purge; 表已删除。 SQL > create table t as select * from dba_objects; 表已创建。 -- 创建虚拟索引,首先要将_use_nosegment_indexes的隐含参数设置为true SQL > alter session set "_use_nosegment_indexes" = true; 会话已更改。 -- 虚拟索引的创建语法比较简单

部署Oracle 12c企业版数据库

爱⌒轻易说出口 提交于 2019-11-26 18:52:35
在计算机信息安全领域中,数据库系统无疑有着举足轻重的地位。比如:SQL Server、MySQL、DB2、Oracle等,都是比较知名的数据库管理软件,由于Oracle数据库的安全性,所以在一些比较重要的场合被普遍使用,比如:电信、银行、政府部门等。 本次博文以Oracle 12c数据库的64位企业版为例,学习如何在Centos 操作系统中的安装和基本配置,包括安装的准备等。 博文大纲: 一、安装Oracle 12c 二、创建Oracle 12c数据库 三、Oracle 12c数据库的启动与关闭 四、将Oracle数据库设置为开机自启动 一、安装Oracle 12c 1.安装CentOS 7操作系统的注意事项 由于本次安装Oracle 12c软件是在CentOS 7系统上实现的,那么首次安装CentOS 7操作系统有几点要求: 防火墙的配置选项设置为禁用; SELinux设置为禁用; 默认安装设置为软件开发; 内核选择3.10.0-862.el7.x86_64及以上版本; 2.前置条件的准备 Oracle数据库是一个相对庞大的应用软件,对服务器的系统类型、内存和交换分区、硬盘空阿金、内核参数、软件环境、用户环境等都有相应的要求。只要满足了这些必备的条件,才能确保Oracle 12c安装成功并稳定运行。 (1)系统及配置要求 Oracle

Oracle直方图导致SQL不走索引.

北城以北 提交于 2019-11-26 16:28:31
在ITPUB 上看到一个帖子 http://www.itpub.net/thread-1875212-1-1.html 同一条SQL语句,只有查询条件不一样,查询返回的结果集都为0,一个走了全表扫描,一个走索引。查看全表扫描的SQL语句: SQL走全表,产生了2422609个逻辑读,cost为535K SQL> SELECT URL,YHZH,HFRZY,HFLR,SPURL,TPURL,YPURL,SCSJ,LY,JCSJ FROM YHXX_HFXX T 2 WHERE T.URL='http://club.kdnet.net/dispbbs.asp?id=10165509_boardid=1' 3 / no rows selected Execution Plan ---------------------------------------------------------- Plan hash value: 2068618995 ------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------

Oracle 绑定变量窥视

那年仲夏 提交于 2019-11-26 15:56:06
绑定变量窥视功能是数据库的一个特性,自ORACLE9i版本开始引入,默认是开启的。 “绑定变量窥视”表示,查询优化器在第一次调用游标时,会观察用户定义的绑定变量的值,允许优化器来确认过滤条件的选择性,以及是否使用绑定变量代替了常量。之后调用游标时不会出现窥视,且会根据指针共享标准来共享游标,即使随后的调用使用不同的绑定值。 使用绑定变量窥视,第一次解析包含绑定谓词的SQL语句时,优化器将查看绑定变量的值,并使用该值为查询创建执行计划。然后,不管更改的绑定值如何,该计划都将被存储并用于未来的所有执行。如果初始绑定值不能很好地代表将来执行查询时提供的其他值,那么,即使当前访问路径较优,也可能导致未来执行变差,甚至影响某些迭代的查询性能变慢。 上面的特性是由参数"_optim_peek_user_binds"驱动的,如果禁用这个数据库特性,已经执行过的这类值的执行计划将不会发生变化,但还有一个可能性,一个新值能创造一个更优的执行计划。 本次技术分享,就是,绑定变量窥视参数"_optim_peek_user_binds"对SQL执行计划的影响。在不同的场景下,合理设置"_optim_peek_user_binds"参数,具有重大的实践意义。之前,美创某客户核心系统,就出现过由于"_optim_peek_user_binds"参数设置而引发该核心系统SQL执行出现性能问题。 接下来

Oracle 8i and 9i分析函数(转)

*爱你&永不变心* 提交于 2019-11-26 15:42:28
http://www.oracle.com.cn/viewthread.php?tid=38374&highlight=OLAP Analytic Functions in Oracle 8i and 9i Oracle 8i and 9i 分析函数 Contents 目录 Overview and Introduction 概述与简介 How Analytic Functions Work 分析函数原理 The Syntax 句法 Calculate a running Total 累计计算 Top-N Queries 前N条查询 Example 1 例1 Example 2 例2 Windows 窗口 Range Windows 范围窗口 Compute average salary for defined range 计算定义范围的平均工资 Row Windows 行窗口 Accessing Rows Around Your Current Row 访问当前行前后的行 LAG LEAD Determine the First Value / Last Value of a Group 确定组的首值和末值 Crosstab or Pivot Queries 交叉表或Pivot查询 Conclusion 结论 Links and Documents 链接和文档 Overview

Oracle 建立索引及SQL优化

浪子不回头ぞ 提交于 2019-11-26 14:35:34
Oracle 建立索引及SQL优化 数据库索引: 索引有单列索引 复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。 建设原则:  1、索引应该经常建在Where 子句经常用到的列上。如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%。则应该考虑。  2、对于两表连接的字段,应该建立索引。如果经常在某表的一个字段进行Order By 则也经过进行索引。  3、不应该在小表上建设索引。 优缺点:  1、索引主要进行提高数据的查询速度。 当进行DML时,会更新索引。因此索引越多,则DML越慢,其需要维护索引。 因此在创建索引及DML需要权衡。 创建索引:  单一索引: Create Index < Index -Name> On <Table_Name>(Column_Name);  复合索引: Create Index i_deptno_job on emp(deptno,job); —>在emp表的deptno、job列建立索引。    select * from emp where deptno= 66 and job= 'sals' ->走索引。    select * from emp where deptno= 66 OR job= 'sals' ->将进行全表扫描

oracle 绑定变量不走索引

这一生的挚爱 提交于 2019-11-26 14:35:13
优化来了,优化来了, 组长你来搞定嘛,结果一看,sql抓取出来,秒杀。我优化个串串。因为我看了执行计划没有错。 结果是绑定变量不走索引 SQL> explain plan for select /*+ first_rows(100) */ PHONE, IMSI, RPHONE, RIMSI, CALLEDNUM, TMSI, IMEI, SUBEVTTYPE, RESULT, ERRORCODE, RELEASERCODE, ERRORPHASEIND, FAILUREMSG, FAILUREPREMSG, RANTYPE, VCITY, MSC, MGWIP, BSC, LAI, CGI, ENDCGI, TALKLEN, CI 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 C, DELAY_PAGINGRES, DELAY_SETUP, DELAY_ASSIGNREQ, DELAY_ASSIGNCMP, DELAY_ALERTING, RRANTYPE, MSC_GT, MSCIP, SCP, SCP_GT, RDIRECTION, COMBFLAG, HCOUNTRY, HPROVINCE, HCITY, ROAMTYPE, HOPERATOR, SPECFLAG, CFTYPE, MSRN,