oracle死锁处理方法

招数一:
   1. 查看被锁的表:

2.   select  
p.spid,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.process=b.process   and  
c.object_id=b.object_id

3.

4.   解锁:

5.   alter   system     kill   session   ‘146‘;(其中146为锁住的进程号)

招数二:

1. SELECT   sn.username, m.SID,sn.SERIAL#, m.TYPE,

2.          DECODE (m.lmode,

3.                  0, ‘None‘,

4.                  1, ‘Null‘,

5.                  2, ‘Row Share‘,

6.                  3, ‘Row Excl.‘,

7.                  4, ‘Share‘,

8.                  5, ‘S/Row Excl.‘,

9.                  6, ‘Exclusive‘,

10.                  lmode, LTRIM (TO_CHAR (lmode, ‘990‘))

11.                 ) lmode,

12.          DECODE (m.request,

13.                  0, ‘None‘,

14.                  1, ‘Null‘,

15.                  2, ‘Row Share‘,

16.                  3, ‘Row Excl.‘,

17.                  4, ‘Share‘,

18.                  5, ‘S/Row Excl.‘,

19.                  6, ‘Exclusive‘,

20.                  request, LTRIM (TO_CHAR (m.request, ‘990‘))

21.                 ) request,

22.          m.id1, m.id2

23.     FROM v$session sn, v$lock m

24.    WHERE (sn.SID = m.SID AND m.request != 0)         --存在锁请求,即被阻塞

25.       OR (    sn.SID = m.SID                         --不存在锁请求,但是锁定的对象被其他会话请求锁定

26.           AND m.request = 0

27.           AND lmode != 4

28.           AND (id1, id2) IN (

29.                         SELECT s.id1, s.id2

30.                           FROM v$lock s

31.                          WHERE request != 0 AND s.id1 = m.id1

32.                                AND s.id2 = m.id2)

33.          )

34. ORDER BY id1, id2, m.request;

35.

36. alter system kill session ‘91‘;

37. alter system kill session ‘144,633‘;

38. alter system kill session ‘91,21‘;

39. alter system kill session ‘112,5772‘;

2010年3月15日 20:44

时间: 2024-10-10 01:09:59

oracle死锁处理方法的相关文章

oracle死锁解决方法

select SESS.sid, SESS.SERIAL#, LO.ORACLE_USERNAME, LO.OS_USER_NAME,      AO.OBJECT_NAME, LO.LOCKED_MODEfrom V$LOCKED_OBJECT LO, DBA_OBJECTs AO, V$SESSION SESSwhere AO.OBJECT_ID = LO.OBJECT_IDand lo.session_id = sess.sid; alter system kill session '13

Oracle死锁

1.什么是死锁 在程序运行过程中,只有一个进程在运行,其他进程都在等待状态,并且点击进程的确定和保存按钮,程序无反应,但是也不报错,之中现象称作死锁. 2.Oracle死锁原理 操作Oracle数据库一个sql语句在执行对某个表增删改查操作时,一直处于执行状态,且没有结果返回,其他对该表操作的语句一直处于等待状态,也没有报错信息 3.死锁产生原因 A.存在竞争资源.系统存在共享资源不足以满足进程的需要时,就会引起进程之间竞争资源产生死锁现象.生活例子---很多人拥挤在地铁门口等待上车,地铁门一开

教您如何检查oracle死锁,决解死锁

oracle死锁问题一直困扰着我们,下面就教您一个oracle死锁的检查方法,如果您之前遇到过oracle死锁方面的问题,不妨一看…… oracle死锁问题一直困扰着我们,下面就教您一个oracle死锁的检查方法,如果您之前遇到过oracle死锁方面的问题,不妨一看. 一.数据库死锁的现象 程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错. 二.oracle死锁的原理 当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提交,另一条对于这一列数据做更新操作的语句

死锁及oracle死锁--转载

今天看群里在讨论数据库死锁的问题,也一起研究了下,查了些资料在这里总结下. 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程. 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁. 关于数据库死锁的检查方法 一.数据库死锁的现象 程序在执行的过程中,点击确定

死锁产生的原因和必要条件及预防死锁的方法及死锁的检测与解除

产生死锁的原因和必要条件: 产生死锁的原因: 1.竞争资源.当系统中供多个进程共享的资源如打印机,公用队列等,其数目不足以满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁. 2.进程推进顺序非法.进程在运行过程中,请求和释放资源的顺序不当,也同样会导致产生进程死锁. 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁.其次,进程运行推进顺序与速度不同,也可能产生死锁. 产生死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个

SQLServer查看和解决死锁的方法

在master数据库中新建以下存储过程 --处理死锁-- 查看当前进程,或死锁进程,并能自动杀掉死进程-- 因为是针对死的,所以如果有死锁进程,只能查看死锁进程-- 当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程--调用示例 exec p_lockinfo create proc [dbo].[p_lockinfo]@kill_lock_spid bit=1, --是否杀掉死锁的进程,1 杀掉, 0 仅显示@show_spid_if_nolock bit=1 --如果没有死锁的进程,

从服务器将Oracle数据库导出到本地Oracle数据库的方法

原文:从服务器将Oracle数据库导出到本地Oracle数据库的方法 1.将服务器上的Oracle数据库导入到本地 在CMD模式下执行以下命令:   exp username1/[email protected]服务器端数据库 file=本地硬盘:/文件名.dmp   例如: exp admin/[email protected] file=e:db.dmp 2.建立本地数据库(默认已经安装Oracle客户端并且建立了本地数据库) 3.创建一个新用户,并赋予DBA权限 //创建一个用户名为tes

sqlserver2008 死锁解决方法及性能优化方法

sqlserver2008 死锁解决方法及性能优化方法 原文: http://blog.csdn.net/kuui_chiu/article/details/48621939 十步优化SQL Server中的数据访问 http://tech.it168.com/a2009/1125/814/000000814758_2.shtml 关于死锁: [sql] view plain copy sp_who active  --看看哪个引起的死锁, blk里面即阻塞的spid: dbcc inputbu

解决Oracle死锁问题,及产生的原因

文章来源:http://www.cnblogs.com/leijh/archive/2012/10/15/2724165.html 最近高度程序时老是发现应该执行操作数据库的代码时发现执行不了,查了一下发现是数据库表锁死的原因, ,纠其原因,发现有些同事操作数据库时老是喜欢用select * from XXX for update 去操作数据库,有的操作了又没有COMMIT 所以导致数据库锁死,笔都建议大家不用,如果要用for update 之后请你记得提交 解决死锁的方法 第一步:找到数据库中