oracle表被锁(delete或update一直处于执行状态)的处理办法。

 1 --首先查看有哪些锁
 2 select /*+ rule */ s.username,
 3       decode(l.type,‘TM‘,‘TABLE LOCK‘,‘TX‘,‘ROW LOCK‘,null) lock_level,
 4       o.owner,
 5       o.object_name,
 6       o.object_type,
 7       s.sid,s.serial#,
 8       s.terminal,
 9       s.machine,
10       s.program,
11       s.osuser
12 from v$session s,v$lock l,dba_objects o
13 where l.sid = s.sid
14 and l.id1 = o.object_id(+)
15 and s.username is not null
16
17 --如果发生了锁等待,看是谁锁了表而引起谁的等待
18 --以下的语句可以查询到谁锁了表,而谁在等待。 如果有子节点,则表示有等待发生
19 select /*+ rule */ lpad(‘ ‘,decode(l.xidusn ,0,3,0))||l.oracle_username user_name,
20        o.owner,
21        o.object_name,
22        o.object_type,
23        s.sid,
24        s.serial#
25 from v$locked_object l,dba_objects o,v$session s
26 where l.object_id=o.object_id
27 and l.session_id=s.sid
28 order by o.object_id,xidusn desc
29
30
31 --找到引起等待的session,杀掉该session:
32 alter system kill session ‘sid,serial#‘;

http://bbs.csdn.net/topics/370025735

时间: 2024-10-13 11:57:30

oracle表被锁(delete或update一直处于执行状态)的处理办法。的相关文章

Oracle表被锁

-以下几个为相关表SELECT * FROM v$lock;SELECT * FROM v$sqlarea;SELECT * FROM v$session;SELECT * FROM v$process ;SELECT * FROM v$locked_object;SELECT * FROM all_objects;SELECT * FROM v$session_wait; --查看被锁的表select b.owner,b.object_name,a.session_id,a.locked_mo

InnoDB事务锁之行锁-delete的update阶段加锁流程图

原文地址:http://blog.51cto.com/yanzongshuai/2068577

Oracle锁表 行级锁 表级锁 行级锁

Oracle锁表  行级锁  表级锁 ---- 行被排他锁定 ----在某行的锁被释放之前,其他用户不能修改此行          ----使用 commit 或 rollback 命令释放锁 ----Oracle 通过使用 INSERT.UPDATE 和 SELECT-FOR UPDATE 语句自动获取行级锁 SELECT-FOR UPDATE 子句  ―在表的一行或多行上放置排他锁  ―用于防止其他用户更新该行 ―可以执行除更新之外的其他操作 ―select * from goods whe

Oracle 增删改(INSERT、DELETE、UPDATE)语句

?  简介 本文介绍 Oracle 中的增删改语句,即 INSERT.DELETE.UPDATE 语句的使用.是时候展现真正的技术了,快上车: 1.   插入数据(INSERT) 2.   修改数据(UPDATE) 3.   删除数据(DELETE) 4.   注意事项 1.   插入数据(INSERT) u  语法: INSERT INTO TABLE_NAME [(column1[, column2-]] VALUES(value1[, value2-]); 说明: 1)   INSERT

Oracle查询被锁的表及进程的方法

Oracle查询可以有多种方法,下面为您介绍的是如何Oracle查询被锁的表及Oracle查询连接的进程的方法,希望对您能够有所帮助. 一.查看被锁的表 select p.spid,a.serial#, c.object_name,b.session_id,b.oracle_username,b.os_user_name from v$process p,v$session a, v$locked_object b,all_objects c where p.addr=a.paddr and a

oracle的行级锁与表级锁

1.在操作DML(create,insert,update)语句时,oracle会自动加上行级锁,在select * from table for update [of column][nowait|wait 3]时,oracle也会自动加锁 建议(1)一般在for update 时加nowait,这样就不用等待其他事务执行了,一判断有事务,立马抛出错误. 建议(2)一般的of column都是在多表操作的时候,能锁定其中一个表的某些列,如果还是同一张表的话,并不能锁定某些列 2.表级锁 表级锁

Oracle 、MySql 数据库表被锁的原因分析

记录一次准备给客户预演示出现的问题 事故的背景: 当所以功能开发完成后,开发人员在本地进行了测视已经没问题了.就把所有开发的功能模块合并到 dev 分支,进行打包,发布到预演示的线上环境.当在给相关人员进行演示的时候,出现了问题. 我们使用 https 调用对方的接口发送 Json 数据,对方进行校验马上返回校验的响应结果.问题出现在我们每次发送数据都是成功的,但是对方发送回来的数据,一直不能正常插入 DB(使用的是 Oracle). 事故的真正原因: 因为有个同事在进行了 delete 后没有

查询结果一直处于查询状态,表被锁。

执行一条查询语句,结果一直显示的是查询状态,没有出来结果.原来是在执行的一个存储过程里加了事务,但是这个执行存储过程出了错.于是想到,肯定是这个表被锁住了. 接下来就好办了. select   request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName from   sys.dm_tran_locks where resource_type='OBJECT' spid   锁表进程 tableNam

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,db