`
niceo
  • 浏览: 107245 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

oracle如何解除死锁[进程互相锁死]

阅读更多
oracle如何解除死锁[进程互相锁死]
data directory:v$session,v$lock
1  rem 查询目前正在等待锁资源的用户
select a.username,a.sid,a.serial#,b.id1 from v$session a, v$lock b
where a.lockwait=b.kaddr

USERNAME                              SID    SERIAL#        ID1
------------------------------ ---------- ---------- ----------
TEST                                  143         27     196632

2  rem 查询锁住其它用户进程
select a.username,a.sid,a.serial#,b.id1 from v$session a,v$lock b
where b.id1 in
(select distinct e.id1
from v$session d,v$lock e
where d.lockwait=e.kaddr)
and a.sid=b.sid
and b.request=0;

USERNAME                              SID    SERIAL#        ID1
------------------------------ ---------- ---------- ----------
TEST                                  159          5     196632

3  上述两次查询说明ID1同为196632的会话中 ‘159,5’锁住了会话‘143,27’。
rem 强制将锁进程解开:alter system kill session 'SID,SERIAL#'
alter system kill session '159,5';

将锁进程解开后,会要求用户执行commit或rollback命令,使事物终结。

附:模拟死锁产生
1 rem 测试表数据t2内容如下:
select * from t2;
ID
----------
1
2
3
2 seesion 1:
rem 更新第一条数据
update t2 set id='11' where id='1';
session 2
rem 更新第二条数据
update t2 set id='22' where id='2';
3 session 1
rem 更新第二条数据
update t2 set id='22' where id='2';
session 1
rem 更新第一条数据
update t2 set id='11' where id='1';

第2、3步做完后,将会产生死锁。
采取上述解锁的方法,可解除死锁。
参考:《oracle9i数据库管理员使用大全》
分享到:
评论

相关推荐

    oracle如何解除死锁

    oracle如何解除死锁[进程互相锁死]

    如何解决Oracle杀死死锁进程

    本文介绍了解决Oracle杀死死锁进程的方法。

    杀死oracle死锁进程

    解决Oracle数据库死锁问题,查询出数据库所有死锁,并杀死所有的死锁,解决程序运行问题;

    oracle查询死锁语句

    oracle查询死锁语句,并能根据根据ID值杀死锁表的进程!

    Oracle删除死锁进程的方法

    主要介绍了Oracle删除死锁进程的方法,涉及查找被锁表及删除对应进程的技巧,需要的朋友可以参考下

    Oracle锁表处理,Oracle表解锁

    此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。Oracle对于“死锁”采取的策略是回滚其中一个事务,让另外一个事务顺利进行。 对于锁死的会话,我们可以直接删掉该会话,等事物...

    orcal解锁杀死死锁进程

    orcal解锁杀死死锁进程导出表中的数据到Excel,包含字段名,文件为真正的Excel文件 ,如果文件不存在,将自动创建文件 ,如果表不存在,将自动创建表 基于通用性考虑,仅支持导出标准数据类型

    Oracle 查询死锁并解锁的终极处理方法

    本文主要介绍Oracle中如何查询死锁,并杀死这条进程解锁的方法,希望能帮到大家。

    oracle杀死锁,寻PIDKILL进程

    oracle杀死锁 ,在批量导入数据的时候,在数据库中很容易就碰到锁表了,导致长时间数据库卡死,此脚本方便找寻数据库被锁对象,如果在oracle中不能alter kill掉 说明该session已过期需要进入后台去杀掉进程

    疯狂JAVA讲义

    第1章 Java概述 1 1.1 Java语言的发展简史 2 1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 ...学生提问:当我们使用编译C程序时,不仅需要指定存放...

    超级有影响力霸气的Java面试题大全文档

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    java 面试题 总结

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

Global site tag (gtag.js) - Google Analytics