今天早上查看数据表的时候发现,数据表中多了一条数据(这条数据不应该存在),像往常一样用delete where语句删除这条语句,中间卡了一下,然后一直显示正在执行中
先前也遇到过类似的情况,但是那时是因为,我删除数据没有提交事务,这次不一样,删除不了,一直卡在这里,点击取消后,有没有事务的提交与回滚。开始怀疑是因为其它的人正在操作了这张数据表,造成了琐表,就等了一段时间,后来发现还是这样的情况,没办法只好百度找解决办法,问题来了到底是琐表造成的原因,还是另有其它的原因呢?出现这种情况,大致可以分为几种:
1.因为数据量过大,造成数据删除缓慢
2.sql语句使用了for update,没有提交事务
3.其它的人正在操作这张数据表,造成琐表
排除1,2,解决办法找到琐表原因,结束进程。
一下来自百度-----------------------------
解决办法
-- 查出被锁的表,和锁住这个表的会话ID
select a.session_id ,b.* from v$locked_object a,all_objects b where a.object_id=b.object_id
-- 查出对应的SQL语句
select vs.SQL_TEXT,vsess.sid,vsess.SERIAL#,vsess.MACHINE,vsess.OSUSER ,vsess.TERMINAL,vsess.PROGRAM,vs.CPU_TIME,vs.DISK_READS from v$sql vs,v$session vsess where vs.ADDRESS=vsess.SQL_ADDRESS and vsess.sid=(上面查出来的会话ID)
--查看是哪个session引起的
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
--杀进程
ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#'; ---上面这条语句可以查到sid以及serial
ok,现在问题搞定了
相关推荐
本文将深入探讨ORACLE表死锁的成因、检测与解决方法,基于实际测试经验分享有效的解决方案。 ### ORACLE表死锁的成因 死锁通常发生在多个事务同时对同一资源进行互斥访问的情况下。具体而言,当一个事务请求锁定一...
在Oracle数据库管理与维护的过程中,查询并解决死锁问题是至关重要的一环。死锁是指两个或多个事务在执行过程中因争夺资源而造成的一种僵局状态,若不及时处理,将直接影响到系统的性能和稳定性。本文将围绕“Oracle...
本文将深入探讨Oracle表死锁的原因、检测以及解决方法。 首先,我们需要了解死锁的基本概念。死锁是当两个或更多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉它们都无法继续执行。在...
##### 方法二:终止造成死锁的会话 一旦确定了造成死锁的会话,可以通过终止这些会话来解除死锁: ```sql ALTER SYSTEM KILL SESSION 'SID, SERIAL#'; ``` 例如,如果发现SID为159、序列号为5的会话造成了死锁,...
在Oracle数据库系统中,死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象。当这种情况发生时,如果没有外部干预,这些事务将无法继续执行,因为它们都在等待对方释放资源。本篇将详细介绍...
Oracle数据库死锁是数据库系统中常见的问题,它发生在两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象。当这种情况发生时,如果没有外力干预,这些事务都将无法继续执行,形成一种僵局。了解如何...
本文介绍了Oracle数据库中死锁的检测与解决方法。通过提供的SQL查询语句,我们能够快速定位死锁情况,并采取相应的措施来解决问题。此外,还提供了一些预防措施,帮助开发者在设计和开发阶段就考虑到并发控制的问题...
例如,在上述的死锁案例中,当两个session分别对不同的表进行删除操作并形成死锁时,Oracle会选择其中一个事务进行回滚,释放资源,使其他事务可以继续执行。 为了避免死锁,数据库管理员和开发人员应该遵循一些...
在Oracle数据库中,死锁是由于两个或多个...通过这些方法,你可以有效地诊断和解决Oracle数据库中的死锁问题,确保系统的稳定运行。记住,预防总是优于治疗,因此在设计和开发数据库应用时,应尽量考虑死锁的预防措施。
在Oracle数据库的使用过程中,死锁是常见的问题之一,死锁是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种僵局,导致系统无法正常运行。Oracle数据库系统为处理死锁问题提供了多种机制和方法。...
在Oracle数据库管理中,...总之,理解并掌握在Oracle中管理和解除表锁的方法对于数据库管理员来说至关重要,它能帮助避免系统性能下降和数据一致性问题。在进行这类操作时,务必谨慎,确保不会对业务造成不必要的影响。
### SQL死锁解析与删除失败解决方案 ...通过上述介绍的方法和技术,可以有效地检测和解决死锁问题,从而保证系统的稳定性和高效性。此外,还可以通过调整数据库配置、优化SQL语句等方式进一步预防死锁的发生。
- `v$sql`视图则可以显示与死锁相关的SQL语句,通过`sql_hash_value`匹配`v$session`中的会话ID,可以找到造成死锁的具体SQL。 2. **解决死锁的方法** - 首先,通过查询`V$LOCKED_OBJECT`和`V$SESSION`,找到死锁...
### Oracle锁表处理 在Oracle数据库管理中,锁机制是一种重要的资源管理手段,用于控制并发事务对数据资源的访问,防止多个用户同时修改相同的数据,从而确保数据的一致性和完整性。然而,在高并发环境下,锁的争用...
本文将深入探讨Oracle外键不加索引引起死锁的情况,并提供解决方案。 首先,我们需要理解外键和主键的关系。在关系型数据库中,主键是表中的一个或一组列,其值唯一标识表中的每一行。外键则是另一表中指向主键的...
Oracle数据库在运行过程中可能会遇到死锁问题,这是由于多个事务互相等待对方释放资源而造成的一种僵局。死锁不仅影响数据库的正常运行,也可能导致数据一致性的问题。本文将详细介绍如何在Oracle中查询死锁,以及...
**解决死锁的方法** 1. **调整程序逻辑**:对于资源获取,设定一定的顺序规则,确保所有事务都按照相同顺序获取资源,减少死锁的可能性。例如,处理A和B两个表时,始终保持先A后B的顺序。 2. **限制用户操作**:在...
理解死锁监控工具的工作原理和使用方法是解决问题的第一步。当发现死锁时,需要深入分析事务的执行顺序、锁定资源的顺序以及事务的隔离级别等因素,找出引发死锁的原因。可能的解决方案包括优化SQL语句、调整事务的...
在SQL数据库管理中,死锁和阻塞是常见的问题,特别是在多用户环境下,...通过有效的监控、诊断和解决方法,可以显著提高数据库的稳定性和性能。对于企业来说,确保数据库健康运行是保障业务连续性和数据安全的关键。