查看并解除Oracle锁

当某个数据库用户在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,

常常会出现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‘;

时间: 2024-08-14 01:07:46

查看并解除Oracle锁的相关文章

SqlServer 查看被锁的表和解除被锁的表

查看被锁的表 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_type='OBJECT' 解除被锁的表 declare @spid int Set @spid = 74 --锁表进程 declare @sql varchar(1000) set @sql='kill '+cast(@spid as va

【锁】Oracle锁系列

[锁]Oracle锁系列 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 锁的概念.分类.及其模拟 ② 查询锁的视图及视图之间的关联 ③ 锁的参数(DML_LOCKS.DDL_LOCK_TIMEOUT) ④ FOR UPDATE及FOR UPDATE OF系列 ⑤ 带ONLINE和不带ONLINE创建索引的锁情况(是否阻塞DML操作) ⑥ 包或存过不能编译的解决方法

【Oracle】Oracle解锁、Oracle锁表处理

1.查看哪些对象被锁 select s.username, decode(l.type, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL, o.owner, o.object_name, o.object_type, s.sid, s.serial#, s.terminal, s.machine, s.program, s.osuser from v$session s, v$lock l, dba_objects o where s

oracle锁等级以及解锁

以下是两遍关于锁的介绍的文章,第一篇介绍锁等级以及常用操作,第二篇主要介绍了oracle中两个用以查询数据库任意对象的两个视图 一: http://www.cnblogs.com/lguyss/archive/2009/12/17/1626700.html ORACLE里锁有以下几种模式: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁,sub share  3:Row-X 行独占(RX):用于行的修改,sub exclusive  4:Share 共享锁(S):阻止其

Oracle锁表故障处理一例

一次开发人员直接在数据库服务器上做delete table操作系统,由时在上班高峰运行,造成长时间执行无反应,进而把SQLPLUS客户端关闭掉,再次运行删除语句,造成数据库运行缓慢.   询问操作过程知道了是由锁表造成,最终处理:本文只是模拟锁表处理过程,下次遇到相同问题可以快速处理. 1. 查看数据库的等待事件 如果不清楚原因,可以通过先通过等待事件进行分析. SQL> select sid,EVENT from v$session_wait where wait_class<>'Id

Oracle锁表查询和解锁方法

数据库操作语句的分类 DDL:数据库模式定义语言,关键字:create DML:数据操纵语言,关键字:Insert.delete.update DCL:数据库控制语言 ,关键字:grant.remove DQL:数据库查询语言,关键字:select oracle表在什么情况下会被锁住 DML锁又可以分为,行锁.表锁.死锁 行锁:当事务执行数据库插入.更新.删除操作时,该事务自动获得操作表中操作行的排它锁. 表级锁:当事务获得行锁后,此事务也将自动获得该行的表锁(共享锁),以防止其它事务进行DDL

查询Oracle锁表和解决方法

Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?本文我们主要就介绍一下这部分内容.(1)锁表查询的代码有以下的形式:select count(*) from v$locked_object;select * from v$locked_object;(2)查看哪个表被锁select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_obj

Oracle锁总结

<oracle的锁> 在数据库中必须要了解的几点: 1.事务是数据库的核心,他们是好东西 2.应该延迟到适当的时刻才提交.不要太快提交,以避免对系统带来压力,这是因为,即使事务很长或很大,也一般不会对系统造成压力.相应的原则是:    在必要时才提交,不要提前.事务的大小只应该根据业务逻辑来定. 3.只要需要,就应该尽可能长时间的保持对数据所加的锁.这些锁是你能用的工具,而不是让你退避三舍,锁并不是什么稀有资源,恰恰相反,只要需要,    你就应该长期的保持数据上的锁.锁并不稀少,而且他们可以

oracle 锁的介绍 (转)

本文转自:http://blog.csdn.net/gyb2013/article/details/6929697 一.什么是锁: Oracle的锁机制是一种轻量级的锁定机制,不是通过构建锁列表来进行数据的锁定管理,而是直接将锁作为数据块的属性,存储在数据块首部.这个是通过ITL来实现的,一个事务要修改块中的数据,必须获得该块中的一个itl.关于itl(事务槽)的介绍可参考http://blog.csdn.net/gybyylx/article/details/6893639. 说明:在orac