ORACLE查询数据库的锁表情况

时间:2021-12-16 05:14:37

 

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

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