SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;
-------------------------------------------------------------------------------------------------------------------------------------
1.查哪个过程被锁
查V$DB_OBJECT_CACHE视图:
SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='过程的所属用户' AND LOCKS!='0';
2. 查是哪一个SID,通过SID可知道是哪个SESSION.
查V$ACCESS视图:
SELECT * FROM V$ACCESS WHERE OWNER='过程的所属用户' AND NAME='刚才查到的过程名';
3. 查出SID和SERIAL#
查V$SESSION视图:
SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID'
查V$PROCESS视图:
SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR';
4. 杀进程
(1).先杀ORACLE进程:
ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';
(2).再杀操作系统进程:
KILL -9 刚才查出的SPID
或
ORAKILL 刚才查出的SID 刚才查出的SPID
方法二:
经常在oracle的使用过程中碰到这个问题,所以也总结了一点解决方法:)
1)查找死锁的进程:
sqlplus "/as sysdba"
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;
2)kill掉这个死锁的进程:
alter system kill session ‘sid,serial#’; (其中sid=l.session_id)
3)如果还不能解决,
select pro.spid from v$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr;
其中sid用死锁的sid替换。
exit
ps -ef|grep spid
其中spid是这个进程的进程号,kill掉这个Oracle进程。
分享到:
相关推荐
在Oracle数据库管理中,处理死锁进程和释放状态为killed的session是一项关键技能,尤其对于维护数据库性能和稳定性至关重要。以下将详细阐述如何通过一系列步骤有效地关闭Oracle死锁进程,以及如何释放状态为killed...
### Oracle查找及解决死锁的方法 在Oracle数据库的日常管理和维护过程中,死锁是一个常见的问题。当两个或多个会话互相等待对方释放资源时就会发生死锁,这会导致相关事务无法继续执行,甚至可能会影响到整个数据库...
Oracle 死锁是指在数据库中出现的循环等待资源的情形,从而导致数据库性能下降或系统崩溃。出现死锁的原因有多种,如资源竞争、锁定机制不当等。下面是排查 Oracle 死锁问题的语句: 1. 等待 Session 排查语句: ...
### Oracle中关于死锁的处理 #### 死锁概述 在Oracle数据库中,死锁是一种常见但必须妥善处理的问题。当两个或多个事务互相等待对方释放资源时就会发生死锁。这种情况下,没有一个事务能够继续执行,直到系统采取...
在Oracle数据库系统中,死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象。当这种情况发生时,如果没有外部干预,这些事务将无法继续执行,因为它们都在等待对方释放资源。本篇将详细介绍...
在 Oracle 中,死锁是指两个或多个会话在等待对方释放资源,从而导致互相阻塞的情况。死锁可能会导致数据库性能下降,甚至崩溃。因此,解决死锁问题是非常重要的。 解决 Oracle 杀死死锁进程的步骤: 1. 查找被...
查找死锁中的会话信息 要解决Oracle死锁问题,首先需要定位到具体的会话信息。这可以通过查询`v$session`视图来实现。以下是一段示例SQL语句,用于查找可能涉及死锁的会话: ```sql SELECT username, lockwait,...
在Oracle数据库中,当两个或多个事务在等待对方释放锁定资源时会发生死锁。这种情况下,所有事务都将被阻塞,无法继续执行,直到其中一个事务回滚或者系统采取措施解决。 #### 二、死锁检测与处理 ##### 2.1 死锁...
#### 二、Oracle用户死锁原因查找 ##### 1. 查询密码错误次数 首先,我们需要确定Oracle用户的密码错误次数是否达到了系统设定的阈值。这可以通过以下SQL语句实现: ```sql SELECT * FROM dba_profiles WHERE ...
本文将详细介绍在Oracle数据库中出现死锁时,如何查找并终止导致问题的进程。 #### 1. 识别死锁 首先,我们需要确定确实发生了死锁。可以通过查询`v$locked_object`视图来查看锁定的对象和相关的会话信息: ```...
在数据库系统中,特别是在Oracle这样的大型关系型数据库管理系统中,死锁是常见的问题之一。当两个或多个事务互相等待对方释放资源时,就会发生死锁。这种情况下,所有涉及的事务都将处于无限等待状态,从而导致应用...
Oracle数据库在运行过程中,由于多个事务间的资源竞争,可能会出现死锁现象,导致某些事务无法继续执行。"Oracle死锁查杀PB版"是专为解决这类问题而设计的工具,它提供了便捷的方法来检测和解除数据库中的死锁。本文...
在数据库管理领域,死锁是常见且棘手的问题,特别是在大型企业级应用中,如Oracle数据库。死锁是指两个或多个事务在等待对方释放资源,从而导致事务无法继续执行的状态。处理Oracle数据库中的死锁问题是一项关键的...
Oracle数据库中的死锁是数据库操作中常见的问题,它发生在两个或多个事务相互等待对方释放资源,从而导致事务无法继续执行的情况。死锁不仅影响数据库性能,还可能导致数据一致性问题。本篇文章将详细介绍如何检测和...
例如,在上述的死锁案例中,当两个session分别对不同的表进行删除操作并形成死锁时,Oracle会选择其中一个事务进行回滚,释放资源,使其他事务可以继续执行。 为了避免死锁,数据库管理员和开发人员应该遵循一些...
了解如何识别和解决Oracle中的查询死锁对于维护数据库性能至关重要。 #### 二、Oracle死锁原理 Oracle通过多种机制管理并发访问和数据一致性,其中包括锁和事务隔离级别。当两个或多个并发事务请求锁定相同资源的...
在Oracle数据库中,死锁监控主要依赖于"v$session_wait"和"v$lock"视图。"v$session_wait"显示当前会话的等待事件,而"v$lock"则提供了锁的详细信息。通过这两个视图的联合查询,可以定位到死锁的具体情况。 MySQL...
Oracle数据库死锁是数据库系统中常见的问题,它发生在两个或多个事务之间,彼此持有对方需要的资源,导致它们无法继续执行。死锁不仅影响数据库性能,还可能导致数据一致性问题。以下是对Oracle数据库死锁处理步骤的...
Oracle数据库在操作过程中,有时会遇到ORA-00031错误,这个错误提示是“会话标记为kill(session marked for kill)”。这通常发生在使用ALTER SYSTEM KILL SESSION命令企图终止某个会话时,但由于会话正在执行无法...
在Unix上,这通常涉及到查找并终止与Oracle会话关联的进程,而在Windows中,`orakill`能直接根据会话的SID和线程号进行操作。 总结来说,当Oracle会话被死锁困扰时,应先通过查询找出问题会话,然后尝试使用`ALTER ...