oracle 杀锁表进程 的几种方法

oracle 杀锁表进程 的几种方法

1首先要查看被锁的信息。

查询语句为select * from v$locked_object;

可以查到以下字段可以查看到一些锁表者的操作信息 

SESSION_ID :我们需要在v$session表中查看的 sid 值

ORACLE_USERNAME :锁表者使用的oracle账号  

OS_USER_NAME:锁表这操作系统的用户名称

2、通过上面三点我们可以锁定到部分锁表者。

如果无法确定可以再查看select * from v$session t where sid = '572'这里的sid就是我们上面v$locked_object表中查到的SESSION_ID 可以查到很多相关字段,我们只查看我们需要处理事务的几个字段

sid ,SERIAL# 这两个字段是用来杀进程的字段。

PROGRAM 可以查看到使用者使用的工具

PREV_HASH_VALUE可以通过这个字段在查看出哪个sql语句执行的锁表

3、通过select * from v$sql where hash_value =‘PREV_HASH_VALUE’可以查看到相关锁表语句。

4、确定可以去掉的不影响其他业务的语句可以杀掉的话可以执行

ALTER system KILL session '2281,27935';这里的这两个数字分别是sid ,SERIAL# 。

5、正常情况下到这一步就可以完成相关解锁的操作,如果提示无法操作可以查看

select pro.spid from v$session ses,v$process pro where ses.sid=1335 and ses.paddr=pro.addr; 

这里sid就是上面1的 SESSION_ID 。

查出 spid 后再在linux中查看 相关进程

ps -ef|grep  spid

sid是上面的sid然后可以杀掉这个进程

KILL -9 '刚才查出的SPID'


你可能感兴趣的:(oracle)