`
niceo
  • 浏览: 109751 次
  • 性别: 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死锁进程,和释放状态为killed的session

    以下将详细阐述如何通过一系列步骤有效地关闭Oracle死锁进程,以及如何释放状态为killed的session。 ### 一、识别死锁进程 #### 查找被锁定的过程 首先,我们需要确定哪些进程正处于死锁状态。这可以通过查询`V$...

    杀死oracle死锁进程

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

    oracle查询死锁语句

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

    Oracle删除死锁进程的方法

    **步骤2:杀死死锁进程** 一旦识别出死锁的进程,你可以通过`ALTER SYSTEM KILL SESSION`命令来结束死锁的会话,从而解除死锁。例如,如果之前查询得到的"删除号"是"286, 2184",则执行以下SQL语句: ```sql ALTER...

    较实用的ORACLE数据库死锁查杀

    ### ORACLE数据库死锁查杀方法详解 #### 一、引言 在Oracle数据库系统中,当两个或多个事务在等待对方释放资源时,就会出现死锁现象。死锁不仅会降低系统的整体性能,还可能导致某些重要事务长时间无法完成,严重...

    oracle查找死锁

    #### 一、Oracle死锁的查找方法 ##### 1. 使用V$DB_OBJECT_CACHE视图 可以通过查询V$DB_OBJECT_CACHE视图来获取有关锁定对象的信息,进而发现可能存在的死锁情况。具体的SQL语句如下: ```sql SELECT * FROM V$DB...

    Oracle锁表处理,Oracle表解锁

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

    Oracle 死锁问题的排查语句

    Oracle 死锁问题的排查语句 Oracle 死锁是指在数据库中出现的循环等待资源的情形,从而导致数据库性能下降或系统崩溃。出现死锁的原因有多种,如资源竞争、锁定机制不当等。下面是排查 Oracle 死锁问题的语句: 1....

    查看oracle进程,杀进程pb源程序

    本文将深入探讨如何使用PB(PowerBuilder)源程序来查看Oracle进程并进行必要的操作,如杀死进程。 首先,我们要了解Oracle进程的概念。在Oracle数据库中,进程主要分为用户进程和服务器进程。用户进程是由数据库...

    oracle死锁故障分析和诊断解决

    ### Oracle死锁故障分析与诊断解决 在数据库管理与维护过程中,遇到死锁问题是非常常见的。Oracle数据库作为一款广泛使用的数据库管理系统,在实际应用中难免会遇到各种各样的问题,其中死锁是较为常见的一种。本文...

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

    Oracle数据库在运行过程中可能会遇到死锁问题,这是由于多个事务互相等待对方释放资源而造成的一种僵局。死锁不仅影响数据库的正常运行,也可能导致数据一致性的问题。本文将详细介绍如何在Oracle中查询死锁,以及...

    oracle解决死锁![参考].pdf

    以下是一些解决Oracle死锁的方法: 首先,定位死锁发生的进程是非常重要的。通过查询`V$DB_OBJECT_CACHE`视图可以找出被锁住的对象,然后通过`V$ACCESS`视图进一步获取被锁定的进程信息,如所属用户、过程名。接着...

    ORcle解死锁

    ### 一、Oracle死锁查询 当怀疑Oracle数据库中存在死锁时,可以使用以下SQL查询来检查哪些会话处于锁定状态: ```sql SELECT s.username, l.object_id, l.session_id, s.serial#, l.oracle_username, l.os_...

    orcal解锁杀死死锁进程

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

    oracle杀死锁,寻PIDKILL进程

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

    ORACLE如何杀掉带锁的进程.txt

    本文将详细介绍如何在Oracle环境下识别并杀死带有锁定状态的进程。 #### 一、查询锁定对象的进程 首先,我们需要通过查询来找到当前系统中处于锁定状态的对象及其关联的会话信息。这一步骤非常重要,因为只有准确...

Global site tag (gtag.js) - Google Analytics