当某个数据库用户在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait specified这样的错误。
主要是因为有事务正在执行(或者事务已经被锁),所有导致执行不成功。
1、用dba权限的用户查看数据库都有哪些锁
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
如:testuser 339 13545 2009-3-5 17:40:05
知道被锁的用户testuser,sid为339,serial#为13545
2、根据sid查看具体的sql语句,如果sql不重要,可以kill
select sql_text from v$session a,v$sqltext_with_newlines b
where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value)=b.hash_value
and a.sid=&sid order by piece;
查出来的sql,如: begin :id := sys.dbms_transaction.local_transaction_id; end;
3、kill该事务
alter system kill session ’339,13545′;
4、这样就可以执行其他的事务sql语句了
当某个数据库用户在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait specified这样的错误。
主要是因为有事务正在执行(或者事务已经被锁),所有导致执行不成功。
1、用dba权限的用户查看数据库都有哪些锁
select t2.username,t2.sid,t2.serial#,t2.logon_timefrom v$locked_object
t1,v$session t2where t1.session_id=t2.sid order by t2.logon_time;
如:testuser 339 13545 2009-3-5 17:40:05知道被锁的用户testuser,sid为339,serial#为13545
2、根据sid查看具体的sql语句,如果sql不重要,可以kill
select sql_text from v$session a,v$sqltext_with_newlines b where
DECODE(a.sql_hash_value, 0, prev_hash_value,
sql_hash_value)=b.hash_value and a.sid=&sid order by piece;
查出来的sql,如: begin :id := sys.dbms_transaction.local_transaction_id; end;
3、kill该事务alter system kill session ’339,13545′;
4、这样就可以执行其他的事务sql语句了
转自:http://www.anbob.com/?p=16
相关推荐
### Oracle锁表处理 在Oracle数据库管理中,锁机制是一种重要的资源管理手段,用于控制并发事务对数据资源的访问,防止多个用户同时修改相同的数据,从而确保数据的一致性和完整性。然而,在高并发环境下,锁的争用...
数据库死锁的概念, 所谓死锁,是指两个会话,每个会话都持有另外一个会话想要的资源,因争夺资源而造成...对于锁死的会话,我们可以直接删掉该会话,等事物回滚完成,也可以找出锁死进程的spid,从服务器中删掉该进程。
### Oracle锁表查询详解 #### 一、Oracle锁机制简介 在Oracle数据库中,锁是一种重要的并发控制机制,用于管理多个用户对同一数据资源的访问。通过锁机制,Oracle能够确保数据的一致性和完整性,避免多用户操作时...
oracle锁机制可以分为六种模式:none、null、Row-S、Row-X、Share、exclusive。其中,Row-S模式为共享表锁,sub share,Row-X模式为行独占锁,sub exclusive,Share模式为共享锁,阻止其他DML操作,S/Row-X模式为...
### Oracle数据库锁表处理 在Oracle数据库管理过程中,锁表是一种常见的现象,它通常发生在多用户并发访问同一数据对象时。锁表会导致其他用户无法访问该数据对象,从而影响系统的正常运行。本文将详细介绍如何处理...
### 查看Oracle锁表 在Oracle数据库管理过程中,锁定机制是一项重要的功能,它用于确保数据的一致性和事务处理的安全性。当多个用户试图同时访问同一数据时,可能会出现并发问题,这时就需要通过锁定来控制对数据的...
### Oracle锁表与解锁详解 在Oracle数据库管理中,锁是一种关键机制,用于控制多个用户对数据资源的并发访问,防止数据冲突和不一致。本文将深入探讨Oracle中检查锁表的方法以及如何对表进行解锁。 #### Oracle锁...
### Oracle锁表问题的简捷处理技巧 在Oracle数据库开发过程中,锁机制是确保数据一致性和并发控制的关键组件之一。当多个用户或进程试图同时访问同一个资源时,Oracle数据库通过实施不同的锁定策略来协调这些访问...
本篇将详细讲解如何在Java中调用Oracle的锁表命令。 首先,Oracle数据库提供了多种锁类型,如共享锁(读锁)和独占锁(写锁),用于控制不同级别的并发访问。在Java中,我们通常通过JDBC(Java Database ...
本文将详细介绍Oracle处理锁表的基本操作,包括查询锁表、杀死会话等关键步骤。 **查询锁表** 在Oracle中,你可以通过执行以下SQL查询来查看当前被锁定的表: ```sql SELECT object_name, machine, s.sid, s....
Oracle数据库系统中,锁和表分区是两个关键的管理数据并发和优化性能的机制。首先,我们来深入了解锁的概念。 1. **锁定机制**:锁定是数据库管理系统中用于控制并发访问的一种方法,确保多用户环境下的数据完整性...
二、Oracle锁机制 1. **锁类型**: - **行级锁(ROW LOCK)**:锁定特定行,防止并发操作导致的数据不一致。 - **表级锁(TABLE LOCK)**:锁定整个表,适用于全表扫描或批量操作。 - **行级意向锁(INTENTION ...
解锁是指解除Oracle数据库中某些表或行上的锁。解锁可以手动进行,也可以通过自动机制实现。以下是一些常用的解锁方法: 1. **使用ALTER SYSTEM KILL SESSION命令**:这是最直接的方法之一,可以直接终止某个会话,...
### Oracle 锁机制问题详解 #### 一、引言 在多用户数据库环境中,当多个用户尝试同时访问或修改同一份数据时,就需要通过锁机制来确保数据的一致性和完整性。Oracle 数据库提供了多种类型的锁来支持事务隔离级别,...
在Oracle数据库中,存储过程是一种预先编译并存储在数据库中的SQL代码块,用于执行复杂的业务逻辑或数据处理任务。然而,在多用户并发访问的环境下,存储过程可能会因为某些操作而被锁定,导致其他进程无法访问或...
Oracle数据库的锁机制是保证数据并发访问安全的重要手段,它主要分为行级锁(TX锁)和表级锁(TM锁)。行级锁确保在多用户环境下,同一时间只有一个用户可以更新特定的数据行,而其他用户可以读取,但不能进行修改。...
本文将深入探讨Oracle锁的类型、工作原理以及相关的管理工具。 一、Oracle锁的类型 1. 表级锁:Oracle中的表级锁主要有两种,即排他锁(Exclusive Locks, X locks)和共享锁(Shared Locks, S locks)。排他锁允许...
Oracle数据库中的锁机制是确保数据...行级锁的事务级特性以及对锁转换的处理,使得Oracle在处理大量并发事务时具有更高的效率和稳定性。了解和掌握这些理论,对于优化Oracle数据库的性能和解决并发访问问题至关重要。
按锁的粒度,Oracle有行级锁和表级锁。行级锁更细粒度,减少锁冲突,提高并发性。表级锁则更大粒度,易于管理,但可能导致更大的锁定范围。共享锁(S)、排它锁(X)、行级共享锁(RS)、行级排它锁(RX)和共享行级...