-
两条insert语句引起的死锁问题,求解。5
使用java编写的批量插入程序,在进行并发测试时出现了数据死锁的问题,查看udump日志信息如下:
*** SESSION ID:(132.130) 2012-06-25 13:39:09.656
DEADLOCK DETECTED ( ORA-00060 )
[Transaction Deadlock]
The following deadlock is not an ORACLE error. It is a
deadlock due to user error in the design of an application
or from issuing incorrect ad-hoc SQL. The following
information may aid in determining the deadlock:
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TX-00020010-000040de 32 132 X 42 135 S
TX-00060002-00003f89 42 135 X 32 132 S
session 132: DID 0001-0020-00000018 session 135: DID 0001-002A-00000009
session 135: DID 0001-002A-00000009 session 132: DID 0001-0020-00000018
Rows waited on:
Session 135: obj - rowid = 0000F78A - AAAPeKAAAAAAAAAAAA
(dictionary objn - 63370, file - 0, block - 0, slot - 0)
Session 132: obj - rowid = 0000F78A - AAAPeKAAGAAAl3OAAA
(dictionary objn - 63370, file - 6, block - 155086, slot - 0)
Information on the OTHER waiting sessions:
Session 135:
pid=42 serial=591 audsid=230181 user: 72/SHZY2
O/S info: user: , term: , ospid: 1234, machine: csbyyserver
program:
Current SQL Statement:
insert into t_idx_zxcx (zj,ztlx,glxxbh,hm) values ('6404618','01','238','350212198502090000')
End of information on OTHER waiting sessions.
Current SQL statement for this session:
insert into t_idx_zxcx (zj,ztlx,glxxbh,hm) values ('6403618','01','238','350212198502090000')
===================================================
两个不同的会话在插入的时候,rowid居然一致。一直想不通问题的原因,只能求大牛帮忙了。附上数据库表的设计:
附件1为数据库表设计,附件2为该表的索引,附件3为表的主键设计
2012年6月27日 09:55
3个答案 按时间排序 按投票排序
-
采纳的答案
我也不搬别人的东西,楼主你直接看这个连接吧
http://blog.csdn.net/icejasmin/article/details/61076232012年6月27日 11:48
-
没看到你的附件,
不过可以推测,是因为,第一次插入时失败,所以第二次用的同一个rowid进行插入.
可能是你的id用的是序列,而此序列已经被手动加入过了.2012年6月27日 10:39
相关推荐
在SQL Server数据库管理系统中,死锁是一个常见的性能问题,它发生在两个或多个事务相互等待对方释放资源,导致它们都无法继续执行。死锁不仅影响数据库的正常运行,还可能导致数据一致性问题。本文将详细介绍如何在...
Oracle 死锁问题的排查语句 Oracle 死锁是指在数据库中出现的循环等待资源的情形,从而导致数据库性能下降或系统崩溃。出现死锁的原因有多种,如资源竞争、锁定机制不当等。下面是排查 Oracle 死锁问题的语句: 1....
oracle查询死锁语句,并能根据根据ID值杀死锁表的进程!
一、数据库死锁的现象 ... 二、死锁的原理 当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提 ...通过检查数据库表,能够检查出是哪一条语句被死锁,产生死锁的机器是哪一台。
当我们谈论"40insert语句的锁为什么这么多"这个问题时,实际上是在探讨MySQL数据库中的事务处理和锁的使用,特别是在插入操作(insert)中涉及到的锁类型和策略。 首先,我们来看创建的表`t`,它有一个主键`id`和一...
Petri网死锁的求解算法.doc
Oracle数据库解决死锁是指在Oracle数据库中出现的死锁问题,通过使用PL/SQL语句手动解决死锁问题。死锁是当多个事务在等待其他事务释放资源时,导致系统无法继续执行的现象。 在Oracle数据库中,死锁可能是由多种...
死锁是指两个或多个进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉它们都将无法推进下去。这个实验的目标是让学生深入理解死锁的产生,以及学习如何解决死锁问题。 实验报告中提到了使用...
oracle数据库死锁查询并处理,被锁对象、引起死锁原因等查询及解决方法
Oracle数据库死锁是数据库系统中常见的问题,它发生在两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象。当这种情况发生时,如果没有外力干预,这些事务都将无法继续执行,形成一种僵局。了解如何...
"车辆行驶死锁问题" 车辆行驶死锁问题是指在一组进程中的各个进程占有不会释放的资源,但因互相申请被其他进程所占用不会释放的资源而处于一种永久等待的状态。本实验主要使用资源有序分配策略来预防死锁。 死锁的...
### 操作系统中的死锁问题解析 #### 一、引言 在计算机科学领域,特别是操作系统设计中,死锁是一个非常关键且复杂的问题。当两个或多个进程在等待彼此所持有的资源时,就会形成死锁状态,导致这些进程无法继续执行...
如果没有发生死锁,则可能是由超时引起的问题。 #### 四、解决方案 ##### 1. 基本步骤 - **管理员登录**: ```sql db2 connect to 数据库名 user 用户名 using 密码 ``` - **获取锁快照**: ```sql db2 "get ...
死锁发生时,两个或更多的事务互相等待对方释放资源,从而导致所有事务都无法继续执行,形成僵局。针对这一问题,数据库管理系统通常采用三种策略来解决:预防死锁、检测死锁以及避免死锁。 ### 预防死锁 预防死锁...
一个线上项目报的死锁,简要说明一下产生原因、处理方案和相关的一些点. 1、背景 这是一个类似数据分析的项目,数据完全通过LOAD DATA语句导入一个InnoDB表中。为方便描述,表结构简化为如下: Create table tb(id ...
操作系统死锁问题 C语言实现 有详细代码 都能实现
死锁是数据库管理系统中的一种常见问题,发生在两个或多个事务相互等待对方释放资源,导致它们都无法继续执行的情况。在这种情况下,如果没有外部干预,这些事务将永久阻塞,严重影响系统的性能和稳定性。在本文中,...
oracle死锁问题查询代码,仅供参考,有问题大家一起交流
MySQL中的REPLACE语句在处理数据时,实际上是一种删除加插入的组合操作,但与简单的DELETE后跟INSERT不同,它涉及到更复杂的锁机制,可能导致死锁。深入理解这些机制对于解决高级MySQL问题至关重要。 首先,我们...