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

同样sql执行结果不同原因分析 (r4笔记第27天)

今天开发同事问我一个问题,说有一个sql语句,在weblogic日志中执行没有结果,但是手动拷贝数据到客户端执行,却能够查到。...SQL> select *from test where objname='I_USER1'; no rows selected --但是查询时候却没有任何结果 如果我们在查询中明确加入那个不可见字符...,然后在客户端中又执行了一遍,发现问题似乎比预想更有些奇怪。...但是一模一样语句在两边执行结果却不相同。 肯定是某个地方出了问题,我静下来,仔细分析日志中sql语句,按照目前情况来说,只可能在某处修改了数据导致,从这个查询语句往前排查,最终发现了线索。...通过数据来说明,就如同下面的情况,我们通过distribute_no修改了status值,再通过status,entity_id来匹配对应数据行得到结果就为空,在得到结果为空后,校验失败,于是事务就回退了

82880

Oracle PLSQL语句基础学习笔记(上)

PL/SQLORACLE对标准数据库语言扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器其他工具中了,近几年中更多开发人员DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法...1、PL/SQL优点 从版本6开始PL/SQL就被可靠整合到ORACLE中了,一旦掌握PL/SQL优点以及其独有的数据管理便利性,那么你很难想象ORACLE缺了PL/SQL情形。...PL/SQL 不是一个独立产品,他是一个整合到ORACLE服务器ORACLE工具中技术,可以把PL/SQL看作ORACLE服务器内一个引擎,sql语句执行者处理单个sql语句,PL/SQL引擎处理...当PL/SQL程序块在PL/SQL引擎处理时,ORACLE服务器中SQL语句执行器处理pl/sql程序块中SQL语句。...PL/SQL支持所有SQL数据类型所有SQL函数,同时支持所有ORACLE对象类型 PL/SQL块可以被命名存储在ORACLE服务器中,同时也能被其他PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问

2.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

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

♣ 答案部分 绑定变量分级(Bind Graduation)是指OraclePL/SQL代码中会根据文本型绑定变量定义长度而将这些文本型绑定变量分为四个等级,不同等级分配内存大小不同,如下表所示...,那么该SQL之前存储在子游标(Child Cursor)中解析树执行计划就不能被重用了。...原因是子游标中除了会存储目标SQL解析树执行计划之外,还会存储该SQL所使用绑定变量类型长度,这意味着即使该SQLSQL文本没有发生任何改变,只要其SQL文本中文本型绑定变量定义长度发生了变化..._LHR VALUES(:N,:V)' USING N, V; COMMIT; END; / 执行上述建表语句PL/SQL代码,查看结果: LHR@orclasm > col v format...所以这里Oracle执行范例PL/SQL代码1、2、3时每次都是硬解析,但在执行范例PL/SQL代码45时会用软解析/软软解析,因为范例PL/SQL代码45可以重用之前执行范例PL/SQL代码3

67810

Oracle PLSQL基础语法学习16:CASE Expression(CASE表达式)

前言 PL/SQLOracle数据库中一种嵌入式语言,其功能强大,可以进行存储过程函数编写,帮助开发者快速高效地处理数据库操作。 最好学习是实践加上看官方文档。...官方文档中代码例更是精华重点所在。 IT行业如此,编程如此,Oracle PL/SQL学习更是如此。...Oracle PL/SQL基础语法学习16:CASE Expression(CASE表达式) CASE Expression(CASE表达式)介绍 在Oracle PL/SQL中,CASE表达式(CASE...Expression)是一个非常强大且常用工具,可以用于在SQLPL/SQL执行基于条件操作。...#GUID-216F1B33-493F-4CDE-93BB-096BACA8523E 总结 CASE表达式是一个非常有用工具,可以用于在SQLPL/SQL执行基于条件操作。

17920

【DB笔试面试576】在Oracle中,简述Oracle游标。

库缓存是SGA中共享池(Shared Pool)中一块内存区域,主要作用就是缓存执行SQL语句PL/SQL语句(例如存储过程、函数、包、触发器)及其所对应解析树(Parse Tree)执行计划等信息...当同样SQL语句PL/SQL语句再次被执行时候就可以直接利用已经缓存在库缓存中那些相关对象而无须再次从头开始解析,这样就提高了这些SQL语句PL/SQL语句在重复执行执行效率。...对于单个Hash Bucket而言,里面存储就是哈希值相同所有库缓存对象句柄,同一个Hash Bucket中不同库缓存对象句柄之间会用指针连接起来,即同一个Hash Bucket中不同库缓存对象句柄之间实际上组成了一个库缓存对象句柄链表...例如,SQL语句匿名PL/SQL块所对应库缓存对象句柄Namespace值就都是CRSR。...Oracle数据库中常见Namespace其对应含义如下表所示: Namespace值 含义 CRSR SQL语句匿名PL/SQL块所对应库缓存对象句柄Namespace值均为“CRSR

1.3K20

Oracle 客户端管理软件安装

,所以用的人比较少 左图就是Oracle自带客户端SQL Developer,注意要使用这个客户端有一个很坑地方,必须下载JDK,而且这个JDK因为不同Oracle版本,所需JDK版本也不同。...我下载是JDK8,但这个工具可能比较老,需要1.5.0~1.6.1之间JDK 下载完JDK之后,再次打开SQL Developer,然后指定JDKJava.exe位置,这样就能正常使用SQL...(2)PL/SQL Developer PL/SQL 教于SQL Developer来说,后者跨平台性比较好,但是本身比较大(大约300M)很占用资源,而且用户体验一般,而PL/SQL 只有大约40M...但是用PL/SQL连接Oracle数据库,不管本地还是远程,都需要安装Oracle客户端(500M左右)比较大,而且在不同操作系统上安装各不相同,需要修改配置文件。比较麻烦....c、在执行这一步操作前,请确保监听程序本地网络服务已配置完毕!!!

2.3K50

什么是plsql语句_过程化SQL有三种循环结构

*** PL/SQLOracle 公司在标准SQL语言基础上进行扩展而形成一种可以在数据库上进行设计变成语言, 通过Oracle PL/SQL 引擎执行。...—PL/SQL优势 *** 由于PL/SQL语言是从SQL语言扩展而来,所以PL/SQL除了支持SQL数据类型函数外,同时也支持 Oracle对象类型。...如果此时换用PL/SQL语句,结果则不一样了。PL/SQL语句块可以包含多条SQL语句,而语句 块可以嵌套在程序中,甚至可以存储到Oracle 服务器上。...这样用户只需要连接一次数据库就可以把 需要参数传递过去,其他部分将在Oracle 服务器内部执行完成,然后返回最终结果。...(5)、良好可移植性 PL/SQL可以成功地运行到不同服务器中。

1.4K20

【DB宝53】Oracle异构平台迁移利器之XTTS(使用dbms_file_transfer方式)

2.2.3、xttdriver.pl -S做迁移准备 2.2.4、将源端xttnewdatafiles.txtgetfile.sql传到目标端 2.2.5、在目标端执行数据文件拷贝...XTTS发展历史: 从8i,tts技术诞生,引入了相同平台相同块大小之间表空间传输。到了9i,tts开始支持同平台中,不同块大小表空间传输。...-G options) DBMS_FILE_TRANSFER 包是 Oracle 提供一个用于复制二进制数据库文件或在数据库之间传输二进制文件程序包,在 XTTS 迁移中,利用不同参数进行数据文件传输转换完成迁移...,将备份产生备份集写到本地或者 NFS 盘上,然后再通过 rman-xttconvert 包中包含不同平台之间数据文件格式转换包对进行数据文件格式转换,最后通过记录表空间 FILE_ID 号生产元数据导入脚本...xttdriver.pl 是备份、转换增量应用执行脚本,xtt.properties 是属性文件,其中包含 XTTS 配置路径、参数等。

1.8K50

SQL*Plus copy 命令处理大批量数据复制

TO database 同时指定了连接原数据库以及目的数据库 支持几种不同表间数据复制方式:APPEND|CREATE|INSERT|REPLACE 支持跨Oracle版本,不同schema之间,相同...schema之间数据复制 支持异构数据库间数据复制,如Oracle到非Oracle数据库 支持Oracle跨平台间数据库复制,如windows平到到linux平台 支持本地数据库到远程数据库,远程数据库到本地...oracle版本之间数据复制 --下面是oracle 10g到oracle 11g之间数据复制 cott@SYBO2SZ> copy from scott/tiger@sybo2sz to scott...SQL*Plus 每一次fetch数据行数,缺省值为15,有效值是1到5000 copycommit 该参数用于copy完多少行数据之后执行commit,如果该值为0,则表示所有数据复制完毕后再执行...--上面得到结果表明,copy命令被使用时不产生undo redo --一百万行数据复制时间是41.84 seconds --下面清除刚刚复制目的表 scott@SYBO2SZ> drop table

90710

Oracle 开放源代码项目

完全实施 ORACLE BLOB CLOB 字段。可能执行存储过程部分 PL/SQL 代码。内存中快速而功能强大表。...PL/FLOW PL/FLOW 是用 Oracle PL/SQL 编写工作流引擎,按照工作流管理联盟规定实施接口 1 2(进程定义客户端 API)。...DB Web Admin DB Web Admin 提供通过 Web 对 Oracle 数据库应用程序简单访问。显示现有用户、进程系统锁定,还允许用户终止会话并执行 SQL 查询。...oraschemadoc 执行结果是静态 html 文件集。 CodeBrew 这是一种服务器端组件专门框架,用于 Oracle PL/SQL 网页 Web 服务。...Oracle PL/SQL 代码编辑器 Oracle PL/SQL 代码编辑器使您可以连接到任何 Oracle 数据库,浏览数据库对象,编辑调试突出语法主题 PL/SQL 代码。

3K80

Oracle 数据库编程语言 PLSQL 历史

我自己在面试时,有时也会问一些与现有岗位不同东西,说不定就发现了面试者更大世界。 Peter 不是一般人眼中典型 Oracle 开发人员。...尽管后来开发人员在数据库数据 PL/SQL 引擎之间类型转换做了一定妥协,但后来依然觉得有些遗憾。...首先,Laurence Hughes 进行了一些清理工作,整理了一些零碎工作,然后让 PL/SQL 朝着面向对象编程语言方向发展,并开始监督代码生成执行工作。...作为 Oracle 产品组件之一,PL/SQL 引擎架构为 Oracle 数据库提供了许多帮助。首先,这个引擎使用数据库本身作为服务器端去执行命令。...Pierre Dufour 转到了应用程序端,在那里他从事 CRM 工作,并构建了仅供内部使用 PL/SQL 编译器 Rosetta,这使得 Java PL/SQL 之间进行调用而无需进行修改成为可能

1.5K20

分析Oracle数据库日志文件(1)

SQL语句UNDO语句(分别记录在V$LOGMNR_CONTENTS视图SQL_REDOSQL_UNDO中)。...,在不同环境中,实际删除记录数可能各不相同,因此记录这样语句实际上并没有什么实际意义,LogMiner重构是在实际情况下转化成元操作多个单条语句。...LogMiner包含两个PL/SQL几个视图: 1、dbms_logmnr_d包,这个包只包括一个用于提取数据字典信息过程,即dbms_logmnr_d.build()过程。...DDL语句,并且会自动侦察并标记当前数据字典最初日志流之间差别,这样即使最初日志流中所涉及表已经被更改或者根本已经不存在,LogMiner同样会返回正确DDL语句。...IS VARRAY(700) OF col_description; 保存文件,然后执行一遍这个脚本: 15:09:06 SQL> @c:\oracle\ora81\rdbms\admin

2.9K50

Oracle PLSQL例14:比较运算符BOOLEAN表达式

前言 PL/SQLOracle数据库中一种嵌入式语言,其功能强大,可以进行存储过程函数编写,帮助开发者快速高效地处理数据库操作。 最好学习是实践加上看官方文档。...官方文档中代码例更是精华重点所在。 IT行业如此,编程如此,Oracle PL/SQL学习更是如此。...PL/SQL支持逻辑运算符有AND、ORNOT三种,这些运算符可以将结果组合成更复杂布尔表达式。...当BOOLEAN表达式结果为真时,PL/SQL执行将在THEN子句中指定操作,否则执行ELSE子句中指定操作(如果有的话)。...BOOLEAN表达式在PL/SQL中非常常用,可以帮助我们进行逻辑判断循环控制,提高代码可读性执行效率。熟练掌握BOOLEAN表达式使用是PL/SQL开发重要基础。

36841

Oracle-使用切片删除方式清理非分区表中超巨数据

-- Step3.3:FORALLBULK COLLECT知识点 当PL/SQL运行时引擎处理一块代码时,它使用PL/SQL引擎来执行过程化代码,而将SQL语句发送给SQL引擎来执行SQL引擎执行完毕后...,将结果再返回给PL/SQL引擎。...这种在PL/SQL引擎SQL引擎之间交互,称为上下文交换(context switch)。每发生一次交换,就会带来一定额外开销....从Oracle 8i开始,PL/SQL得到了两点增强,可以将PL/SQL引擎SQL引擎之间多次上下文交换压缩为一次交换: FORALL,用于增强PL/SQL引擎到SQL引擎交换。...BULK COLLECT子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQL引擎发送到PL/SQL引擎。

1.3K20

数据库常见面试题及答案(数据库面试常见问题)

1.建索引 2.减少表之间关联 3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据 量大表排在前面 4.简化查询字段,没用字段不要,已经对返回结果控制,尽量返回少量数据...1)库函数不同。 2)Oracle是用表空间来管理,Mysql不是。 3)显示当前所有的表、用户、改变连接用户、显示当前连 接用户、执行外部脚本语句不同。...sql语法不同。 18、Oracle语句有多少类型 Oracle语句分三类:DDL、DML、DCL。...PL/SQL是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQLOracle数据库对SQL语句扩展。...PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 PL/SQL 。 25、序列作用 Oracle使用序列来生成唯一编号,用来处理一个表中自增字段。

3.4K10

Oracle-Soft ParseHard ParseSoft Soft Parse解读

当发布一条DML SQLPL/SQL命令时,Oracle会自动寻找该命令是否存在于共享池中来决定对当前语句使用硬解析或软解析。...e.硬解析,生成执行计划。 f.执行SQL代码,返回结果。...至此,解析步骤已经全部完成,Oracle将会根据解析产生执行计划执行SQL语句提取相应数据。 ---- 不能使用软解析情形 1.下面的三个查询语句,不能使用相同共享SQL区。...类似的情况,下面的查询中,尽管其where子句empno不同Oracle同样为其生成了不同执行计划  select * from emp where empno=7369   select *...当一个Client提交一条SqlOracle后,Oracle 首先会对其进行解析(Parse),然后将解析结果提交给优化器(Optimiser)来进行优化而取得Oracle认为最优Query Plan

2.2K20

Oracle优化09-绑定变量

如果找到了,Oracle会直接使用已经存在SQL执行计划去执行当前SQL,然后将结果返回给用户。...如何生成执行计划详细信息,可以参考10053事件 ---- 4.执行SQL Oracle按照上一步生成执行计划,执行SQL,并将结果返回给用户。...从结果中我们可以看到,虽然只是谓词不同,但是oracle却选择了不同执行计划,因为Oracle认为那样计划代价最小。...,让Oracle确切知道谓词条件值,它直接决定了SQL执行计划选择,这样做方式就是不要绑定变量 在OLAP系统中,表索引分析显得至关重要,因为它是OracleSQL做出正确执行计划信息来源一句...bind peeking 并不能最终解决不同谓词导致不同执行计划问题,它只能让SQL第一次执行时候,执行计划更加准确,并不能帮助OLAP系统解决绑定变量导致执行计划选择错误问题,所以,OLAP依然不应该使用绑定变量

61110

Oracle数据库,浅谈PLSQL异常处理

众所周知,程序错误一般情况下分为两类:编译错误运行时错误。其中运行时错误被称为异常。PL/SQL语句块中处理异常部分即为异常处理部分。在异常处理部分,可以指定当特定异常发生时所采取动作。...本文我们就来聊一聊PL/SQL异常处理那些事儿。 ? PL/SQL有两种类型异常:内置异常用户自定义异常。其中,内置异常又分为预定义异常非预定义异常。...PL/SQL procedure successfully completed....同时,输出结果更加面向用户,而不是编程人员。 上述NO_DATA_FOUND即为Oracle预定义异常。 二、 用户自定义异常 通常,在自己程序里,也许需要处理与所写程序相关问题。...这时可以通过EXCEPTION_INIT编译指令进行错误代码名称关联。当PL/SQL语句块执行部分出现某个运行错误时,会抛出不同类型异常。

67820

ORA-06502 assigning values from SQL to PLSQL variables

最近SQL查询返回结果PL/SQL变量出现ORA-06502错误。...1、问题描述 --出现问题是在一个package里,有两个参数游标,一个父游标,一个子游标,当父游标输出结果传递值给子游标时提示值太大 --父游标原sql语句较长,且复杂,为简化描述下面构造其环境...-->使用下面的查询输出结果时报ora-06502错误 -->查询语句也比较简单,取表tdt列最小值,在外层查询赋值给变量 -->外层子查询貌似画蛇添足,纯粹是模拟原有环境 goex_admin.../SQL procedure successfully completed. 3、尝试不同版本执行该查询 -->下面在Oracle 11g做类似模拟 SQL> select * from v$...-->同样是原来语句,而在Oracle 11g中没有这个问题 SQL> set serveroutput on; SQL> DECLARE 2 tradedate_out

70510
领券