Oracle Peeking绑定变量的控制

我们知道从Oracle9i开始,Oracle引入了Peeking of User-Defined Bind Variables的特性,这个特性可以用来在存在数据倾斜时对执行计划纠偏。
然而这一特性也可能带来一些副作用,所以Oracle同时引入了一个内部参数用于控制这一特性:

SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
2 FROM SYS.x$ksppi x, SYS.x$ksppcv y
3 WHERE x.inst_id = USERENV ('Instance')
4 AND y.inst_id = USERENV ('Instance')
5 AND x.indx = y.indx
6 AND x.ksppinm LIKE '%&par%'
7 /
Enter value for par: peek
old 6: AND x.ksppinm LIKE '%&par%'
new 6: AND x.ksppinm LIKE '%peek%'

NAME VALUE DESCRIB
------------------------------ -------------------- ------------------------------
_optim_peek_user_binds TRUE enable peeking of user binds

这个参数缺省值为True,当设置为False时将禁用peeking of user binds.

-The End-

时间: 2024-08-23 05:25:30

Oracle Peeking绑定变量的控制的相关文章

Oracle获取绑定变量的各种方法

Oracle获取绑定变量的各种方法 当Oracle解析和执行含有绑定变量的目标SQL时,如果满足如下两个条件之一,那么该SQL中的绑定变量的具体输入值就会被Oracle捕获: l 当含有绑定变量的目标SQL以硬解析的方式被执行时. l 当含有绑定变量的目标SQL以软解析或软软解析的方式重复执行时,Oracle在默认情况下至少得间隔15分钟才会捕获一次.这个15分钟受隐含参数"_CURSOR_BIND_CAPTURE_INTERVAL"控制,默认值为900秒,即15分钟. SYS@orc

绑定变量和BIND PEEKING

http://www.oraclefans.cn/forum/showtopic.jsp?rootid=5467&CPages=1 http://blog.csdn.net/tianlesoftware/article/details/5544307 使用绑定变量可以减少SQL PARSE,但是使用绑定变量有一个不好的地方,就是对于访问具有倾斜的列,可能使用错误的执行计划.在Oracle 9i之前,如果WHERE 条件里面全部使用绑定变量,那么只能使用固定的选择性参数来确定执行计划. =操作和&g

Oracle 绑定变量窥探

     Bind Peeking是Oracle 9i中引入的新特性,一直持续到Oracle 10g R2.它的作用就是在SQL语句硬分析的时候,查看一下当前SQL谓词的值 ,以便生成最佳的执行计划.而在oracle 9i之前的版本中,Oracle 只根据统计信息来做出执行计划. 一.绑定变量窥探     使用SQL首次运行时的值来生成执行计划.后续再次运行该SQL语句则使用首次执行计划来执行.     影响的版本:Oracle 9i, Oracle 10g     对于绑定变量列中的特殊值或非

绑定变量优缺点、使用、绑定变量窥探、 Oracle自适应共享游标

绑定变量优缺点.使用.绑定变量窥探     绑定变量是Oracle解决硬解析的首要利器,能解决OLTP系统中library cache的过度耗用以提高性能.然刀子磨的太快,使起来锋利,却容易折断.凡事皆有利弊二性,因地制宜,因时制宜,全在如何权衡而已.本文讲述了绑定变量的使用方法,以及绑定变量的优缺点.使用场合.   一.绑定变量     提到绑定变量,就不得不了解硬解析与软解析.硬解析简言之即一条SQL语句没有被运行过,处于首次运行,则需要对其进行语法分析,语义识别,跟据统计信息生成最佳的执行

Oracle中如何绑定变量

oracle 中,对于一个提交的sql语句,存在两种可选的解析过程, 一种叫做硬解析,一种叫做软解析. 一个硬解析需要经解析,制定执行路径,优化访问计划等许多的步骤.硬解释不仅仅耗费大量的cpu,更重要的是会占据重要的们闩(latch)资源,严重的影响系统的规模的扩大(即限制了系统的并发行), 而且引起的问题不能通过增加内存条和cpu的数量来解决. 之所以这样是因为门闩是为了顺序访问以及修改一些内存区域而设置的,这些内存区域是不能被同时修改.当一个sql语句提交后,oracle会首先检查一下共享

oracle ORA-01745错误:无效的主机/绑定变量名

今天测试发现有个存储过程执行报ORA-01745: 无效的主机/绑定变量名的错误 报错语句是delete tbl_temp_01system where writetime > :sysdate 原来这个错误的原因是:sysdate这个绑定变量用了oracle关键字导致的. 将:sysdate改为:vsysdate,错误解决. 所以以后要主要绑定变量不能使用oracle关键字. 本文出自 "richard的笔记-积微成著" 博客,请务必保留此出处http://zxf261.blo

Oracle绑定变量与直方图

一.绑定变量的窥探(peek) 1.Oracle在处理带有绑定变量的SQL时候,只会在硬解析的时候才会"窥探"一下SQL中绑定变量的值,然后会根据窥探到的值来决定整个SQL的执行计划.参数:_optim_peek_user_binds  2.绑定变量窥探的案例 create table t8(id int ,name varchar2(100)); begin for i in 1 .. 1000 loop  insert into t8 values(i,'gyj'||i);  en

为什么用 PostgreSQL 绑定变量 没有 Oracle pin S 等待问题

早上看到盖国强老师在朋友圈里分享了一篇关于软解析带来的Pin S等待的问题.有感而发,跟大家聊一聊为什么PostgreSQL不存在这个问题. Oracle 在Oracle中多个会话高并发的执行同一条SQL,如果使用了绑定变量的话,会产生pin s的等待事件.原因如下(取自互联网http://www.dbafree.net/?p=778) 每个child cursor(你可以认为是一条SQL的plan tree)下面都有一个mutexes这样的简单内存结构,当有session要执行该SQL而需要p

C# 使用oracle绑定变量后,查询效率变慢如何解决?满意可加分

问题描述 如题.本人写了一个C#使用oracle绑定变量的DAL,在应用里使用此连接.查询速度没有提升,反而变慢,是怎么回事?如何解决?急需解决,满意可加分. 解决方案 解决方案二:怎么绑的,代码呢解决方案三:代码如下:publicSystem.Data.DataSetQuery(stringSQLString,List<DBParameter>dbParam){using(OracleConnectionconnection=newOracleConnection(connectionStr