本来正常的,经过抓包才知道原来是数字型的无意中多了乱码!本来是3276的居然多了后面一串 3276P数据库
之前总结过一篇 通过错误的sql来测试推理sql的解析过程 也算是以毒攻毒,当然也分析出来一些有意思的内容来,让原本看起来枯燥的内容有了更多的实践意义。 在后来小组内部做了一个分享总结,本来以为已经总结差不多了,但是发现真是集思广益,大家临时想出不少好的点子来,这也就是brainstroming的好处吧. 比如下面的错误sql,在解析的时候,会首先报错在group by的部分。在10g和11g略微有一些差别。目前以11g的为基线。 目前存在一个表test,字段情况为(id number,name va
一、问题提示 执行Oracle的sql语句提示【ORA-01722: invalid number】无效数字错误。
今天读了一篇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的谓词,原始版本的例子,如下所示,从数据上能看到,c1='3'的时候,c2的值是个字符串类型的数字,
不要使用字面量(常量)做查询条件的值,而要使用绑定变量给查询条件赋值,使用绑定变量是需要编译一次查询计划,编译结果保存在共享池(库缓存)中。
注意:EXPER1,EXPER2数据类型(NVL要求第二个参数类型可以转换为第一个参数类型)
今天看到Franck Pachot 发了一个Twitter,意思是Oracle里的SQL还能这么写。猛一看确实让人有些意外。 禁不住诱惑,自己也尝试了一番。我现在12cR2的环境中测试了一下。 Or
Oralce中的to_date()函数用于将字符串转换为日期对象,具体使用格式为:
作者简介 李真旭 Oracle ACE 专家,拥有超过10年的 Oracle 运维管理使用经验,参与过众多移动、电信、联通、银行等大型数据库交付项目,具有丰富的运维管理经验,对 Oracle 数据库管
Oracle Database 12c Release 2(12.2)包括对数据类型转换函数的许多增强,从而更容易处理转换错误。
在学习Oracle的时候,必然会接触到sql解析的过程。这个过程大体是这样的步骤。 1.对sql的文法检查,查看是否有文法错误,比如from,select拼写错误等。 2.在数据字典里校验sql涉及的对象是否存在。 3.将对象进行名称转换,比如同义词转义成对应的对象。比如select * from t t是一个同义词指向hr.test 4.检查语句的用户是否具有访问对象的权限 5.生成执行计划 6.将游标产生执行计划,sql文本装载入library cache所在的heap中。 这个过程看起来比较容易理解,
原因:端口号冲突 解决: (1)方法一 使用命令netstat -ano找到占据端口8005的进程号,再用命令taskkill /pid xxxx杀死对应进程xxxx。 (2)方法二 打开任务管理器,看看开发工具eclipse下是否启动了两个相同进程,直接结束进程,重启eclipse和项目。 (3)方法三 修改Tomcat配置文件server.xml中的端口号。 修改8080端口为其它端口号。
0 总结 oracle异常总结 Oracle内部异常统一在《Database Error Messages》中,例如ORA-00910等等,其中-00910就是SQLCODE。 Oracle内部异常有系统内部识别抛出,在Catch时只能使用Other关键字接受(… when others …)。 预定义异常将一些常用SQLCODE绑定名称,所以在Catch是可以使用名字接收(… when ZERO_DIVIDE …)。 用户自定异常有两种使用方式: 定义·xxx EXCEPTION;变量,然后直接
在SQL语句中使用IF-THEN-ELSE逻辑,可以使用两种方法:CASE表达式、DECODE函数。
异常(EXCEPTION)处理是用来处理正常执行过程中未预料到的事件,包括程序块的异常处理、预定义的错误和自定义错误。如果PL/SQL程序块一旦产生异常,而程序并没有指出如何处理,那么程序就会自动终止运行。
如果抛出一个问题,你是如何理解MySQL解析器的,它和Oracle解析器有什么差别?相信大多数同学都会比较迷茫,因为这个问题很难验证,要不是看源码,要不就是查看书上是怎么说的,其实这两种方法对我们去理解这个问题来说不是很合适,如果能够通过实践来做下理解就好了。
碰巧看到一篇文章提到了Oracle的greatest函数,相对应的有个least,以为这俩是个新的函数,但是看了下官方文档,其实在11g的《SQL Language Reference》,就提到了他们,是我孤陋寡闻了。
同事问了个 MySQL 的问题,现象上确实诡异。大致意思是 SELECT 表的数据,WHERE 条件是 "a=0",其中 a 字段是 VARCHAR 类型,该字段存在 NULL 以及包含字符的记录,但是并无 "0" 的记录,然后执行 SQL 返回的记录恰恰就是所有包含字符的记录。
【实例一】 xmltype是oracle中的type object类型。在实际使用中,可以当做xml对象来使用:
说起数据类型转换,在开发中如此,在数据库中也是如此,之前简单对比过MySQL和Oracle的数据类型转换情况,可以参见MySQL和Oracle中的隐式转换 http://blog.itpub.net/23718752/viewspace-1787973/ 不过当时写完之后,有个读者随口问了一句为什么,为什么呢?似乎自己还是一知半解,说是规则,无规矩不成方圆,倒也无可非议,不过我觉得还是要再看看,看看还能有哪些收获,接下来的内容我就不能保证正确性了,希望大家明辨,也希望提出意见,毕竟就是希望把问题搞明白而已。
动态SQL在使用时,有很多需要注意的地方,如动态SQL语句结尾处不能使用分号(;),而动态PL/SQL结尾处需要使用分号(;),但不能使用正
为了方便,先定义二个常量: package jmyang.utils; public class ConstDefine { /** * WebLogic服务器地址 */ public static final String WebLogicServerUrl = "t3://localhost:7001"; /** * WebLogic JNDI上下文字符串 */ public static final String WebLo
有多种方式可以将文本文件的数据导入到数据库中,例如,利用PLSQL Developer软件进行复制粘贴,利用外部表,利用SQL*Loader等方式。至于EXCEL中的数据可以另存为csv文件(csv文件其实是逗号分隔的文本文件),然后导入到数据库中。
英文解析:resource busy and acquire with NOWAIT specified
RAC环境下,初始化参数文件与但实例下参数文件有些异同,主要表现在初始化参数可以为多个实例公用,也可以单独设置各个实例的初始化参数。对于那些非共用的初始化参数则必须要单独设置,而共用的则可以单独设置,但一般不建议这么用。本文描述RAC 环境下参数文件(spfile)的相关管理工作。
服务器重启之后节点一集群服务如下 [grid@p19c01:/home/grid]$ crsctl stat res -t CRS-4535: Cannot communicate with Cluster Ready Services CRS-4000: Command Status failed, or completed with errors. 节点二集群状态 [grid@p19c02:/home/grid]$ crsctl stat res -t -----------------------
crs_register命令主要是将资源注册到CRS。该方法通常结合crs_stat -p 或者crs_profile先创建配置文件。同时crs_register也具有更新CRS的功能。本文将描述crs_register以及crs_unregister的用法。
最近碰到了一个关于ASM无法启动的案例,当然这个案例比较长,准备分两篇来写。 问题的背景如下: 目前存在一套standalone的环境,采用了ASM作为存储管理,业务属于实时统计,在某一天下班的时候开发的同事突然联系我说,数据库感觉有些问题,因为部分应用开始报错了,然后他们问我在这段时间做过什么操作没有,从我的印象来看下午4点只对部分分区做了例行维护,其它什么都没调整。问题是在6点开始发现,所以应该没有什么关联。 当然口说无凭,开发的同学也反馈了报错的信息。 反馈错误信息1:Yourdatabase con
Oracle数据恢复顾问用于当数据发生错误或故障时,进行自动收集数据故障信息,并生成恢复脚本,用于完成数据恢复。数据恢复顾问也可以主动检查故障。 在这种模式下,它可以在数据库进程发现数据损坏并发出错误之前进行潜在的检测并分析数据故障。数据故障可能非常严重。 例如,如果您当前的日志文件丢失,则无法启动你的数据库。 一些数据故障(如数据文件中的块损坏)不是灾难性的他们不会将数据库关闭或阻止您启动Oracle实例。 数据恢复顾问处理这两种情况:当您无法启动数据库时(因为某些情况)所需的数据库文件丢失,不一致或损坏)以及文件损坏时的数据库文件在运行时发现。
应用程序工作负载在Oracle 10g中可以被定为services,也称之为服务,能够在单实例中使用,也能够在RAC中单独使用和管理。因此整个数据库负载能够被分割为多个不同的services,通过管理service能够简化用户或session的管理。其次services特性的重要体现在RAC之中用于实现负载均衡与故障转移。本文描述什么是services,以及使用services的好处,以及如何使用services.
不论是单实例还是RAC,对于非缺省端口下(1521)的监听器,pmon进程不会将service/instance注册到监听器,即不会实现动态注册。与单实例相同,RAC非缺省端口的监听器也是通过设置参数local_listener来达到目的。除此之外,还可以对实例进行远程注册,以达到负载均衡的目的。这是通过一个参数remote_listener来实现。
在ORACLE中移动数据库文件 --ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成。 --由于磁盘空间的变化,或者基于数据库磁盘I/O性能的调整等, --我們可能会考虑移动数据库文件。 --下面以LUNIX平台为例,分别讨论三种数据库文件的移动方法。 一.移动数据文件: -- 可以用ALTER DATABASE,ALTER TABLESPACE两种方法移动数据文件。 1. ALTER DATABASE方法; -- 用此方法,可以移动任何表空间的数据文件。 STEP 1. 下数据
1.背景概述 2.本次测试环境基本信息 3.测试步骤 3.1. 使用BCO进行压缩备份 3.2. 不使用压缩备份 3.3. 使用ACO中LOW级别进行压缩备份 3.4. 使用ACO中MEDIUM级别进行压缩备份 3.5. 使用ACO中HIGH级别进行压缩备份 4.各类备份方式对比分析 4.1. 生成备份文件大小差异 4.2. 备份时长差异 4.3. 备份CPU资源差异 4.4. 备份Memory资源差异 4.5. 备份IO资源差异 5.总结
Oracle RAC 集群中,对于各种资源的管理,也存在所有者与权限的问题。crs_getperm与crs_setperm则是这样的一对命令,主要用于查看与修改集群中resource的owner,group以及权限等,下面通过具体的演示来获得其使用方法。
墨墨导读:通过历史控制文件恢复数据库,只需这10步。 1. 记录控制文件、数据文件头的scn SYS@enmo>select checkpoint_change# from v$database; CHECKPOINT_CHANGE# ------------------ 18502624 SYS@enmo>select name,checkpoint_change# from v$datafile; NAME
profile通常指配置文件,crs_profile望文生义可知,就是管理集群的配置文件。在Oraclele RAC中,所有的CRS资源存放在OCR磁盘中,对于OCR更形象的比喻是类似于Windows的注册表。我们知道Windows注册表由类似树状的节点构成,其形式是KEY-VALUE,集群中的资源也是如此。Windows注册表可以整个导出,分支导出,也可以导入注册表信息。针对集群资源的管理crs_profile结合crs_register与crs_unregisterd等同于一个类似于Windows的regedit 管理工具。这么说就不陌生了吧,接着往下看。
环境:RHEL 6.4 + GI 11.2.0.4 + Oracle 11.2.0.4 对有关HAIP相关问题的总结,包括禁用/启用HAIP,修改ASM资源的依赖关系,修改cluster_interconnects参数等。
AIX(errpt)、Oracle DB(alert.log )、CRS (crsd.log 、ocssd.log、vip.log、
环境: OEL 5.7 + Oracle 11.2.0.4 1.直接restore到想要恢复的时间点报错:
说明,ora.cluster_interconnect.haip的ENABLED属性的原始值为1:
有客户咨询,认为19c RAC集群资源状态和11g RAC大不一样,比如在他们的19c集群,也是只部署2节点,却显示3个资源状态,其中第三个还是offline状态,担心是否有影响。
本文安装环境:RHEL 6.5 + Oracle 12.2.0.1 GI & RAC
在linux中有些命令可能功能强大,方便快捷,但是这些命令在测试环境中有些可以用,但别在生产上挑战。有些命令一敲,可能你的职业生涯由此转折。 关于rm -rf 对于这个命令真没什么好说的,最好的挽救措施就是备份,可能在有些环境中这类命令都是禁用的,但是不管怎么样,注意备份。 rm -rf / rm -rf * 关于 rm .* 这个命令比较容易犯错误,但是大家都比较容易忽视。简单举个例子。 列出当前目录下的文件,考虑删除 [ora11g@rac1 test]$
本文发表于itpub技术丛书《Oracle数据库DBA专题技术精粹》,未经许可,严禁转载本文.
有朋友在执行drop操作时,报了如下的错误,经过查询mos文档和远程协助最后终于处理了,记录下。
领取专属 10元无门槛券
手把手带您无忧上云