ORACLE查询数据库的锁表情况

查询数据库的锁表情况语句如下:

SELECT p.spid,a.serial#, c.object_name,b.session_id,b.oracle_username,b.os_user_name
     FROM v$process p,v$session a, v$locked_object b,all_objects c
    WHERE p.addr=a.paddr 
      AND a.process=b.process 
      AND c.object_id=b.object_id

如果表因为某些情况出现死锁,可以使用ORACLE管理员权限账户登录到数据库,根据上面查出来的 session_id和serial#列的值,Kill指定会话,释放锁,语句如下:

ALTER SYSTEM KILL SESSION 'sid, serial#'

有些情况下,仍无法释放表,此时可以考虑从操作系统(以Linux系统为例)角度,根据上面查出来的spid进程号,将对应进程Kill掉,语句如下:

Kill -9 SPID
原文地址:https://www.cnblogs.com/jsllgjk/p/3826079.html