oracle查看与杀掉锁表的进程

使用oracle数据库的过程中有可能会因为某些操作导致锁表,一旦发生了锁表的情况程序就无法正常使用了,因此要学会如何查看与杀掉锁表的进程。

查看锁表进程:

select sess.sid,
       sess.serial#,
       lo.oracle_username,
       lo.os_user_name,
       ao.object_name,
       lo.locked_mode
from v$locked_object lo,
     dba_objects ao,
     v$session sess
where ao.object_id = lo.object_id
  and lo.session_id = sess.sid;

或者:

select *
from v$session t1,
     v$locked_object t2
where t1.sid = t2.session_id;

杀掉锁表进程:

如果能查询出来记录,说明有锁表,这时候需要记录下sid和serial#,用于解除锁表(即杀掉锁表进程)。

alter system kill session sid, serial#;

要是杀掉了锁表进程之后并没有解决程序异常问题,可能是因为oracle有自己的进程管理策略,在很多情况下杀进程往往不能即时生效,这时候可以在语句末尾加上【immediately】再试试。

alter system kill session sid, serial# immediately;

如果这样还不行的话,终极解决办法大概就是杀掉进程后重启程序服务了。

因为锁表导致的程序异常问题能通过杀掉锁表进程的方式解决,但还是应该找到锁表的原因,从根源上解决避免问题产生。

 

"目的是应达到的效果(结果),目标是要达到效果的量化指标。"

oracle查看与杀掉锁表的进程

上一篇:阿里云RDS for SQL Serrver关于权限的一个严重Bug


下一篇:Oracle 启停