Oracle查找被长时间锁定的对象并kill

Posted 异想天开

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle查找被长时间锁定的对象并kill相关的知识,希望对你有一定的参考价值。

1、用如下语句查找被锁住的表名、OSclient、Session信息

SELECT B.SID 
       ,B.SERIAL# 
       ,D.SPID        OS系统进行号 
       ,C.OBJECT_NAME 被锁住的对像名 
       ,B.USERNAME    登录用户 
       ,B.SCHEMANAME  被锁对像模式 
       ,B.STATUS      SESSION状态 
       ,B.MACHINE     SESSION客户端主机 
       ,B.OSUSER 
       ,B.TERMINAL 
       ,B.PROGRAM     SESSION登录程序 
       ,B.WAIT_CLASS 
   FROM V$LOCKED_OBJECT A 
  INNER JOIN V$SESSION B 
     ON A.SESSION_ID = B.SID 
  INNER JOIN ALL_OBJECTS C 
     ON A.OBJECT_ID = C.OBJECT_ID 
  INNER JOIN V$PROCESS D 
     ON B.PADDR = D.ADDR;

2、 杀死对应的session

ALTER SYSTEM KILL SESSION ‘SID,SERIAL#‘;
ALTER SYSTEM KILL SESSION ‘531,16007‘;

3、 杀死对应的OS进程

kill -9 spid;
其中spid为第一步中查出来的系统进程号

以上是关于Oracle查找被长时间锁定的对象并kill的主要内容,如果未能解决你的问题,请参考以下文章

查看Oracle中存储过程长时间被卡住的原因

微服务环境下如何不长时间锁定资源进行写操作?

oracle 锁表、解锁的语句

拆分 MS Access 数据库需要很长时间才能打开 - 后端不断锁定和解锁

OWB 映射挂起或花费太长时间 - 可能锁定?

结果集需要很长时间来处理来自 Oracle 的大数据