首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么是Oracle的高版本游标(High Version Count)?如何排查?(持续更新)

INCOMPLETE_CURSOR 不完整的游标。当绑定长度可以升级时(也就是说,找到了一个子游标,除了绑定长度不够之外,其他都匹配),旧的游标不能使用,并且建立一个新的。...PQ_SLAVE_MISMATCH PQ工作进程不匹配。如果遇到这种原因编号,并且正在使用并行执行(PX),那么请检查是否真的想使用它。这种不匹配可能是由于运行大量不需要并行执行的小SQL语句造成的。...正在使用Cardinality反馈,因此可以为当前执行形成一个新的计划。 BIND_EQUIV_FAILURE 绑定值的选择性与用于优化现有子游标的选择性不一致。...当使用ACS自适应游标共享并且游标是绑定感知的,那么如果选择性超出了当前的范围,并且新的计划是可取的,那么就会产生一个新的子游标,其原因代码是不共享以前的计划。...尤其对于使用主键或惟一键来操作的SQL语句,其执行计划肯定是固定的,对这类SQL完全可以直接绑定执行计划。

80310

PLSQL --> 动态SQL的常见错误

'SELECT COUNT(*) FROM tb_emp' --直接使用EXECUTE IMMEDIATE后跟动态SQL串获得新表的记录数 INTO v_count; DBMS_OUTPUT.PUT_LINE...; 2.不能使用schema对象作为绑定参数 下面的示例中,动态SQL语句查询需要传递表名,因此收到了错误提示。...END; 6.传递参数时顺序不正确的问题 使用USING传递参数到动态SQL或使用INTO子句传递结果集到变量应注意按正确的顺序排列处理 下面的示例中由于v_ename与v_sal为不同的数据类型...应该将绑定变量与原动态SQL使用连接符进行连接。 2.不能使用schema对象作为绑定参数,将schema对象与原动态SQL使用连接符进行连接。 3.动态SQL块不能使用分号结束(;)。...8.动态SQL中RETURNING INTO返回DML操作的结果,对于SELECT查询返回的结果,在执行EXECUTE IMMEDIATE时,直接使用INTO子句来传递。

2.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    游标和动态SQL

    游标类别:静态游标(指在编译的时候,游标就与一个select语句进行了静态绑定的游标,这种游标只能作用于一个查询语句)和动态游标(就是希望我们的查询语句在运行的时候才跟游标绑定,为了使用动态游标,必须声明游标变量...动态SQL,不编译,执行时动态确定;根据用户输入参数等才能确定SQL语句;解决PL/SQL中不支持DDL语句的问题。...如果后面的语句是个select语句,则可以使用into子句用于接收select语句选择的记录值。可以是一个变量序列,或者一个记录型变量也就是record型的变量。...如果SQL语句中有参数需要动态确定,那么我们使用USING子句,USING子句用于绑定输入的参数变量。...SQL语句中若有参数,使用”:参数名” 示例:动态创建表 BEGIN EXECUTE IMMEDIATE ‘CREATE TABLE bonus(id NUMBER

    1K10

    Oracle 动态SQL「建议收藏」

    4、动态SQL的处理方法 1)、适用execute immediate execute immediate可以处理多数动态SQL操作,包括DDL语句、DCL语句、DML语句、及单行select语句...子句的DML语句 说明:使用execute immediate处理带有returning子句的DML语句时,只能处理作用在单行上的DML语句; 如果DML语句作用在多行上,则必须使用bulk子句...bulk子句 1、概述 在动态SQL中使用BULK子句为9i新增特征,BULK子句实际是动态SQL语句将变量绑定为集合元素, 集合类型可以是PL/SQL所支持的索引表、嵌套表和VARRAY。...2、在execute immediate语句中使用bulk子句 1)、概述 通过在execute immediate语句中使用bulk子句可以处理作用在多行上的动态DML返回子句,和多行查询语句...语句,并且forall语句是和execute immediate结合使用的。

    1.6K10

    Oracle中Execute Immediate用法

    它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,Execute Immediate的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码。...尽管DBMS_SQL仍然可用,但是推荐使用Execute Immediate,因为它获的收益在包之上。...-- 使用技巧 1、Execute Immediate将不会提交一个DML事务执行,应该显式提交,如果通过Execute Immediate处理DML命令,那么在完成以前需要显式提交或者作为Execute...下面的例子展示了所有用到Execute Immediate的可能方面。 5、对于Forms开发者,当在PL/SQL 8.0.6.3.版本中,Forms 6i不能使用此功能....动态调用例程.例程中用到的绑定变量参数必须指定参数类型.黓认为IN类型,其它类型必须显式指定 declare   l_routin    varchar2(100) := 'gen2161.get_rowcnt

    1.5K30

    如何“暴力破解”Oracle性能优化的极端问题(附精彩案例解读)

    性能探针给了使用者很多的有用信息,对于数据库的优化和诊断来说,可以获益不少。而各种代码执行的旁路开关,也可以让使用者在特定的情况下,选择合适自己环境的路径。...下面,我简单介绍下使用方法: 在会话中不启用某个bug的fix: Alter session set “_fix_control”=“bugno:off”; Alter session set “_fix_control...尝试 SQL Profile 和 SPM进行绑定: DECLARE clsql_text CLOB; BEGIN SELECT sql_fulltext INTO clsql_text FROM v$sqlarea...immediate 'alter session set "_fix_control"='‘’||bugs.bugno||':’||target_value||''‘’; Execute immediate...execute immediate 'alter session set "'|| para.name||'"=‘||para.target_value; … --探测 execute immediate

    1.2K30

    Oracle-Soft ParseHard ParseSoft Soft Parse解读

    ; AUTH_CHECK_MISMATCH 表示对同样一条SQL语句转换是不匹配的。...cursor_sharing的值更改为similar   注意当该参数设置为similar,会产生不利的影响 ---- 2.使用绑定变量 使用了Bind Var能提高性能主要是因为这样做可以尽量避免不必要的硬分析...绑定变量要求变量名称,数据类型以及长度是一致,否则无法使用软解析 绑定变量(bindvariable)是指在DML语句中使用一个占位符,即使用冒号后面紧跟变量名的形式,如下   select * from...下面使用了绑定变量,但两个变量其实质是不相同的,对这种情形,同样使用硬解析   select * from emp where empno=:eno;   select * from emp where...---- 软软解析: begin for i in 1..5 loop execute immediate ' select * from xgj_test where

    2.3K20

    alter table新增字段操作究竟有何影响?(上篇)

    如果搞清楚这些,才能对上面的问题给出科学的答案。 为了证明增加字段的操作究竟做了什么,有什么影响,打算使用10046事件来看看。 SQL> desc t; Name Null?...从表名看,col$是列的数据字典表,使用了绑定变量,那这些值是什么,就成了问题的关键。 5....为了查看绑定变量值,从网上学了一招: 使用v$sql_bind_capture可以查看仍在内存中的SQL绑定变量值,找了其中一些,有的已经查不到了,但上面10046前的最后一句SQL使用的绑定变量值如下...,上面SQL显示的绑定变量值,同样是20个,说明是对应的。...(2) update col$的where条件是编号为1和2的绑定变量值,这里显示的是74592和SEX。

    1.3K20

    Oracle优化09-绑定变量

    良好的变量绑定会使OLTP系统数据库中的SQL执行的飞快,内存效率极高。 不绑定变量有可能会使OLTP数据库不堪负重,资源被SQL解析严重消耗,系统显得缓慢。...CPU时间(cpu):1.22+15.31 分析次数(parse): 3+20000 执行次数(execute):4+20000 ---- 通过对比我们可以发现,在OLTP系统中,使用绑定变量的SQL...未绑定变量SQL的资源主要消耗在产生的递归SQL上,这些SQL主要是对SQL语句做hard parse时使用的。...其实这就说明了OLTP和OLAP数据库是有很大的差异的,Oracle需要知道你选择的系统架构,以便于按照系统的架构对相应的参数值做设定,比如初始化参数。...SQL> 循环300次,写入更多的数据 每50次提交一次数据 SQL> begin 2 for i in 1 .. 300 loop 3 execute immediate

    67510

    【DB笔试面试583】在Oracle中,什么是绑定变量分级?

    如果在PL/SQL代码中使用了文本型绑定变量,只要其SQL文本中文本型绑定变量的定义长度发生了变化,那么Oracle为这些绑定变量所分配的内存空间的大小也可能会随之发生变化,而一旦Oracle为这些绑定变量所分配的内存空间的大小发生了变化...原因是子游标中除了会存储目标SQL的解析树和执行计划之外,还会存储该SQL所使用的绑定变量的类型和长度,这意味着即使该SQL的SQL文本没有发生任何改变,只要其SQL文本中文本型绑定变量的定义长度发生了变化...V VARCHAR2(32) :='XIAOMAIMIAO1';--分配32字节的内存空间 BEGIN EXECUTE IMMEDIATE 'INSERT INTO T_BG_20170610...V VARCHAR2(33) :='XIAOMAIMIAO2';--分配128字节的内存空间 BEGIN EXECUTE IMMEDIATE 'INSERT INTO T_BG_20170610...V VARCHAR2(129) :='XIAOMAIMIAO3';--分配2000字节的内存空间 BEGIN EXECUTE IMMEDIATE 'INSERT INTO T_BG_20170610

    72010

    Mariadb EXECUTE IMMEDIATE 解析

    0x01 前言 该篇文章起源于XCTF 决赛中清华对一道web题的非预期,在该题中过滤了很多的关键字,包括SELECT等,预期解为mariadb主从复制,但清华使用EXECUTE IMMEDIATE绕过了黑名单导致非预期...其中,stmt_string 是要执行的 SQL 查询字符串,可以包含占位符。var_name 是可选的参数列表,用于从查询结果中接收值。...例如,下面的代码展示了如何使用 EXECUTE IMMEDIATE 执行一个简单的 SELECT 查询: SET @id = 123; SET @stmt = CONCAT('SELECT * FROM...mytable WHERE id = ', @id); EXECUTE IMMEDIATE @stmt; 在这个例子中,我们将 @id 变量的值拼接到 SQL 查询字符串中,然后使用 EXECUTE...IMMEDIATE可以进行绕过 原题中使用的环境为mariadb 10.3.38 EXECUTE IMMEDIATE 'SELECT * FROM ctf.admin'; 可以直接执行字符串中的sql

    47140

    Oracle SQL调优系列之绑定变量用法简介

    2.2、在PL/SQL中使用绑定变量 2.3、PL/SQL批量绑定变量 2.4、Java代码里使用绑定变量 一、SQL执行过程简介 继上一篇博客Oracle的cursor学习笔记:Oracle的游标Cursor...可以是字母、数字或者字母和数字的组合 ok,上面的那种类型的sql,就可以用一条带绑定变量的sql来表示: select * from sys_user where userid = :u; 这样这种类型的一堆.../* SQL语句使用绑定变量*/ declare vc_empname varchar2(10); begin execute immediate 'select ename from t_emp...(vc_number)); commit; end; / 所以绑定变量在pl/sql里的核心语法为: execute immediate [sql语句] using [变量] 2.3、PL/SQL...stmt = con.prepareStatement( query_sql ); stmt.executeQuery(); 使用绑定变量的写法: String empno = 'xxxxx'; String

    71120

    Oracle SQL调优系列之体系结构学习笔记

    、数据缓冲、日志缓冲方面调优的例子 共享池相关例子 未使用使用绑定变量的情况,进行一下批量写数据,在登录系统,经常用的sql是select * from sys_users where username...意思是不需要Oracle优化器每次都解析sql获取执行计划,对于这种类似的sql是没必要的,Oracle提供了绑定变量的方法,可以用于调优sql,然后一堆sql就可以用 select * from sys_users...where username=:x 这里用一个变量x表示,具体例子如下, 新建一张表来测试 create table t (x int); 不使用绑定遍历,批量写数据 begin for i in...1 .. 1000 loop execute immediate 'insert into t values('|| i ||')'; commit; end loop; end; /...输出 已用时间: 00: 00: 00.80 加上绑定遍历,绑定变量是用:x的形式 begin for i in 1 .. 100 loop execute immediate 'insert

    15420

    Oracle体系结构学习笔记

    下面介绍共享池、数据缓冲、日志缓冲方面调优的例子 共享池相关例子 未使用使用绑定变量的情况,进行一下批量写数据,在登录系统,经常用的sql是select * from sys_users where username...意思是不需要Oracle优化器每次都解析sql获取执行计划,对于这种类似的sql是没必要的,Oracle提供了绑定变量的方法,可以用于调优sql,然后一堆sql就可以用 select * from sys_users...where username=:x 这里用一个变量x表示,具体例子如下, 新建一张表来测试 create table t (x int); 不使用绑定遍历,批量写数据 begin for i in...1 .. 1000 loop execute immediate 'insert into t values('|| i ||')'; commit; end loop; end; /...输出 已用时间: 00: 00: 00.80 加上绑定遍历,绑定变量是用:x的形式 begin for i in 1 .. 100 loop execute immediate

    36310
    领券