今天读了一篇MOS文章,《ORA-01722, ORA-01839, ORA-01841, ORA-01847 or ORA-01858 from Queries with Dependent Predicates (文档 ID 232243.1)》,整篇文章的目的就是为了阐述对于包含相互依赖关系谓词的SQL语句产生错误的可能原因(To explain the possible causes of these errors in SQL statements that include predicates that are dependent on each other)。
一、问题提示 执行Oracle的sql语句提示【ORA-01722: invalid number】无效数字错误。
本来正常的,经过抓包才知道原来是数字型的无意中多了乱码!本来是3276的居然多了后面一串 3276P数据库
原因:端口号冲突 解决: (1)方法一 使用命令netstat -ano找到占据端口8005的进程号,再用命令taskkill /pid xxxx杀死对应进程xxxx。 (2)方法二 打开任务管理器,看看开发工具eclipse下是否启动了两个相同进程,直接结束进程,重启eclipse和项目。 (3)方法三 修改Tomcat配置文件server.xml中的端口号。 修改8080端口为其它端口号。
同事问了个 MySQL 的问题,现象上确实诡异。大致意思是 SELECT 表的数据,WHERE 条件是 "a=0",其中 a 字段是 VARCHAR 类型,该字段存在 NULL 以及包含字符的记录,但是并无 "0" 的记录,然后执行 SQL 返回的记录恰恰就是所有包含字符的记录。
最近听了个讲座,其中介绍到了Oracle的谓词,原始版本的例子,如下所示,从数据上能看到,c1='3'的时候,c2的值是个字符串类型的数字,
异常(EXCEPTION)处理是用来处理正常执行过程中未预料到的事件,包括程序块的异常处理、预定义的错误和自定义错误。如果PL/SQL程序块一旦产生异常,而程序并没有指出如何处理,那么程序就会自动终止运行。
今天看到Franck Pachot 发了一个Twitter,意思是Oracle里的SQL还能这么写。猛一看确实让人有些意外。 禁不住诱惑,自己也尝试了一番。我现在12cR2的环境中测试了一下。 Or
作者简介 李真旭 Oracle ACE 专家,拥有超过10年的 Oracle 运维管理使用经验,参与过众多移动、电信、联通、银行等大型数据库交付项目,具有丰富的运维管理经验,对 Oracle 数据库管
Oracle Database 12c Release 2(12.2)包括对数据类型转换函数的许多增强,从而更容易处理转换错误。
碰巧看到一篇文章提到了Oracle的greatest函数,相对应的有个least,以为这俩是个新的函数,但是看了下官方文档,其实在11g的《SQL Language Reference》,就提到了他们,是我孤陋寡闻了。
在SQL语句中使用IF-THEN-ELSE逻辑,可以使用两种方法:CASE表达式、DECODE函数。
之前总结过一篇 通过错误的sql来测试推理sql的解析过程 也算是以毒攻毒,当然也分析出来一些有意思的内容来,让原本看起来枯燥的内容有了更多的实践意义。 在后来小组内部做了一个分享总结,本来以为已经总结差不多了,但是发现真是集思广益,大家临时想出不少好的点子来,这也就是brainstroming的好处吧. 比如下面的错误sql,在解析的时候,会首先报错在group by的部分。在10g和11g略微有一些差别。目前以11g的为基线。 目前存在一个表test,字段情况为(id number,name va
在学习Oracle的时候,必然会接触到sql解析的过程。这个过程大体是这样的步骤。 1.对sql的文法检查,查看是否有文法错误,比如from,select拼写错误等。 2.在数据字典里校验sql涉及的对象是否存在。 3.将对象进行名称转换,比如同义词转义成对应的对象。比如select * from t t是一个同义词指向hr.test 4.检查语句的用户是否具有访问对象的权限 5.生成执行计划 6.将游标产生执行计划,sql文本装载入library cache所在的heap中。 这个过程看起来比较容易理解,
注意:EXPER1,EXPER2数据类型(NVL要求第二个参数类型可以转换为第一个参数类型)
不要使用字面量(常量)做查询条件的值,而要使用绑定变量给查询条件赋值,使用绑定变量是需要编译一次查询计划,编译结果保存在共享池(库缓存)中。
为了方便,先定义二个常量: package jmyang.utils; public class ConstDefine { /** * WebLogic服务器地址 */ public static final String WebLogicServerUrl = "t3://localhost:7001"; /** * WebLogic JNDI上下文字符串 */ public static final String WebLo
如果抛出一个问题,你是如何理解MySQL解析器的,它和Oracle解析器有什么差别?相信大多数同学都会比较迷茫,因为这个问题很难验证,要不是看源码,要不就是查看书上是怎么说的,其实这两种方法对我们去理解这个问题来说不是很合适,如果能够通过实践来做下理解就好了。
说起数据类型转换,在开发中如此,在数据库中也是如此,之前简单对比过MySQL和Oracle的数据类型转换情况,可以参见MySQL和Oracle中的隐式转换 http://blog.itpub.net/23718752/viewspace-1787973/ 不过当时写完之后,有个读者随口问了一句为什么,为什么呢?似乎自己还是一知半解,说是规则,无规矩不成方圆,倒也无可非议,不过我觉得还是要再看看,看看还能有哪些收获,接下来的内容我就不能保证正确性了,希望大家明辨,也希望提出意见,毕竟就是希望把问题搞明白而已。
1.绝对值 SQL:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) S:select floor(-1.001) value O:select floor(-1.001) value from dual 4.取整(截取) S:sel
Oracle存储过程 oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 2.SELECT INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条 记录,否则抛出异常(如果没有记录抛出NO_DATA_
Oracle提供了utlrp.sql和utlprp.sql脚本来重新编译数据库中的所有无效对象,
Oralce中的to_date()函数用于将字符串转换为日期对象,具体使用格式为:
0 总结 oracle异常总结 Oracle内部异常统一在《Database Error Messages》中,例如ORA-00910等等,其中-00910就是SQLCODE。 Oracle内部异常有系统内部识别抛出,在Catch时只能使用Other关键字接受(… when others …)。 预定义异常将一些常用SQLCODE绑定名称,所以在Catch是可以使用名字接收(… when ZERO_DIVIDE …)。 用户自定异常有两种使用方式: 定义·xxx EXCEPTION;变量,然后直接
有多种方式可以将文本文件的数据导入到数据库中,例如,利用PLSQL Developer软件进行复制粘贴,利用外部表,利用SQL*Loader等方式。至于EXCEL中的数据可以另存为csv文件(csv文件其实是逗号分隔的文本文件),然后导入到数据库中。
SQL Server服务器默认监听的端口号是1433,如果服务器的端口不是1433,简单的链接方法可以在服务器IP地址后面写逗号和制定端口,例如:
英文解析:resource busy and acquire with NOWAIT specified
一.SQLPLUS登陆命令: 使用sqlplus: 10G之前的版本登陆时需要加引号(单、双引号皆可)如:sqlplus ” / as sysdba” sqlplus -prelim / as sysdba 从Oracle10g开始,sqlplus提供了一个参数选项-prelim,用这个参数,在系统已经hang的时候可以连接到SGA而不是数据库,也就是说没有session被创建。 sqlplus /nolog conn / as sysdba connect / assysdba conn sys/oracle assysdba SQL>conn bys/bys 已连接。 SQL>show user USER 为 “BYS” 使用服务名登陆,as sysdba即使用SYSDBA用户权限登陆 SQL>conn sys/oraclesys@orcl as sysdba 已连接。 查看用户权限: SQL>show user USER 为 “SYS” SQL>conn sys/oraclesys@orcl as sysoper 已连接。 SQL>show user USER 为 “PUBLIC” 登陆时可以使用IP+端口+服务名或主机名+端口+服务名 SQL>conn bys/bys@192.168.0.181:1521/orcl 已连接。 SQL>show user USER 为 “BYS” SQL>conn scott/tiger@xporacle:1521/orcl 已连接。 SQL>show user USER 为 “SCOTT” 总结如下: 直接在SQLPLUS启动时输入用户名密码的多种格式。 sqlplusscott/tiger sqlplus -prelim /nolog –数据库hang住时,可以这样登陆。 sqlplusscott/tiger@orcl sqlplus scott/tiger@192.168.2.18:1521/orcl sqlplusscott/tiger@xporacle:1521/orcl 如果监听运行在默认的1521端口,可以不写端口:如下: sqlplus bys/bys@192.168.1.211/bys3 如果不想在命令中输入密码,可以使用:或者为用监听名时: [oracle@bys3 dbs]$ sqlplus bys SQL*Plus: Release 11.2.0.4.0 Production on Thu Jan 16 20:26:51 2014 Copyright © 1982, 2013, Oracle. All rights reserved. Enter password: sqlplussys/oraclesys as sysdba
近日客户反应:应用程序换到另一台机器运行时报错:“Ora-01017:用户名/口令无效; 登录被拒绝。”
碰巧看见了dba-oracle上的一个问题,算是基础性问题,
【实例一】 xmltype是oracle中的type object类型。在实际使用中,可以当做xml对象来使用:
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子:
名称 TO_CHAR 和 TOCHAR 是可互换的,并且支持 Oracle 兼容性。
SQL*Plus: Release 11.2.0.1.0 Production on Mon Jan 5 18:49:31 2015 Copyright (c) 1982, 2009, Oracle. All rights reserved. ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Linux-x86_64 Error: 2: No such file or directory Process ID: 0 Session ID: 0 Serial number: 0
目前一共包含6个脚本,若脚本的扩展名为“.sql”则表示该脚本为sql脚本,若脚本的扩展名为“.pl”则表示该脚本为perl脚本。
1.1 异常处理概念 1.1.1 预定义的异常处理 1.1.2 非预定义的异常处理 1.1.3 用户自定义的异常处理 1.1.4 用户定义的异常处理 1.2 异常错误传播 1.2.1 在执行部分引发异常错误 1.2.2 在声明部分引发异常错误 1.3 异常错误处理编程 1.4 在 PL/SQL 中使用 SQLCODE, SQLERRM异常处理函数 即使是写得最好的PL/SQL程序也会遇到错误或未预料到的事件。一个优秀的程序都应该能够正确处理各种出错情况,并尽可能从错误中恢复。任何ORACLE错误(报告为
目前一共包含以下4个脚本,其中DB_healthcheck_lhr_v6.0.1_ALL_RW.sql 是读写版本,在脚本执行过程中会对数据库做DDL(创建一些用到的临时表)和DML操作(对自己创建的临时表DML操作),但是,在脚本执行后会清理掉创建的临时表,基本上不会留下任何痕迹。而脚本DB_healthcheck_lhr_v1.0.0_10g_RO.sql、DB_healthcheck_lhr_v1.0.0_11g_RO.sql和DB_healthcheck_lhr_v1.0.0_2c_RO.sql分别对应10g、11g和12c及其以上版本,这3个脚本都是只读版本,这3个脚本只会对数据库做查询操作,不会做DML和DDL操作,这也是很多朋友所期待的功能。
当前session处在活动状态,如果此时ORACLE的package在另外一个session中被重新编译,那么当前session再执行其中的procedure就会报包失效,异常STACK见下。
对象名 'user_tab_columns' 和 'user_cons_columns' 都属于 oracle 数据库里的,sqlserver 里没有,所以使用会报错。
环境: A机:RHEL5.5 + Oracle 10.2.0.4 B机:RHEL5.5 需求: A机10.2.0.4数据库,在B机升级到11.2.0.4,应用最新PSU补丁程序。 目录: 一、 确认是否可以直接升级 二、 B机安装11g软件,打好PSU补丁 三、 B机环境变量检查 四、 B机创建需要的目录 五、 A机原库升级前检查
近来重装了计算机(双系统windows10+ubuntu16),顺带着也把software升级一下,结果安装最新的oracle12c,出现了一系列问题,我不喜欢折腾,曾经L说过我,喜欢啥折腾,浪费时间,金钱可以解决的,就让自己轻松一下,这次安装oracle12c后,登录名和口令怎么也不对,有折腾了一上午。 oracle12c 安装 使用可以看看这篇文章。 Oracle 12c Windows安装、介绍及简单使用(图文) oracle12c,感觉变化了好多,首先记得打开一下oracle服务,在计算机,
作者:eygle 出处:http://www.eygle.com/blog 日期:October 27, 2005 本文链接:http://www.eygle.com/archives/2005/10/oracle_howto_kill_session.html
存储过程是保存可以接受或返回用户提供参数的SQL语句集合。在日常的使用中,经常会遇到复杂的业务逻辑和对数据库的操作,使用存储过程可以进行封装。可以在数据库中定义子程序,然后把子程序存储在数据库服务器,之后通过名称调用。 特点 1 提高性能 存储过程是预先编译过,进行优化后,存储在SQL的内存中,使用的时候不需要重新编译,提高工作效率。 2 减少网络流量 存储过程的代码直接存储在数据库中,用户通过名称进行调用,减小网络流量,加快执行速度。如:百万以上的数据查询,存储过程分页要比其他方式的分页快得多 3
运维优化 本文详细讲解了如何对Oracle数据库进行运维,从各个方面来说明了如何去运维。
在Oracle数据库中,什么是不可用索引(Unusable Indexes),哪些操作会导致索引变为不可用(unusable)即失效状态?
在Oracle 中只能用双引号"包围关键字。但由于Oracle中双引号内的字符串是区分大小写的,而不管创建表还是查询时,Oracle都会把字段名转成全部大写,所以,除非创建表时双引号内的字段名就是全大写的,否则以后查询时SQL语句都必须加双引号,若不加则Oracle内部会把字段名转成全大写从而提示“无效的标识符”。同理,查询普通字段也可以通过加双引号查询得出,但双引号内的字段名必须是全大写,例如SELECT "ANY_FIELD_NAME" FROM TableName 在SQL Server 中可以用方括号[]或双引号"包围关键字。字段名任何情况下都不区分大小写。 在MySQL 中用`(backticks)把表和列名名字围起来。字段名也不区分大小写。 在Hibernate 中必须在定义映射关系时用backticks(`)包围字段名,具体参考这里 或这里 。
公司之前部门拆分,但一些服务并没有拆分清楚。其中一个老服务,两个部门都在用,现在为了避免互相影响,决定克隆该服务。克隆就要克隆全套,当然也包括数据库,我们这个老服务,用的oracle,所以,就涉及到从旧的oracle中导出数据,然后再导入到另一套新的oracle实例中。
领取专属 10元无门槛券
手把手带您无忧上云