背景: 后台服务测试过程中,发现往Oracle数据库表中插数据出现一个错误 unique constraint,如下: ### Error updating database. Cause: Java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (TEST53.SYS_C0032604) violated ### The error may exist in class path resource [
ORACLE数据库表示的错误,通常由3个字母加上5个数字来组成,如:ORA-nnnnn,TNS-nnnnn等,其中:
在数据迁移中,sql*loader和datapump总是作为一些常用的数据迁移方案,自己在经历了一些项目之后,优点就不说了,说点这些方案的缺点,批评不自由,则赞美无意义,所以我在提出了一些失败错误的经验后,会在下一篇中给出这些缺点的解决方案。毕竟解决问题才是最重要的。 使用sql*loader的缺点 可能存在潜在的乱码问题,尤其是对于特定字符集的数据,因为sqlldr可以从客户端导出,如果客户端的语言设置不当,导出的文件会有乱码的隐患。 数据问题,这个是sql*loader使用比较头疼的地方,因为这
昨晚对测试环境进行了升级,同步了部分生产的数据。整个过程比较顺利,但是在最后一步启用foreign key constraint的时候报了错误。 ora-02298:cannot validate(xxxx.xxxx_fk) -parent keys not found 很明显是一部分数据没有同步到,有一部分数据丢失了。和开发做了确认,从生产中根据条件导出了一个dump,关联的表有100多个,每个表里都是根据筛选条件过滤后的部分数据,可能有一部分数据和现有环境的数据有重复。开发说在主键对应的数据重复的情况下
主键和Null看似没有多大的关系,因为一般的主键设置都是not null,但是把两者结合起来,会有很多意想不到的情况,说是意想不到是因为结果不在预期范围,但是如果明白了基本的原理,整个过程又在情理之中。 我们先来演示一下问题。 首先创建一个表,创建唯一性索引。 SQL> conn n1/n1 Connected. SQL> SQL> select*from cat; no rows selected SQL> create table test(x number,y number); Table creat
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说ORA-00001: unique constraint (CONTRACT_MGR.PK_T_SUPPLIER) violated「建议收藏」,希望能够帮助大家进步!!!
之前分享过一篇关于merge语句导致的CPU使用率过高优化的案例。http://blog.itpub.net/23718752/viewspace-1819471/ 后续的跟进没有补充,也“秀”一张图
这两天在开发过程中,有个需求,就是找出某个schema的所有主键索引和唯一约束索引的名称,逻辑中用到了dba_indexes,其中存在一个字段叫UNIQUENESS,官方文档解释是说该字段会标记索引是唯一的(UNIQUE)还是非唯一的(NONUNIQUE),能不能这样理解,对主键索引和唯一约束索引来说,这个字段应该是UNIQUE?
原因:在select语句中的AS部分全部是取值于已存在记录的值,在id相同并执行update时,相当于更新一条完全相同的语句,即便是各个值没有违反唯一性约束,此时也会报: ORA-00001错误,不要全都一样就可以了;
本文作为概要,包括如何定位SQL问题、SQL相关的问题类别以及诊断SQL性能问题需要的相关信息。
这周某系统上线,有一个需求就是,为一张表修改唯一性约束,原因就是之前发现,由于唯一性约束设置不当,导致业务处理出现异常。
在平时的工作中,有时候需要insert一批数据,这些数据可能是临时表,外部表,普通表,子查询等形式,类似下面的格式 insert into xxxx (select xxxxx from xxx where xxxxx); 如果其中有冗余数据的时候,整个Insert会自动rollback,一条数据也插不进去,错误类似下面的形式。 insert /*+ append */into mo1_memo select *from MO1_MEMO_EXT_92; * ERROR at line 1: ORA-000
今天在修复MySQL数据的时候,发现一个看起来“奇怪”的问题。 有一个表里存在一个唯一性索引,这个索引包含3个列,这个唯一性索引的意义就是通过这3个列能够定位到具体1行的数据,但是在实际中却发现这个唯一性索引还是有一个地方可能被大家忽略了。 我们先来看看数据的情况。 CREATE TABLE `test_base_data` ( `servertime` datetime DEFAULT NULL COMMENT '时间', `appkey` varchar(64) DEFAULT N
当一个DML语句运行的时候,如果遇到了错误,那么这条语句会进行回滚,就好像没有执行过。对于一个大的DML语句而言,如果个别数据错误而导致整个语句的回滚,那么会浪费很多的资源和运行时间。所以,从Oracle 10g开始Oracle支持记录DML语句的错误,而允许语句自动继续执行。这个功能可以使用DBMS_ERRLOG包实现。
墨墨导读:本文记录SYS.SCHEDULER$_INSTANCE_PK冲突异常分析及处理过程,希望对大家有帮助。
今天同事手一抖,误删除了一套测试环境中的所有sequence序列对象。序列不像表这种对象,drop删除可以从回收站中找回来,当然一般认为序列并不是那么重要,只要记得名称以及一些非默认参数,可以选择重建。唯一可能有问题的就是,一般序列常用于主键字段,如果之前的序列已经被用了,他的last_number可能就不是初始值了,换句话说,如果此时只是简单地重建,很有可能使用过程中,会出现seq.nextval的值之前已经用了主键,此时会报ORA-00001约束冲突的错误。
java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (USR_JXZX_DSJKF_MODEL.SYS_C001362707) violated 主键不一致,须联系数据中心修改
0 总结 oracle异常总结 Oracle内部异常统一在《Database Error Messages》中,例如ORA-00910等等,其中-00910就是SQLCODE。 Oracle内部异常有系统内部识别抛出,在Catch时只能使用Other关键字接受(… when others …)。 预定义异常将一些常用SQLCODE绑定名称,所以在Catch是可以使用名字接收(… when ZERO_DIVIDE …)。 用户自定异常有两种使用方式: 定义·xxx EXCEPTION;变量,然后直接
按照计划在周二开始了数据迁移,本来之前也做了不少的准备工作。但是还是在迁移的过程中出现了一些问题。简单做一个总结。 1.constraint导致的数据reject 在数据加载的时候,报了如下的错误。有一些数据记录被reject了,查看后发现是源库和目标库中表的not null constraint导致的,在源库中没有not null constraint,但是在目标库中有。 这个问题只能和开发做确认,稍后处理。 records from TESTDATA_HIST cannot insert NULL
JDBC的基本使用流程: 1 导入jar包: 导入ojdbc6.jar,在项目上右键 builder path–>add to builder path. 2 加载驱动 Class.forName(“oracle.jdbc.driver.OracleDriver”); 作用:初始化加载jdbc类到java虚拟机. 注意: ojdbc6.jar使用此包该句可以省略不写. 3 获取数据库连接对象 Connection conn =DriverMananger.getConnection(“url”,“username”,“password”); 参数含义: url:表示要连接的数据地址 username:数据库的用户名 password:数据库的密码 作用: 连接到指定的数据库并返回连接对象. 4 创建sql命令对象 Statement stmt=conn.createStatement(); 作用: 编译,发送SQL命令 5 创建sql命令 String sql=“insert into dept values(92,’’,’’)”; 6 执行sql命令: 新增sql命令: int i=stmt.executeUpdate(sql); 返回值: 返回值如果小于0,表示未执行成功 返回值如果大于0,表示成功修改的数据量. 7 关闭资源
如果你得到了与下面显示内容类似的信息话,那么你最好考虑修改 Confluence 的日志级别输出更多的信息。如果你考虑通过 Atlassian support 获得帮助,那么这些详细的错误信息能够更好的帮助我们找到问题的原因。
约束是表、列级的强制规定、是防止那些无效或有问题的数据输入到表中。当对该表进行DML
JAVA的数据获取方式: 1 直接声明变量并赋值. 2 Scanner类控制台输入 3 IO流(将硬盘存储中的数据读取到java中) 4 scoket+io 5 从数据库中获取 JDBC的概念: 问题: java和数据库之间的沟通不一致 解决: 数据库厂商对外提供java支持的接口 使用: 创建类实现接口(操作数据库) 数据库厂商对外提供了数据库操作的驱动包.(翻译官) 结论: JDBC其实就是数据厂商对外提供的能够对自己的数据进行操作的驱动包也就是jar文件.
今天无意中看了下ORACLE_HOME/bin下面的东西,发现里面还是存在不少的东西。除了常用的sqlplus,tnsping,rman,exp/expdp,imp/impdp,sqlldr等命令外还是不少的命令可能平时不使用,但是一旦有需要还是很不错的工具集。 自己筛选了下,总结了以下的几个命令/工具。 orabase 这个命令算是一个ORACLE_BASE的简化版本。如果查看orabase文件本身,里面还是有不少的代码量的。 > orabase /opt/app/oracle/dbccbspt1 >
异常(EXCEPTION)处理是用来处理正常执行过程中未预料到的事件,包括程序块的异常处理、预定义的错误和自定义错误。如果PL/SQL程序块一旦产生异常,而程序并没有指出如何处理,那么程序就会自动终止运行。
作者:赵黎明,爱可生 MySQL DBA 团队成员,熟悉 Oracle、MySQL 等数据库,擅长数据库性能问题诊断、事务与锁问题的分析等,负责处理客户 MySQL 及我司自研 DMP 平台日常运维中的问题,对开源数据库相关技术非常感兴趣。
有的网友对我之前写的一篇技术博文中的描述提出了疑问,http://blog.itpub.net/23718752/viewspace-1436965/ 其中的主要意思是:oracle中采用了undo+redo机制来作为数据恢复的基石,数据的恢复是通过前后台结合来实现的,在缓存级别,通过dbwr,能够把修改后的数据块刷入数据文件,这是一个异步的过程,不会因为发生数据变更就马上写入数据文件,同时存在log buffer,能够通过log buffer生成redo日志,最后通过lgwr把这部分变更刷到redo 日志
NULL值是关系数据库系统布尔型(true,false,unknown)中比较特殊类型的一种值,通常称为UNKNOWN或空值,即是未知的,不确定的。由于 NULL存在着无数的可能,因此NULL值也不等于NULL值,所以与NULL值相关的操作同样都为NULL值。正是基于这样一个特性,对于NULL值列上的B 树索引导致了is null/is not null不走索引的情形,下面描述了NULL值与索引以及索引NULL列上的执行计划,如何使得NULL值走索引的情形。 注:本文仅仅讨论的是B树索引上的NULL值,位图索引不在此范围之内。 一、null值与索引的关系
本文作者系大连健哥,POSTGRESQL、ORACLE 数据库资深从业人员、IT 技术的深度爱好者。相信科学改变人类、技术创造未来。个人主页:https://www.cnblogs.com/gaojian/,经其本人授权发布。
前天写了篇文章《表中已存重复数据的情况,如何增加唯一性约束?》,提到了存在唯一约束前提下,重复数据的问题。
今天同事提出了一个问题: 使用数据泵expdp导出1个schema,有个表主键是触发器自增的id,导入测试库测试时,发现表里的数据比自增序列的值要大。导致插入数据报错。 最终结论是: 由于数据库先进行序列导出,然后再进行表数据导出。然后在导出的过程中,该表一直有插入操作,最终导致了这种差异。 解决方法: 重建触发器中的序列,让序列的开始值为表主键最大值+1。
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错误(报告为
环境: RHEL6.4 + Oracle 11.2.0.4 Primary RAC + Standby RAC
本文实验环境:Oracle 11.2.0.4,利用数据库自带的scott示例用户进行试验测试。 根据《简单常用的数据泵导出导入(expdp/impdp)命令举例(上)》的expdp导出的二进制文件进行impdp导入。
本文作者系大连健哥, POSTGRESQL、ORACLE 数据库资深从业人员、IT 技术的深度爱好者。相信科学改变人类、技术创造未来。个人主页:https://www.cnblogs.com/gaojian/,经其本人授权发布。
LOBs,或Large Objects字段,是Oracle中用于处理存储非字符数据推荐的一种字段类型,例如mp3,video,图片,和long字符串数据。二进制大对象,或BLOBs,字符大对象,或CLOBs,能够存储TB的数据。
--*******************************************
Oracle9i开始Rman提供plus archivelog选项,极大的简化了Rman备份的操作。
Recovery Manager: Release 11.2.0.3.0 - Production on Tue Jan 9 07:33:58 2018
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.总结
自 2019年6月23日之后,关于 SCN 的问题不断爆发,尤其是 2252 错误引发了很多紧急的故障。 我在上一篇文章中已经详细描述了这个场景: https://www.enmotech.com/web/detail/1/843/1.html
最近为了不影响开发库的使用,打算复制创建一个备库,定时更新,防止开发库不能使用的情况下,可以临时使用备库,不影响进度。
听说过Oracle 控制文件,还有快照控制文件这个说法呢?没错,尽管快照控制文件很少被提及,但确实是存在,只不过在使用RMAN时这个快照控制文件被使用。回顾一下 Oracle 控制文件,我们知道控制文件是Oracle体系结构中的重要组成部分之一,记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息,也记录了系统当前SCN的值等等。那快照控制文件也就是控制文件的一个副本,本文介绍了什么是快照控制文件以及何时被使用。
--================================= -- 使用RMAN实现异机备份恢复(WIN平台) --================================= 在有些情况下,如数据库服务器处于磁盘空间的压力或成本控制需要将数据文件备份到异机,使用RMAN可以完成该工作。基于Windows平台 所需完成的配置相对简单,仅仅是添加账户与使用新增的帐户来启动数据库服务以及设置共享路径。 下面给出具体描述。 一、配置数据库服务器与备份目的主机 1. 帐户配置(假定有主机A,B 且A为数据库服务器,B为备份目的主机,且能互相ping通) 如果主机A与主机B使用的Administrator密码相同,且A上的OracleServiceDBNAME服务和OracleOraHome92TNSListener服务都以"本 地系统账户登陆" 如果主机A与主机B使用不同的Administrator密码,处于安全考虑不宜设为相同,则则可以分别在主机A与主机B上新建一用户,假 定在主机A上建立DBA_oracle,密码为ORA_PWD,则在主机B上也建立该用户(用户名可以不同,密码必须相同),密码同样设置为ORA_PWD 。将刚建好的用户在各自主机将其加入到Aministrators组 2. 设定OracleServiceDBNAME服务和OracleOraHome92TNSListener服务的启动帐户。在运行处输入services.msc。在主机A上设定使用此帐 户登陆,即使用刚刚建立的DBA_oracle,输入密码启动,该设置需要重启后有效 3. 在主机B上设定共享文件夹,如RMAN_Shared,设置其权限为完全控制(在A上使用\\IP\RMAN_Shared测试是否可写入文件) 二、查看RMAN的配置与数据库情况
众所周知我们的Data Guard数据同步是基于日志流的。所以在主库执行nologging操作是不被允许的。这也就是为什么我们需要在配置Data Guard阶段需要使用Force Logging。但是这也会带来很多问题(SQL执行效率),例如:当我们使用数据泵进行迁移时我们希望最少停机时间完成,这时候我们就可能会考虑到以最小日志导入的方式以加快导入速度,然后重新同步备库。
在Oracle中,如何修复由于主库NOLOGGING引起的备库ORA-01578和ORA-26040错误?
Thu Mar 29 11:21:45 2018 FAL[client]: Failed to request gap sequence GAP - thread 1 sequence 184-185 DBID 1484954774 branch 960494131 FAL[client]: All defined FAL servers have been attempted. ------------------------------------------------------------ Check that the CONTROL_FILE_RECORD_KEEP_TIME initialization parameter is defined to a value that's sufficiently large enough to maintain adequate log switch information to resolve archivelog gaps.
源端和目标端的数据库版本需要保持一致,补丁版本可以不一致,目标端磁盘空间不能小于源端空间,目标端只需要安装 Oracle 软件即可!
领取专属 10元无门槛券
手把手带您无忧上云